FLASHMX2004 CLASS SQL (MYSQL & ACCESS) V5.5 (AVEC PHP)
SuperDevy
Messages postés842Date d'inscriptiondimanche 24 novembre 2002StatutMembreDernière intervention 2 juillet 2007
-
5 juin 2004 à 08:29
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 2011
-
30 déc. 2007 à 13:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 30 déc. 2007 à 13:08
j'avoue qu'elle soit completement ouverte c'est pas top, mais pour ma défence à l'epoque ou je l'ai faite, il n'y avait qu'un décompileur qui fonctionné, et perso je re-encodais mes swf avec swfencode (ce qui rendez la décompilation impossible)...
mais il est clair que c'est surtout les info de connexion à la db dans le swf qui crainent, now moi je les met plus dans le swf mais juste dans php (que lui on peu pas recup)...
pour finir pas de prob de delete ou autre alter sur mes tables parce que j'ai tjs plusieur user sur mes base de données, dont 1 pour flash qui fait que la lecture...
voilou voilou
++
gfpl
Messages postés172Date d'inscriptionsamedi 11 août 2012StatutMembreDernière intervention 9 avril 2011 28 déc. 2007 à 18:05
SuperDevy c'est a titre de demo pour montrer comment faire une requete entre flash sql php
tu peut prendre ces info depuis php ;)
SuperDevy
Messages postés842Date d'inscriptiondimanche 24 novembre 2002StatutMembreDernière intervention 2 juillet 2007 28 déc. 2007 à 17:32
C'est du suicide cette source !
1. Login/mdp de la base de données sont accessibles par n'importe qui (une simple décompilation et hop)
2. Elle permet de faire n'importe quelle requête par n'importe qui. "DELETE FROM xxx" par exemple ...
Faut vraiment être fou pour l'utiliser sur un site internet.
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 28 déc. 2007 à 16:51
ouaip voilà, plutot que de faire la fete je vais rester et préparer ca... puis quoi encore LOL
proffial
Messages postés35Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention23 juillet 2009 28 déc. 2007 à 14:56
;-) ca tombe bien, je paris que tu ne savais pas quoi faire de ton premier janvier ;-)
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 28 déc. 2007 à 10:54
LOL merci bien, mais si tu regardes de plus près cette source date de 2004, et est en AS2 (héritage au balbusiment dans flash).
Et now en AS3, c'est tout autre chose, peux être que je mettrais un jour ma classe sql AS3...
++
_benjy
proffial
Messages postés35Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention23 juillet 2009 28 déc. 2007 à 01:00
Bonjour,
bravo pour le script,
Cependant, y'as des trucs qui me choquent dans ton exemple.
Moi personnellement, je ferais la chose suivante :
Création d'une classe mere : Connect_SQL
avec les infos suivante
# sql.type = "odbc"; // mysql ou odbc.
# sql.host = "localhost"; // uniquement pour mysql
# sql.login = "root";
# sql.mdp = "";
....
avec potentiellement les fonctions suivante
# sql.listeDB(); // lister les base du server mysql uniquement
# sql.listeTables(); // lister les tables d'un db
....
Ensuite je réaliserait une classe fille sql_order
qui hérite tout de la classe mere,
Comme çà on a pas a tout redefinir a chaque fois que l'on créé un Ordre SQL
et je definierais les fonctions suivante pour la classe sql_order
# order > l'ordre SQL
# error > pour la gestion de l'erreur
# rowCount > nb resultats
# columnCount > nb colonnes
# columnNames > tableau contenant les entetes du resultat
# columnTypes > renvois un tableau des types de champ de la base
# getRow(numRow)
# getCells(numRow,columnNames)
Voir le top du top créer a nouveau une classe Row
avec en parent la classe Order
sql_order.order =('SELECT id,name,champ4 from tatable');
for $i = 0 to sql_order.rowCount
{
echo sql_order.getrow($i).getcolumname('champ4');
}
voir un
for &i = 0 to sql_order.rowCount
{
for &j = 0 to sql_order.columnCount
echo sql_order.getrow(&i).getcolumnum(&j);
}
Si t'arrives a faire ca, ta source sera le top du top, et risque d'être très utilisée.
ajoucadou
Messages postés4Date d'inscriptiondimanche 8 avril 2007StatutMembreDernière intervention15 octobre 2008 2 déc. 2007 à 00:36
Ce script a l'air bien, mais j'ai aussi l'erreur "indéfini"... et je suis en version php > 4.2
Quelqu'un aurait il le fichier sql.php mis à jour ?
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 2 sept. 2007 à 20:45
10/10 !
gfpl
Messages postés172Date d'inscriptionsamedi 11 août 2012StatutMembreDernière intervention 9 avril 2011 1 nov. 2006 à 11:58
super source vraimment rien a dire
ke cherchias justement ca un grand merci pour ca et le boulot que ca t as demander
perso parfois j ai le probleme pour la recuperation de variable et le seul truc qui passe c est loadVariablesNum("/index.php?page=login&username="+(username)+...
sinon ca passe pas
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 22 mars 2006 à 22:08
j'utilise plus cette class depuis des plombes en fait, je m'en suis fait un composant (trouvable là : http://composants.kolapsis.net) pour php c du php 4 mais bon en mm temps c juste l'utilisation de mysql_... existant aussi sous 1.8
pour récup les var je sais que sur certain serveur (selon la config) faut mettre
extract($HTTP_POST_VARS);
pour recup les données envoyer au script
++
13wxcvbn
Messages postés8Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention20 mars 2006 20 mars 2006 à 16:58
Si t a dispo alors profitons en ....toujours le pb de "indefinie" apparament j'ai pas le niveau...moi je veux rester avec PHP 1.8 donc g voulu faire comme t'as dit avec le POST mais j'y arrive pas plus...ou encore g tenté de passer $typebase, $sqldbname, $sqlpass, et $sqlloginb en dur mais marche pas non plus....
As tu un eclaircissement a me fournir c serait
cool????
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 28 janv. 2006 à 16:10
l'uilisation en est pourtant simple, comme l'uilisation d'un objet son
bon c sur faut quelque notions d'AS2 (de prog objet surtout), mais sinon c pas tres compliqué (a utiliser pas forcement a refaire LOL)
je reste a dispo pour les questions d'utilisation
++
(ps : en mp, si ca vaut pas le coup pour tt le monde)
la_ptite_85
Messages postés49Date d'inscriptiondimanche 27 juin 2004StatutMembreDernière intervention 2 juillet 2006 27 janv. 2006 à 22:08
J'essaye de m'en servir...mais c'était peut-être un peu ambitieux de mettre cette source en niveau débutant!!! pasque moi je débute, et je pige pas grand chose lol
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 10 oct. 2005 à 19:47
LOL mais nan ss rancunes, juste ca me fait rire ... :)
ombr0
Messages postés21Date d'inscriptionsamedi 30 avril 2005StatutMembreDernière intervention 6 décembre 2008 10 oct. 2005 à 19:41
Je suis désoler d'avoir copier cette source lol j'ai créer une version plus simple , qui est déstiné a ce qui veulent aprendre :P sans rancunes ???
vincseize
Messages postés113Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention28 mars 2010 9 juil. 2005 à 02:29
WAZAAAAAA ca marche ...
effectivement il faut que la version d apache soit inferieur à 4.2.0,
donc j ai reinstaller un easyphp 1.6
bravo benjy ...
a voir si j arrive à modifier le php , pour qu il recupere TOUTES les variables en POST à moins que t ai déja prévu une version pour apache > 4.2
thx je met 10/10
PS: préciseras que c'est pour une version anterieur à php 4.2 dans l entête? tu te ramasseras plus de 10/10 encore
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 8 juil. 2005 à 15:09
a noté que c'est pour une version PHP 4.2.0
si tu est en version supp il faut modifier le sql.php pour qu'il récup bien les variables en POST envoyé par Flash
$variable ne marche pas en PHP > à 4.2.0
il faut $POST["variable"]
ou mettre un script qui met en global les vars de POST
++
_benjy
vincseize
Messages postés113Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention28 mars 2010 8 juil. 2005 à 15:02
excuses moi, effectivement je ne devrais pas dire que cela ne marche pas, mais plutot que je n arrive pas à le configurer ...
j avais déja essayé justement sans le slash, et c'était pareil ...
- je suis bien en MX2004
- je ne fais aucun import d as au moment de la compilation
- mon serveur apache est à jour ...
je vais voir du côté du gateaway.php , bien vérifier qu il a les droits en chmod 777 déja ...
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 8 juil. 2005 à 14:19
Nan mais fo regarder avant de dire que ca marche pas
dans ton copier collé de malade là haut t'as ecrit :
new Sql("http://localhost/RD/mysql/flashkod_classMysql/sql.php/");
tu crois vraiment que le / a la fin il gene pas ????
les erreur indefini c'est kan la class ne trouve pas le gateway généralement
et la avec le slashe a la fin, cherche pas plus loin !!!
vincseize
Messages postés113Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention28 mars 2010 8 juil. 2005 à 14:11
excuse , effectivement c est un peu brute de ma part !
en fait c'est comme fonetiklilian au dessus qui a eu le meme probleme que moi apperement :
ca me fait 'indefini' comme reponse à chaque fois ...
je te file mon msn si tu le souhaites !
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 8 juil. 2005 à 12:11
ohlalala, t'es pas un peu fous de tt copier comme ca ...
c koi le prob plutot que dire que ca marche pas, dis où, quand et comment ...
moi elle marche partout cette class ...
vincseize
Messages postés113Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention28 mars 2010 8 juil. 2005 à 01:29
pareil ca marche pas .... hum
faut il preciser l import des as à l exportation du flash !?
thx pour la reponse ....
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// tout d'abord les données de connexion
sql.type = "mysql"; // mysql ou odbc.
sql.host = "localhost"; // uniquement pour mysql
sql.login = "root";
sql.mdp = "";
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ensuite la base de donnée a selectionner
sql.dbname = "nymky"; //mysql test
//sql.dbname = "FlashSqlODBC"; //odbc test
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ou lister les bases de données du serveur mySql.
function listerlesbase(){
sql.onResult = function(dbs){
if (dbs.isError()){
Resultats.text = dbs.getError();
return;
}
// voici les resultats retourné dans un objet ResultSet
// nom du champ renvoyé : 'database'
Resultats.text = "Liste des base de données du serveur :";
for (var i=0; i<dbs.rowCount; i++){
Resultats.text += "\n\t"+dbs.getRow(i).database;
}
}
sql.listeDB();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Vous pouvez lister les tables de la base en cours, ou d'une autre en la spécifiant comme argument.
function listerlestables(){
sql.onResult = function(tables){
if (tables.isError()){
Resultats.text = tables.getError();
return;
}
// voici le liste des tables de la base en cours ou spésifié;
// attention cette commande change la base en cours.
// nom du champ renvoyé : 'table'
Resultats.text = "Liste des tables : ";
for (var i=0; i<tables.rowCount; i++){
Resultats.text += "\n\t"+tables.getRow(i).table;
}
}
sql.listeTables();
//sql.listeTables(db);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// executer toute requete sql.
function requetesql(qry){
sql.onResult = function(rs){
if (rs.isError()){
Resultats.text = rs.getError();
return;
}
if (rs.rowCount == 0){
Resultats.text = "Aucun resultat";
} else if (rs.rowCount > 0){
Resultats.text = "Données chargés";
Resultats.text += "\nRésultat de votre requête : ";
for (var i=0; i<rs.rowCount; i++){
Resultats.text += "\n\tRS "+(i+1);
for (var j=0; j<rs.columnNames.length; j++){
Resultats.text += "\n\t\t"+rs.columnNames[j]+" : "+rs.getRow(i)[rs.columnNames[j]];
}
}
} else if (rs.success == true){
Resultats.text = "Requête éxécuté avec succes !";
}
}
sql.execute(qry);
}
listerlesbase_btn.onRelease = listerlesbase;
listerlestables_btn.onRelease = listerlestables;
requetesql_btn.onRelease = function(){
requetesql("select * from table1");
}
insertsql_btn.onRelease = function(){
if (sql.type == "mysql"){
var q = "insert into table1 set login='";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "'";
} else {
var q = "insert into table1 (login) values ('";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "')";
}
requetesql(q);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// optionnellement definisé une fonction pour l'activité du serveur.
sql.onActivity = function(etat){
trace ("activité : "+etat);
}
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 7 juil. 2005 à 15:01
merci Blackwizzard :)
_benjy
vincseize
Messages postés113Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention28 mars 2010 7 juil. 2005 à 14:54
Un bravo de Blackwizzard , ca c est la classe !!!!
cs_lemage77
Messages postés1Date d'inscriptionvendredi 20 février 2004StatutMembreDernière intervention20 janvier 2011 24 juin 2005 à 11:26
j'ai installé wamp5 pour tester en local et je fais quoi je suis newbie la dedans comment je peux tester cela etbesoin d'aide pour faire fonctionner
help me
lemage
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 15 avril 2005 à 11:22
alors 2 solutions pour les données sencibles
1 - soit tu crypt ton swf avec SWFCrypt (je crois que ct ca le nom) qui encode tt le swf (marche tjs aussi bien mais indecompilable) mais fo acheté un licence en plus c pas top
2 - tu met les info de connexion a la DB en dur ds la php (sql.php) et voilacth (vo bidouillé ma class pour enlevé les var de connexion dans se cas)
++
_benjy
top30
Messages postés1158Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention 6 août 2010 14 avril 2005 à 19:58
Y a comme un problème...
C est qu'avec un décompileur, on récupère toutes les infos nécessaire pour un piratage en bon et du forme de tes bases de données. Et oui, le nom de la base et son login sont dans le SWF !!!
Il faut que tu ajouts une classe.
Une classe SQL appelle un "SQLconnection", qui elle ira chercher via un PHP, si l'utlisateur peut se connecter ou non. Le log retournant juste un "true" ou "false", et de cette réponse du lance ta requete ( ou non ) ...
Toi tu fais : SWF > PHP > SQL > PHP > SWF
Il faut que tu fasse :
SWF > PHP [VERIFICATION DES DONNEES] > SWF puis si ok, SWF > PHP > SQL > PHP > SWF
Suis je claire ? En tout cas la mienne fonctionne comme ceci...
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 14 avril 2005 à 15:03
ben vu que c un copier collé de mon code ca marche (chez moi et chez tt les autre il marche,
le seul truc c que je vois de diff c ton espace dans le chemin du php au tt debut
tu sais que sur le nt on evite les espace dans les nom de fichier ou dossier kan mm ?
essais de changer ca ... car sinon je vois pas tt parait nikel
++
fonetiklilian
Messages postés32Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention 9 mars 2008 14 avril 2005 à 10:19
Merci c'est sympa...
// Importer les class
import Class.Sql;
Resultats.border = true;
// créer un nouvel objet Sql
var sql:Sql = new Sql("http://127.0.0.1/flash/connection/class sql/sql.php"); // ou en chemin relatif bien sur Sql("sql.php");
sql.showtime = true;
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// tout d'abord les données de connexion
sql.type = "mysql"; // mysql ou odbc.
sql.host = "localhost"; // uniquement pour mysql
sql.login = "root";
sql.mdp = "";
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ensuite la base de donnée a selectionner
sql.dbname = "fanou"; //mysql test
//sql.dbname = "FlashSqlODBC"; //odbc test
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ou lister les bases de données du serveur mySql.
function listerlesbase(){
sql.onResult = function(dbs){
if (dbs.isError()){
Resultats.text = dbs.getError();
return;
trace ("jfjsldkjflsdkfj");
}
// voici les resultats retourné dans un objet ResultSet
// nom du champ renvoyé : 'database'
Resultats.text = "Liste des base de données du serveur :";
for (var i=0; i<dbs.rowCount; i++){
Resultats.text += "\n\t"+dbs.getRow(i).database;
}
}
sql.listeDB();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Vous pouvez lister les tables de la base en cours, ou d'une autre en la spécifiant comme argument.
function listerlestables(){
sql.onResult = function(tables){
if (tables.isError()){
Resultats.text = tables.getError();
return;
}
// voici le liste des tables de la base en cours ou spésifié;
// attention cette commande change la base en cours.
// nom du champ renvoyé : 'table'
Resultats.text = "Liste des tables : ";
for (var i=0; i<tables.rowCount; i++){
Resultats.text += "\n\t"+tables.getRow(i).table;
}
}
sql.listeTables();
//sql.listeTables(db);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// executer toute requete sql.
function requetesql(qry){
sql.onResult = function(rs){
if (rs.isError()){
Resultats.text = rs.getError();
return;
}
if (rs.rowCount == 0){
Resultats.text = "Aucun resultat";
} else if (rs.rowCount > 0){
Resultats.text = "Données chargés";
Resultats.text += "\nRésultat de votre requête : ";
for (var i=0; i<rs.rowCount; i++){
Resultats.text += "\n\tRS "+(i+1);
for (var j=0; j<rs.columnNames.length; j++){
Resultats.text += "\n\t\t"+rs.columnNames[j]+" : "+rs.getRow(i)[rs.columnNames[j]];
}
}
} else if (rs.success == true){
Resultats.text = "Requête éxécuté avec succes !";
}
}
sql.execute(qry);
}
listerlesbase_btn.onRelease = listerlesbase;
listerlestables_btn.onRelease = listerlestables;
requetesql_btn.onRelease = function(){
requetesql("select * from table1");
}
insertsql_btn.onRelease = function(){
if (sql.type == "mysql"){
var q = "insert into table1 set login='";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "'";
} else {
var q = "insert into table1 (login) values ('";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "')";
}
requetesql(q);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// optionnellement definisé une fonction pour l'activité du serveur.
sql.onActivity = function(etat){
trace ("activité : "+etat);
}
Voili voilo
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 13 avril 2005 à 11:33
Ben j'sais pas
genre t'es sur de bien appelé le script php ?
var sql:Sql = new Sql("http://localhost/repertoire/sql.php") // mettre localhost pour fonctionnement direct depuis flash, sinon flash lis le fichier php en local et forcement ca marche pas
mais sinon j'ai retelechargé ma sources, elle fonctionne, c forcement toi qui t'es planté par là
met ton code au complet que je puisse voir
++
_benjy
fonetiklilian
Messages postés32Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention 9 mars 2008 13 avril 2005 à 08:58
Bonjour,
Pour ma part... Aucune des actions ne fonctionne... J'ai toujour "indéfini" dans la zone de texte... Pourtant mes parametres sont ok pour moi avec easyPhp:
sql.type = "mysql"; // mysql ou odbc.
sql.host = "localhost"; // uniquement pour mysql
sql.login = "root";
sql.mdp = "";
djawel
Messages postés49Date d'inscriptionlundi 1 juillet 2002StatutMembreDernière intervention11 janvier 2006 6 juin 2004 à 15:20
bô boulot
LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009 6 juin 2004 à 14:43
Bon, bah vous m'avez convaincu, tous, là. Je me lance dans l'ActionScript 2.0. Merci !
top30
Messages postés1158Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention 6 août 2010 5 juin 2004 à 14:35
C'est super bon.. Ton approche est quasi la même que la mienne. Toi tu balance le query totale ment "Stringé" et retourne un tableau... C'est une bonne approche... La mienne tu construit le Query en flash genre...
maRequete = new Query (server) ;
maRequete.select ("variable");
maRequete.where ("ID, 0, 9);
maRequete.consult (dataBase);
Et ca me retourne un XML... Je te tire mon chapeau car moi des Class comme ca je prefere les garder pour moi (Egoiste ??? Ou la sensation de voir s'echapper un gros travail t appartenant???)...
J ai mis 9 ! Encore bravo !
SuperDevy
Messages postés842Date d'inscriptiondimanche 24 novembre 2002StatutMembreDernière intervention 2 juillet 2007 5 juin 2004 à 08:29
Géant ! Et si en plus ça marche, c'est du bonheur...
J'était avide d'une telle source, moi qui n'arrive pas à comprendre le fonctionnement de MySQL.
Malheureusement, je n'ai pas MX 2004 et je suppose que ça peut pas marcher avec MX ! ;-[
30 déc. 2007 à 13:08
mais il est clair que c'est surtout les info de connexion à la db dans le swf qui crainent, now moi je les met plus dans le swf mais juste dans php (que lui on peu pas recup)...
pour finir pas de prob de delete ou autre alter sur mes tables parce que j'ai tjs plusieur user sur mes base de données, dont 1 pour flash qui fait que la lecture...
voilou voilou
++
28 déc. 2007 à 18:05
tu peut prendre ces info depuis php ;)
28 déc. 2007 à 17:32
1. Login/mdp de la base de données sont accessibles par n'importe qui (une simple décompilation et hop)
2. Elle permet de faire n'importe quelle requête par n'importe qui. "DELETE FROM xxx" par exemple ...
Faut vraiment être fou pour l'utiliser sur un site internet.
28 déc. 2007 à 16:51
28 déc. 2007 à 14:56
28 déc. 2007 à 10:54
Et now en AS3, c'est tout autre chose, peux être que je mettrais un jour ma classe sql AS3...
++
_benjy
28 déc. 2007 à 01:00
bravo pour le script,
Cependant, y'as des trucs qui me choquent dans ton exemple.
Moi personnellement, je ferais la chose suivante :
Création d'une classe mere : Connect_SQL
avec les infos suivante
# sql.type = "odbc"; // mysql ou odbc.
# sql.host = "localhost"; // uniquement pour mysql
# sql.login = "root";
# sql.mdp = "";
....
avec potentiellement les fonctions suivante
# sql.listeDB(); // lister les base du server mysql uniquement
# sql.listeTables(); // lister les tables d'un db
....
Ensuite je réaliserait une classe fille sql_order
qui hérite tout de la classe mere,
Comme çà on a pas a tout redefinir a chaque fois que l'on créé un Ordre SQL
et je definierais les fonctions suivante pour la classe sql_order
# order > l'ordre SQL
# error > pour la gestion de l'erreur
# rowCount > nb resultats
# columnCount > nb colonnes
# columnNames > tableau contenant les entetes du resultat
# columnTypes > renvois un tableau des types de champ de la base
# getRow(numRow)
# getCells(numRow,columnNames)
Voir le top du top créer a nouveau une classe Row
avec en parent la classe Order
pour pouvoir faire un code dans le genre
var sql_order:Sql_order = new Sql("http://localhost/_FlashPhp/sql_order.php");
sql_order.order =('SELECT id,name,champ4 from tatable');
for $i = 0 to sql_order.rowCount
{
echo sql_order.getrow($i).getcolumname('champ4');
}
voir un
for &i = 0 to sql_order.rowCount
{
for &j = 0 to sql_order.columnCount
echo sql_order.getrow(&i).getcolumnum(&j);
}
Si t'arrives a faire ca, ta source sera le top du top, et risque d'être très utilisée.
2 déc. 2007 à 00:36
Quelqu'un aurait il le fichier sql.php mis à jour ?
2 sept. 2007 à 20:45
1 nov. 2006 à 11:58
ke cherchias justement ca un grand merci pour ca et le boulot que ca t as demander
perso parfois j ai le probleme pour la recuperation de variable et le seul truc qui passe c est loadVariablesNum("/index.php?page=login&username="+(username)+...
sinon ca passe pas
22 mars 2006 à 22:08
pour php c du php 4 mais bon en mm temps c juste l'utilisation de mysql_... existant aussi sous 1.8
pour récup les var je sais que sur certain serveur (selon la config) faut mettre
extract($HTTP_POST_VARS);
pour recup les données envoyer au script
++
20 mars 2006 à 16:58
As tu un eclaircissement a me fournir c serait
cool????
28 janv. 2006 à 16:10
bon c sur faut quelque notions d'AS2 (de prog objet surtout), mais sinon c pas tres compliqué (a utiliser pas forcement a refaire LOL)
je reste a dispo pour les questions d'utilisation
++
(ps : en mp, si ca vaut pas le coup pour tt le monde)
27 janv. 2006 à 22:08
10 oct. 2005 à 19:47
10 oct. 2005 à 19:41
9 juil. 2005 à 02:29
effectivement il faut que la version d apache soit inferieur à 4.2.0,
donc j ai reinstaller un easyphp 1.6
bravo benjy ...
a voir si j arrive à modifier le php , pour qu il recupere TOUTES les variables en POST à moins que t ai déja prévu une version pour apache > 4.2
thx je met 10/10
PS: préciseras que c'est pour une version anterieur à php 4.2 dans l entête? tu te ramasseras plus de 10/10 encore
8 juil. 2005 à 15:09
si tu est en version supp il faut modifier le sql.php pour qu'il récup bien les variables en POST envoyé par Flash
$variable ne marche pas en PHP > à 4.2.0
il faut $POST["variable"]
ou mettre un script qui met en global les vars de POST
++
_benjy
8 juil. 2005 à 15:02
en ce qui concerne
new Sql("http://localhost/RD/mysql/flashkod_classMysql/sql.php/");
j avais déja essayé justement sans le slash, et c'était pareil ...
- je suis bien en MX2004
- je ne fais aucun import d as au moment de la compilation
- mon serveur apache est à jour ...
je vais voir du côté du gateaway.php , bien vérifier qu il a les droits en chmod 777 déja ...
8 juil. 2005 à 14:19
dans ton copier collé de malade là haut t'as ecrit :
new Sql("http://localhost/RD/mysql/flashkod_classMysql/sql.php/");
tu crois vraiment que le / a la fin il gene pas ????
les erreur indefini c'est kan la class ne trouve pas le gateway généralement
et la avec le slashe a la fin, cherche pas plus loin !!!
8 juil. 2005 à 14:11
en fait c'est comme fonetiklilian au dessus qui a eu le meme probleme que moi apperement :
ca me fait 'indefini' comme reponse à chaque fois ...
je te file mon msn si tu le souhaites !
8 juil. 2005 à 12:11
c koi le prob plutot que dire que ca marche pas, dis où, quand et comment ...
moi elle marche partout cette class ...
8 juil. 2005 à 01:29
faut il preciser l import des as à l exportation du flash !?
thx pour la reponse ....
Le code :
// Importer les class
import Class.Sql;
Resultats.border = true;
// créer un nouvel objet Sql
var sql:Sql = new Sql("http://localhost/RD/mysql/flashkod_classMysql/sql.php/"); // ou en chemin relatif bien sur Sql("sql.php");
sql.showtime = true;
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// tout d'abord les données de connexion
sql.type = "mysql"; // mysql ou odbc.
sql.host = "localhost"; // uniquement pour mysql
sql.login = "root";
sql.mdp = "";
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ensuite la base de donnée a selectionner
sql.dbname = "nymky"; //mysql test
//sql.dbname = "FlashSqlODBC"; //odbc test
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ou lister les bases de données du serveur mySql.
function listerlesbase(){
sql.onResult = function(dbs){
if (dbs.isError()){
Resultats.text = dbs.getError();
return;
}
// voici les resultats retourné dans un objet ResultSet
// nom du champ renvoyé : 'database'
Resultats.text = "Liste des base de données du serveur :";
for (var i=0; i<dbs.rowCount; i++){
Resultats.text += "\n\t"+dbs.getRow(i).database;
}
}
sql.listeDB();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Vous pouvez lister les tables de la base en cours, ou d'une autre en la spécifiant comme argument.
function listerlestables(){
sql.onResult = function(tables){
if (tables.isError()){
Resultats.text = tables.getError();
return;
}
// voici le liste des tables de la base en cours ou spésifié;
// attention cette commande change la base en cours.
// nom du champ renvoyé : 'table'
Resultats.text = "Liste des tables : ";
for (var i=0; i<tables.rowCount; i++){
Resultats.text += "\n\t"+tables.getRow(i).table;
}
}
sql.listeTables();
//sql.listeTables(db);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// executer toute requete sql.
function requetesql(qry){
sql.onResult = function(rs){
if (rs.isError()){
Resultats.text = rs.getError();
return;
}
if (rs.rowCount == 0){
Resultats.text = "Aucun resultat";
} else if (rs.rowCount > 0){
Resultats.text = "Données chargés";
Resultats.text += "\nRésultat de votre requête : ";
for (var i=0; i<rs.rowCount; i++){
Resultats.text += "\n\tRS "+(i+1);
for (var j=0; j<rs.columnNames.length; j++){
Resultats.text += "\n\t\t"+rs.columnNames[j]+" : "+rs.getRow(i)[rs.columnNames[j]];
}
}
} else if (rs.success == true){
Resultats.text = "Requête éxécuté avec succes !";
}
}
sql.execute(qry);
}
listerlesbase_btn.onRelease = listerlesbase;
listerlestables_btn.onRelease = listerlestables;
requetesql_btn.onRelease = function(){
requetesql("select * from table1");
}
insertsql_btn.onRelease = function(){
if (sql.type == "mysql"){
var q = "insert into table1 set login='";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "'";
} else {
var q = "insert into table1 (login) values ('";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "')";
}
requetesql(q);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// optionnellement definisé une fonction pour l'activité du serveur.
sql.onActivity = function(etat){
trace ("activité : "+etat);
}
7 juil. 2005 à 15:01
_benjy
7 juil. 2005 à 14:54
24 juin 2005 à 11:26
help me
lemage
15 avril 2005 à 11:22
1 - soit tu crypt ton swf avec SWFCrypt (je crois que ct ca le nom) qui encode tt le swf (marche tjs aussi bien mais indecompilable) mais fo acheté un licence en plus c pas top
2 - tu met les info de connexion a la DB en dur ds la php (sql.php) et voilacth (vo bidouillé ma class pour enlevé les var de connexion dans se cas)
++
_benjy
14 avril 2005 à 19:58
C est qu'avec un décompileur, on récupère toutes les infos nécessaire pour un piratage en bon et du forme de tes bases de données. Et oui, le nom de la base et son login sont dans le SWF !!!
Il faut que tu ajouts une classe.
Une classe SQL appelle un "SQLconnection", qui elle ira chercher via un PHP, si l'utlisateur peut se connecter ou non. Le log retournant juste un "true" ou "false", et de cette réponse du lance ta requete ( ou non ) ...
Toi tu fais : SWF > PHP > SQL > PHP > SWF
Il faut que tu fasse :
SWF > PHP [VERIFICATION DES DONNEES] > SWF puis si ok, SWF > PHP > SQL > PHP > SWF
Suis je claire ? En tout cas la mienne fonctionne comme ceci...
14 avril 2005 à 15:03
le seul truc c que je vois de diff c ton espace dans le chemin du php au tt debut
tu sais que sur le nt on evite les espace dans les nom de fichier ou dossier kan mm ?
essais de changer ca ... car sinon je vois pas tt parait nikel
++
14 avril 2005 à 10:19
// Importer les class
import Class.Sql;
Resultats.border = true;
// créer un nouvel objet Sql
var sql:Sql = new Sql("http://127.0.0.1/flash/connection/class sql/sql.php"); // ou en chemin relatif bien sur Sql("sql.php");
sql.showtime = true;
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// tout d'abord les données de connexion
sql.type = "mysql"; // mysql ou odbc.
sql.host = "localhost"; // uniquement pour mysql
sql.login = "root";
sql.mdp = "";
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ensuite la base de donnée a selectionner
sql.dbname = "fanou"; //mysql test
//sql.dbname = "FlashSqlODBC"; //odbc test
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ou lister les bases de données du serveur mySql.
function listerlesbase(){
sql.onResult = function(dbs){
if (dbs.isError()){
Resultats.text = dbs.getError();
return;
trace ("jfjsldkjflsdkfj");
}
// voici les resultats retourné dans un objet ResultSet
// nom du champ renvoyé : 'database'
Resultats.text = "Liste des base de données du serveur :";
for (var i=0; i<dbs.rowCount; i++){
Resultats.text += "\n\t"+dbs.getRow(i).database;
}
}
sql.listeDB();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Vous pouvez lister les tables de la base en cours, ou d'une autre en la spécifiant comme argument.
function listerlestables(){
sql.onResult = function(tables){
if (tables.isError()){
Resultats.text = tables.getError();
return;
}
// voici le liste des tables de la base en cours ou spésifié;
// attention cette commande change la base en cours.
// nom du champ renvoyé : 'table'
Resultats.text = "Liste des tables : ";
for (var i=0; i<tables.rowCount; i++){
Resultats.text += "\n\t"+tables.getRow(i).table;
}
}
sql.listeTables();
//sql.listeTables(db);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// executer toute requete sql.
function requetesql(qry){
sql.onResult = function(rs){
if (rs.isError()){
Resultats.text = rs.getError();
return;
}
if (rs.rowCount == 0){
Resultats.text = "Aucun resultat";
} else if (rs.rowCount > 0){
Resultats.text = "Données chargés";
Resultats.text += "\nRésultat de votre requête : ";
for (var i=0; i<rs.rowCount; i++){
Resultats.text += "\n\tRS "+(i+1);
for (var j=0; j<rs.columnNames.length; j++){
Resultats.text += "\n\t\t"+rs.columnNames[j]+" : "+rs.getRow(i)[rs.columnNames[j]];
}
}
} else if (rs.success == true){
Resultats.text = "Requête éxécuté avec succes !";
}
}
sql.execute(qry);
}
listerlesbase_btn.onRelease = listerlesbase;
listerlestables_btn.onRelease = listerlestables;
requetesql_btn.onRelease = function(){
requetesql("select * from table1");
}
insertsql_btn.onRelease = function(){
if (sql.type == "mysql"){
var q = "insert into table1 set login='";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "'";
} else {
var q = "insert into table1 (login) values ('";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "')";
}
requetesql(q);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// optionnellement definisé une fonction pour l'activité du serveur.
sql.onActivity = function(etat){
trace ("activité : "+etat);
}
Voili voilo
13 avril 2005 à 11:33
genre t'es sur de bien appelé le script php ?
var sql:Sql = new Sql("http://localhost/repertoire/sql.php") // mettre localhost pour fonctionnement direct depuis flash, sinon flash lis le fichier php en local et forcement ca marche pas
mais sinon j'ai retelechargé ma sources, elle fonctionne, c forcement toi qui t'es planté par là
met ton code au complet que je puisse voir
++
_benjy
13 avril 2005 à 08:58
Pour ma part... Aucune des actions ne fonctionne... J'ai toujour "indéfini" dans la zone de texte... Pourtant mes parametres sont ok pour moi avec easyPhp:
sql.type = "mysql"; // mysql ou odbc.
sql.host = "localhost"; // uniquement pour mysql
sql.login = "root";
sql.mdp = "";
Quelqu'un a t'il une piste de recherche...
Merci et bonne journée
9 juin 2004 à 17:14
9 juin 2004 à 17:08
9/10
bienvenue sur le site ;)
6 juin 2004 à 15:20
6 juin 2004 à 14:43
5 juin 2004 à 14:35
maRequete = new Query (server) ;
maRequete.select ("variable");
maRequete.where ("ID, 0, 9);
maRequete.consult (dataBase);
Et ca me retourne un XML... Je te tire mon chapeau car moi des Class comme ca je prefere les garder pour moi (Egoiste ??? Ou la sensation de voir s'echapper un gros travail t appartenant???)...
J ai mis 9 ! Encore bravo !
5 juin 2004 à 08:29
J'était avide d'une telle source, moi qui n'arrive pas à comprendre le fonctionnement de MySQL.
Malheureusement, je n'ai pas MX 2004 et je suppose que ça peut pas marcher avec MX ! ;-[