Travailler avec une base de données via Flash et PHP22/01/2004
Par
Stephane Eyskens (Autres articles)
Cet article va vous montrer comment faire interagir Flash et PHP en vous proposant un exemple concret. Je remercie Anomaly pour ses corrections apportées à ce tuto.
1. Introduction
2. Création de la base de données MYSQL
2.1. Phpmyadmin
2.2. Formulaire Flash
2.3. Code du formulaire Flash à placer dans la frame où se trouve le formulaire.
2.4. Scripts PHP
3. Comment utiliser correctement l'application
Dans cet article, nous vous expliquerons comment créer un espace membre dans une animation Flash. Les données de cet espace membre seront enregistrées dans une base de données MYSQL.
Vous devez bien entendu avoir préalablement installé php et mysql sur votre machine.
L'animation consistera en :
- Un formulaire Flash très animé permettant de se connecter
- Une communication Flash->PHP->MYSQL permettant de rechercher le membre dans la base de données
- La création de nouveaux membres en utilisant la méthode de cryptage MD5 pour les mots de passe
- Un contrôle d'erreur accru avec affichage des erreurs de manière animée
2. Création de la base de données MYSQL
Via PhpMyadmin, créez une base de donnée nommée "flashphp" et copier/coller le code suivant afin de créer votre table.
#
# Structure de la table `users`
#
CREATE TABLE `users` (
`username` varchar(25) NOT NULL default '',
`userpwd` varchar(25) NOT NULL default '',
PRIMARY KEY (`username`)
) TYPE=MyISAM;
Votre base de données est maintenant prête à être utilisée via flash et PHP.
Voici le formulaire Flash, le formulaire est composé de deux champs de saisie, d'une case à cocher indiquant si on procède à un enregistrement ou à une authentification et d'un bouton permettant
de valider la saisie pour vérifier si le couple login/mot de passe est correct.
Note: cette animation étant une démo, si vous la testez, elle ne se connectera évidement pas à la base de données puisque nous n'avons pas créé de base de données dédiée à cette animation.
Vous devrez donc simplement télécharger le fichier zip. Reportez-vous à la rubrique "Comment utiliser l'application"
2.3. Code du formulaire Flash à placer dans la frame où se trouve le formulaire.
stop();
_root.prevloc=null;
monitor.onEnterFrame=function(){
var loc=Selection.getFocus();
if(loc == null){
userarea.gotoAndStop(1);
passarea.gotoAndStop(1);
pwdtext.gotoAndStop(1);
usertext.gotoAndStop(1);
}
if(loc == "_level0.user" and loc != _root.prevloc){
if(_root.ErrorContainer != undefined){
_root.ErrorContainer.removeMovieClip();
}
usertext.gotoAndPlay("2");
pwdtext.gotoAndStop(1);
userarea.play();
passarea.gotoAndStop(1);
}
if(loc == "_level0.password" and loc != _root.prevloc){
if(_root.ErrorContainer != undefined){
_root.ErrorContainer.removeMovieClip();
}
usertext.gotoAndStop(1);
pwdtext.gotoAndPlay("2");
userarea.gotoAndStop(1);
passarea.play();
}
_root.prevloc=loc;
}
valider.onPress=function(){
if(userpass.length < =5){
var PhpObject= new LoadVars();
PhpObject.username=_root.username;
PhpObject.userpass=_root.userpass;
PhpObject.onLoad=function(success){
if(success){
if(this.error != undefined){
ShowError(this.error);
}
else{
_root.gotoAndPlay(2);
}
}
else{
ShowError("Erreur durant le chargement");
}
}
if(firstvisit.checked){
PhpObject.new_user=1;
}
PhpObject.sendAndLoad("http://localhost/flashphp.php",PhpObject,"POST");
}
else{
ShowError("Le mot de passe doit faire moins de 6 car.");
}
}
function ShowError(errmsg){
if(_root.ErrorContainer != undefined){
_root.ErrorContainer.removeMovieClip();
}
_root.createEmptyMovieClip("ErrorContainer",2);
_root.ErrorContainer._x=10;
_root.ErrorContainer._y=90;
_root.ErrorContainer.attachMovie("errormsgMC","ErrorLetter0",10);
_root.ErrorContainer.errorletter0.letterMC.letter.text=errmsg.charAt(0);
_root.ErrorContainer.errorletter0._x=0;
_root.ErrorContainer.errorletter0._y=0;
for(i=1;i < errmsg.length;i++){
_root.ErrorContainer.ErrorLetter0.duplicateMovieClip("ErrorLetter"+i,10+i);
_root.ErrorContainer["ErrorLetter"+i].letterMC.letter.text=errmsg.charAt(i);
_root.ErrorContainer["ErrorLetter"+i]._x=(Xpos+(int(i)*8));
_root.ErrorContainer["ErrorLetter"+i]._y=0;
}
}
Voici le code des scripts PHP. Ils vont vérifier si le login entré dans Flash existe dans la base Mysql.
Si la case à cocher du formulaire flash a été cochée, le script PHP va ajouter le membre dans la base de données.
Code du fichier "db_config.php"
<?
$conn=mysql_connect('hote','user','pwd') or die("&error=".mysql_error()."&");
mysql_select_db('flashphp',$conn) or die("&error=".mysql_error()."&");
?>
Et voici le code du fichier php principal:
<?
include "dbconfig.php";
if(!empty($_POST['new_user'])){
mysql_query("insert into users(username,userpwd) values('".$_POST['username']."','".md5($_POST['userpass'])."')")
or die("&error=".mysql_error()."&");
exit;
}
if(!empty($_POST['username']) && !empty($_POST['userpass'])){
$res=mysql_query("select username from users where username='".$_POST['username']."' and userpwd='".md5($_POST['userpass'])."'")
or die("&error=".mysql_error()."&");
if(mysql_num_rows($res)!=1){
echo "&error=User/pwd invalide& ";
}
}
else{
echo "&error=Vous devez fournir le user et le pwd&";
}
?>
Notez qu'à chaque étape, un contrôle d'erreur est effectué. En cas d'erreur la variable "error" est retournée à Flash.
Donc, quand Flash reprend la main, si la variable "error" n'existe pas, il sait que tout s'est bien passé. Sinon, il affiche l'erreur
et ne permet pas à la personne de passer à la 2ème frame.
Vous aurez aussi constaté que pour retourner une variable vers flash, il faut la retourner sous ce format:
&lavariable="lavaleur"&
3. Comment utiliser correctement l'application
- Télécharger le fichier zip et dézippez-le sur votre machine.
- Editez le fichier db_config.php et mettez-y vos propres paramètres de connexion.
- Dans l'animation Flash, changez cette ligne de code
PhpObject.sendAndLoad("http:/stephaneey.developpez.com/flashphp/flashphp.php",PhpObject,"POST");
Et remplacez-là par
PhpObject.sendAndLoad("votre_url/flashphp.php",PhpObject,"POST");
Voilà, vous pouvez utiliser l'application.
Cet article est la propriété de www.developpez.com en tant qu'hebergeur ainsi que
celle de Stephaneey en tant que redacteur, ce texte est donc protégé par le code de la
propriété intellectuelle et est soumis à la réglementation en vigueur.
www.developpez.com ou son auteur se reserve le droit d'apporter des modifications
sans préavis. Vous pouvez utiliser cet article comme bon vous semble, faire un lien depuis
votre site Web, ou le copier en spécifiant l'auteur et la provenance (www.developpez.com)
Le non respect de cette règle equivaudrait à faire une contrefaçon. La responsabilité de
www.developpez.com, de l'un de ses membres, ou de la direction ne pourra etre engagé en cas
de destruction partielle ou totale des données ou de l'architecture système ou logicielle
inhérente à l'utilisation des ses logiciels. Les logiciels decrits ici sont la propriété de
leurs auteurs respectifs.
|