Page soumise par Firetox - [Note : 9.00 (8 votes) | Noter ça !]
PHP4WD
Dernière version
Télécharger la dernière version : Projet exmple 5.0.0.5
Les scripts de transfert sont dans le projet a la racine
Compatibilité : SQLManagerX / SQLEdit
Introduction
[5.0.0.5]
mise a jour des scripts pour eviter les messages d'erreur et warning sur les versions php5
[5.0.0.4]
Modification pour SQLite Sqlite_fetch_row est remplace par sqlite_fetch_array. en php5 fetch_row n'existe plus
[5.0.0.3]: mise a jour pour acceder a firebird depuis php4wd. pour l'instant ni les procedures stockées, ni les blob sont actif dans la classe. mais les requetes et SQLManagerX fonctionnent tres bien avec cette version. testée sur apache, php5, FireBird 1.5
[5.0.0.2] : mise a jours des scripts. avec certaines configuration de php il pouvait être renvoyé un warning sur les requetes SQL update, delete et autres requetes ne revoyant pas de résultat. le nouveau script php4wd.php regle ce probleme.
Ce projet permet un accès à aux bases de données SQL sur des sites déportés au travers d'une couche php. Il est composé d'une fenêtre de test, d'une classe et de 3 scripts php.
ATTTENTION les scripts et la classe doivent avoir tous le meme numero de version. Si ce n'est pas le cas contactez nous un lien ne doit pas etre a jour.
POUR LA CONNEXION VOUS DEVEZ SPECIFIER LA BASE :
mySQLConnecte("www.SQLManagerX.com/php4wd.php","","","maBase")
Exemple Appel de procedure sous oracle :
i est un entier
v_res est une chaîne
// procedure avec 1 parametre en entree et 3 en sortie
CONVSQL:mysqlCloseBind()
CONVSQL:MySQLDefBind(1,"TESTPIN",CONVSQL:PS_VARIN,CONVSQL:PS_TYPEINTEGER,20)
CONVSQL:MySQLDefBind(2,"TESTCHA",CONVSQL:PS_VAROUT,CONVSQL:PS_TYPECHAINE)
CONVSQL:MySQLDefBind(3,"TESTINT",CONVSQL:PS_VAROUT,CONVSQL:PS_TYPEINTEGER)
CONVSQL:MySQLDefBind(4,"TESTDAT",CONVSQL:PS_VAROUT,CONVSQL:PS_TYPECHAINE)
CONVSQL:MySQLDefBind(5,"TESTDBL",CONVSQL:PS_VAROUT,CONVSQL:PS_TYPEDOUBLE)
SI CONVSQL:MySQLExec("TESTPS(:TESTPIN,:TESTCHA,:TESTINT,:TESTDAT,:TESTDBL)",1) ALORS
// recuperation des parametres envoyés
POUR i=2 A 5
CONVSQL:mySQLGetBind(i,v_res)
Trace(v_res)
FIN
// recuperation du recordSet renvoyé par la procedure si il y en a un
CONVSQL:mySQLPremier(1)
TANTQUE PAS CONVSQL:mySQLendehors
Trace(CONVSQL:MySQLLitLigne(1))
CONVSQL:mySQLSuivant(1)
FIN
FIN
CONVSQL:mysqlferme(1)
CONVSQL:mysqlCloseBind()
Exemple d'appel d'une procedue sous SQLServer :
v_reponse est une chaîne
i est un entier
CONVSQL:MySQLCloseBind()
//premier parametre :@IN1
CONVSQL:mySQLDefBind(1,"@sval",CONVSQL:PS_VARINOUT,CONVSQL:PS_TYPECHAINE,"Franck")
// deuxieme parametre : en entree / sortieentier
CONVSQL:mySQLDefBind(2,"@intval",CONVSQL:PS_VARINOUT,CONVSQL:PS_TYPEINTEGER,50)
// troisiem eparametre en entee sortie maischaine
CONVSQL:mySQLDefBind(3,"@floatval",CONVSQL:PS_VARINOUT,CONVSQL:PS_TYPEDOUBLE,2.1416)
v_req est une chaîne
v_req += "TestPSSQLServer"
IF(CONVSQL:MySQLExecPS(v_req,1)) THEN
// recuperation des parametres envoyés
CONVSQL:mySQLGetBind(1,v_reponse)
Trace(v_reponse)
CONVSQL:mySQLGetBind(2,v_reponse)
Trace(v_reponse)
CONVSQL:mySQLGetBind(3,v_reponse)
Trace(v_reponse)
// recuperation du recordSet renvoyé par la procedure si il y en a un
CONVSQL:mySQLPremier(1)
TANTQUE PAS CONVSQL:mySQLendehors
Trace(CONVSQL:MySQLLitLigne(1))
CONVSQL:mySQLSuivant(1)
FIN
ELSE
Erreur(CONVSQL:mySQLGetErrorMessage())
END
CONVSQL:MySQLCloseBind()
CONVSQL:mySQLFerme(1)
Ce projet est maintenu par Frédéric Emprin.
Principe
Le fonctionnement est assez simple. Il reprend le principe de l'accès natif mySQL puisque depuis windev, la classe possède les même méthodes. La classe envoie les requêtes cryptées par une clé publique et privée au script php se trouvant sur le site web permettant l'accès a la base MySQL. Le script exécute la requête et récupère le résultat et le transmet au programme windev par http. La classe du programme windev lit le résultat et le conserve en mémoire (ce que font les dll des accès natif). Ensuite la classe Php4Wd gère ce résultat. la cle public est celle qui sert pour l'élaboration de la cle privée, qui permet le cryptage et le décryptage. les requetes sont envoyé cryptée et le resultat envoyé par le script PHP egalement. Ne transitent sur le reseau que des chaines cryptees permettant ainsi une securite maximum sur les données envoyées et recues. les cles n'etant pas envoyées sur le reseau il est impossible de decrypter les chaines tansitant entre le programme windev et les script php.
Pré-requis : Il y a une constante dans la classe K_PUBLIC_KEY que vous pouvez modifier : attention il y a la même public key dans les 2 scripts.
Méthode pour intégrer PHP4WD à votre projet :
- Ouvrir le fichier connect.php et changez les infos de connexions
- Mettre les 2 fichiers sur votre site internet (penser à éditer le php4wd.php si vous changer le chemin du fichier connect - dans un répertoire privé par exemple
- Intégrer la classe php4WD dans votre projet, elle se présente comme un acces natif et a les mêmes méthodes
Info : la méthode connect attend une adresse URL ex: convSQL:mySQLConnecte(" http://www.monsite.com/php4wd.php ") c'est l'adresse du script php
Compléments
L’utilité de PHP4WD n’est plus à démontrer dans le cadre d’accès aux bases de données sur les sites Internet pour lesquels les bases sont accessibles uniquement à partir du site WEB.
La puissance de PHP4WD est décuplée dans le cadre d’utilisation d’application sur une architecture type WEB.
Couche Client |
Couche Transport http |
Serveur WEB/BASE |
|
| ||
Les avantages de PHP4WD sont multiples :
· Accès à la base géré au niveau du serveur HTTP/PHP (connexion, déconnexion en fonction de l’activité…).
· Sécurisation des données par l’utilisation du protocole HTTPS.
· Fonctionnement des applications en mode Wifi/Bluetooth.
· Fonctionnement des applications sur le réseau Internet ou Intranet.
· Accès indépendant de la base.
· WinDevMobile peut profiter du même accès que WinDev pour accéder à toutes les bases sur le serveur.
Utiliser PHP4WD
c’est faire du client riche sur une architecture WEB
Tout en conservant ses habitudes de programmation sur WinDev.
Page soumise par Firetox - [Note : 9.00 (8 votes) | Noter ça !]















