Citation :Oui, j'utilise ça chaque fois depuis que tu me l'avais conseillé au débutTon code…
Je t'affiche le code entier donc, merci :
Page d'inscription :
<?php
/* ------------------BUT DU PROGRAMME -----------------------
Après des tests de validité des champs saisis, ce programme va vérifier dans la DB l'existence du pseudo et de l'email saisis.
1) S'il l'un des deux existe déjà en DB on redirige vers la page d'accueil en affichant un message disant que le champ existe déjà.
2) Si les deux champs n'existent pas déjà en DB, le visiteur est inscrit dans la DB puis est redirigé vers la page d'accueil en affichant un message disant qu'un mail d'activation lui a été envoyé.
*/
/* ----------------------VARIABLES--------------------------- */
$temps = 365*24*3600;
$errorMsg = array();
$loginOk = true;
/* ----------------------FONCTIONS--------------------------- */
// Renvoie TRUE si le mot est vulgaire sinon FALSE
function vulgaire($mot) {
//$tab=file("salmots",FILE_IGNORE_NEW_LINES);
$tab=array("pute","con");
if(in_array($mot,$tab))
{
return true;
}else
{
return false;
}
}
function testtaille($mot,$nbr)
{
$result=str_replace(" ","",$mot);
$long=strlen($result);
if( $long<$nbr ){return true;}else{return false;}
}
function validmail($email) {
/* Renvoie TRUE si L'email est valide
sinon renvoie FALSE
Code à compléter...
*/
return false; // Provisoire : juste pour test du code.
}
/* --------------------- Début du traitement ------------------ */
if ( isset($_POST['pseudo']) )
{
$pseudo = $_POST['pseudo'];
$pass= $_POST['pass'];
$email= $_POST["email"];
if( vulgaire($pseudo) ) {
$errorMsg[] = '* Votre pseudo est un mot interdit.<br/>';
$loginOk = false;
}
if( vulgaire($pass) ) {
$errorMsg[] = '* Votre mot de passe est un mot interdit.<br/>';
$loginOk = false;
}
if( validmail($email) ) {
$errorMsg[] = '* Merci d\'utiliser un email valide.<br/>';
$loginOk = false;
}
if( testtaille($pseudo,3) ) {
$errorMsg[] = '* Votre pseudo doit avoir plus de 3 lettres.<br/>';
$loginOk = false;
}
if ( testtaille($pass,3) ) {
$errorMsg[] = '* Votre mot de passe doit avoir plus de 3 lettres.<br/>';
$loginOk = false;
}
/* ----- ici le pseudo est ok, on se connecte pour tester son existence ------------- */
if($loginOk)
{
// On prépare la durée d'un cookie ($temps=un an).
// Données de connection.
$dbhost="localhost";
$dblogin="root";
$dbpassword="";
$dbname="kham";//le nom de ma base de données.
$table="joueurs";
// Connection au serveur Mysql.
$connecter=mysql_connect($dbhost,$dblogin,$dbpassword);
if (!$connecter)
{
echo "Probleme de connection au serveur. L'admin va vérifier ça :/ ";
}else
{
//............... Connection à la base de données ................
$okbase=mysql_selectdb($dbname);
//............ Si la base de donnée a un probleme on le dit............
if (!$okbase)
{
echo "Problème de connection à la base de données.";
}else
{
// Teste si le pseudo existe déjà dans la DB
$result = mysql_query("SELECT * FROM joueurs WHERE pseudo = '$pseudo'");
if(mysql_num_rows($result)!= 0)
{
$msg="Ce pseudo existe déjà !";
$existe=true; // existe déjà.
}else
{
// Teste si l'email saisi existe déjà dans la DB.
$result = mysql_query("SELECT * FROM joueurs WHERE email= '$email'");
if(mysql_num_rows($result) != 0)
{
$msg="Cet email existe déjà !";
$existe=true; // existe déjà.
}
}
// Si le pseudo OU l'email, existent déjà en DB alors...
if ($existe)
{
// Envoie du cookie
setcookie("message",$msg,time() + $temps);
header("location:accueil.html");
exit();
}else
{
/* Le pseudo ET l'email n'existent pas déjà dans la DB */
// Inscription du joueur dans la DB.
$result=mysql_query("INSERT INTO joueurs (email,pseudo,passe) VALUES('$email','$pseudo','$pass')");
/* Code à rajouter ici pour lui donner des objets par défaut si besoin... */
/* Code à rajouter ici pour envoyer un mail d'activation. */
// Prépare le message
$msg="Un lien d'activation vient d'être envoyé\n à votre adresse Email d'inscription.\n";
$msg=$msg."Vous devrez cliquer sur le lien pour activer votre compte.";
// Envoie du cookie
setcookie("message",$msg,time() + $temps);
//Redirection vers la page d'accueil
header("location:accueil.html");
exit();
}
} // Fin de la connection DB.
} // Fin de la connection serveur
mysql_close();
}else
{
/* Ici c'est que les champs contiennent des erreurs, donc réaffichage du formulaire en indiquant les messages d'erreurs.*/
$erreurs=implode($errorMsg) ;
setcookie("message",$erreurs,time() + $temps);
header("location:accueil.html");
exit();
}
}
/* --------------------- Fin du traitement ------------------ */
?>
La page de login :
<?php
/* ------------------BUT DU PROGRAMME -----------------------
Après des tests de validité des champs saisis, ce programme va vérifier dans la DB l'existance du pseudo et du mot de passe saisis, puis rediriger le joueur vers la page de jeu.
*/
/* ----------------------VARIABLES--------------------------- */
$temps = 365*24*3600;
$errorMsg = array();
$loginOk = true;
/* ----------------------FONCTIONS--------------------------- */
// Renvoie TRUE si le mot est vulgaire sinon FALSE
function vulgaire($mot) {
//$tab=file("salmots",FILE_IGNORE_NEW_LINES);
$tab=array("pute","con");
if(in_array($mot,$tab))
{
return true;
}else
{
return false;
}
}
function testtaille($mot,$nbr)
{
$result=str_replace(" ","",$mot);
$long=strlen($result);
if( $long<$nbr ){return true;}else{return false;}
}
function validmail($email) {
/* Renvoie TRUE si L'email est valide
sinon renvoie FALSE
Code à compléter...
*/
return false; // Provisoire : juste pour test du code.
}
/* --------------------- Début du traitement ------------------ */
if ( isset($_POST['pseudo1']) )
{
$pseudo = $_POST['pseudo1'];
$pass= $_POST['pass1'];
if( vulgaire($pseudo) ) {
$errorMsg[] = "* Votre pseudo est un mot interdit. <br/>";
$loginOk = false;
}
if( vulgaire($pass) ) {
$errorMsg[] = "* Votre mot de passe est un mot interdit. <br/>";
$loginOk = false;
}
if( vulgaire($email) ) {
$errorMsg[] = "* Votre email est un mot interdit. <br/>";
$loginOk = false;
}
if( testtaille($pseudo,3) ) {
$errorMsg[] = "* Votre pseudo doit avoir plus de 3 lettres. <br/>";
$loginOk = false;
}
if ( testtaille($pass,3) ) {
$errorMsg[] = "* Votre mot de passe doit avoir plus de 3 lettres. <br/>";
$loginOk = false;
}
/* ----- ici le pseudo est ok, on se connecte pour tester son existence ------------- */
if($loginOk)
{
// Données de connection.
$dbhost="localhost";
$dblogin="root";
$dbpassword="";
$dbname="kham";//le nom de ma base de données.
$table="joueurs";
// Connection au serveur Mysql.
$connecter=mysql_connect($dbhost,$dblogin,$dbpassword);
if (!$connecter)
{
echo "Probleme de connection au serveur. L'admin va vérifier ça :/ ";
}else
{
//............... Connection à la base de données ................
$okbase=mysql_selectdb($dbname);
//............ Si la base de donnée a un probleme on le dit............
if (!$okbase)
{
echo "Problème de connection à la base de données.";
}else
{
// Teste si le pseudo existe déjà dans la DB
$result = mysql_query("SELECT * FROM joueurs WHERE pseudo = '$pseudo'");
if(mysql_num_rows($result) == 0)
{
$msg="Ce pseudo n'existe pas !";
$existe=true; // existe pas.
}else
{
// Teste si le mot de passe existe déjà dans les champs DB de ce joueur.
$result = mysql_query("SELECT * FROM joueurs WHERE passe= '$pass'");
if(mysql_num_rows($result)==0)
{
$msg="Ce mot de passe est mauvais !";
$existe=true; // n'existe pas.
}
}
// Si le pseudo OU l'email sont mauvais...
if ($existe)
{
// Envoie du cookie
setcookie("message",$msg,time() + $temps);
header("location:accueil.html");
exit();
}else
{
/* Le pseudo ET l'email existent déjà dans la DB */
// Crée un cookie d'autologin, contenant le pseudo et le pass mais criptés.
//setcookie("message",$msg,time() + $temps);
//Redirection vers la page de jeu.
header("location:jouer.html");
exit();
}
} // Fin de la connection DB.
} // Fin de la connection serveur
mysql_close();
}else
{
/* Ici c'est que les champs contiennent des erreurs, donc réaffichage du formulaire en indiquant les messages d'erreurs.*/
$erreurs=implode($errorMsg) ;
setcookie("message",$erreurs,time() + $temps);
header("location:accueil.html");
exit();
}
}
/* --------------------- Fin du traitement ------------------ */
?>
Je fais remarquer que la sécurité dans ces pages n'est pas encore appliquée, je le ferais plus tard après avoir un code qui fonctionne bien
Edit :
Je rajoute ça ici car dans mon post ça disparait à moitié sous le code :/ :
Citation :(au fait, moi quand je clique une fois sur l'icone pour insérer du code formaté, cela m'affiche [code=php] puis le curseur se met automatiquement en fin du code, je clique donc une nouvelle fois sur l'icone pour fermer la balise code et ça remet [code=php], donc chaque fois je corrige manuellement la balise de fermeture )
Je remarque que le forum enlève les < b r / > que j'ai mis à la fin de chaque message d'erreur donc vous ne les voyez pas dans le code, ça sert à afficher la liste des messages d'erreurs qui se suivent ligne par ligne dans un DIV d'affichage au lancement de la page d'accueil