Problème : Enregistrement données, MySQL

Fermé
MichaelOfCourse - 17 juin 2012 à 16:53
 MichaelOfCourse - 21 juin 2012 à 17:48
Bonjour, je vais vous recopier le post que j'ai mis sur le Site du Zero, puisque, la bas, personne ne me répond :/

"Bonjour à tous,

ceci est mon premier post sur le site du zero, que j'utilise pourtant depuis assez longtemps.

Alors je vais vous expliquer le plus clairement possible je l'espère le problème que je rencontre :

J'ai suivi le cour sur les bases de données, puis celui sur comment créer un forum de Tadzoa, débutant en Php ET MySQL, et ayant besoin d'un résultat assez rapide (je compte approfondir mes connaissances plus tard) j'ai bêtement copy/paste, les codes données, mais en lisant tout le reste et en les comprenant je vous rassure

Donc je testais souvent le résultat et disposant d'une réelle BDD en ligne, je n'ai pas eu besoin de MAMP (tant mieux il ne marchait pas chez moi :/), la partie CSS n'est pas encore faite, mais je vois bien que mes pages fonctionnent, le seul problème : quand je suis sur la page Register.php, mon formulaire s'affiche, puis me dit que je suis bien enregistré, seulement quand je vais voir ma BDD, dans la table des membre du forum, il n'y a personne d'enregistré, encore plus flagrant : quand je me dirige sur la page de connexion, en rentrant les mêmes informations, il me dit que le pseudo/mdp est incorrect... Ce qui fait que je ne peux pas tester la partie "poster" du forum qui me dit sans arrêt que je dois être connecté !

Comme un exemple est bien mieux qu'un long discours, je vais vous donner le lien du site (non ne vous moquez pas du CSS, je n'y ai pas encore mis les mains)

http://minecraft-35000.craft-web.com/

En espérant réellement que vous trouverez une solution, merci d'avance !

Boris"

Voila, en espérant avoir plus de réponde que sur le Site du Zero



21 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
17 juin 2012 à 17:01
En voulant être désagréable, je me demande comment tu peux affirmer avoir compris le code alors que cela ne marche pas et que tu ne sais pas pourquoi?

Je ne vois pas non plus ce qui est choquant que tu ne puisses pas te logger alors qu'aucune donnée n'est présente dans la fameuse table. Ce qui paraît même plutôt logique ...

Si rien ne s'inscrit dans la table, c'est que soit tu n'as pas regardé la bonne BDD, soit les infos de connexion à celles-ci sont mauvaises, ou soit que le code n'inscrit en fait rien dans la BDD et te dit que c'est OK.

Donc, et comme on a aucun code sur ladite page, commencer par créer une page qui ne fait que faire une insertion bidon dans la BDD. Si ça fonctionne, alors il faut regarder ce qui diffère d'avec le code de la page de register.
3
MichaelOfCourse
17 juin 2012 à 17:09
"Je ne vois pas non plus ce qui est choquant que tu ne puisses pas te logger alors qu'aucune donnée n'est présente dans la fameuse table. Ce qui paraît même plutôt logique ... "

Oui je suis d'accord, mais quand je "m'enregistre" il me dit que c'est ok, alors que dans la BDD il n'y a aucune donnée inscrite ! Je précise qu'en entrant les données moi même via phpMyAdmin, je ne peux pas non plus me loggué :/

Merci quand même, je vais essayer de créer une page qui ne fait que enregistrer des infos dans la BDD
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
18 juin 2012 à 13:16
très difficile, voir impossible de t'aider si tu ne nous mets pas:
- le code du formulaire inscription ( au pire on peut le trouver dans le code source de ta page)

- le code de registrer.php
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 juin 2012 à 13:25
a priori si tu ne peux ni enregistrer tes infos, ni les récupérer en les ajoutant à la main, tu as un problème de connexion à ta bdd (vérifi les infos de connexion dans ton register & co)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MichaelOfCourse
19 juin 2012 à 00:05
Je vais poster le register.php , merci :)

<?php
session_start();
$titre="Enregistrement";
include("identifiants.php");
include("debut.php");
include("menu.php");

echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Enregistrement';

if ($id!=0) erreur(ERR_IS_CO);
?>


<?php
if (empty($_POST['pseudo'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
{
	echo '<h1>Inscription 1/2</h1>';
	echo '<form method="post" action="register.php" enctype="multipart/form-data">
	<fieldset><legend>Identifiants</legend>
	<label for="pseudo">* Pseudo :</label>  <input name="pseudo" type="text" id="pseudo" /> (le pseudo doit contenir entre 3 et 15 caractères)<br />
	<label for="password">* Mot de Passe :</label><input type="password" name="password" id="password" /><br />
	<label for="confirm">* Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" />
	</fieldset>
	<fieldset><legend>Contacts</legend>
	<label for="email">* Votre adresse Mail :</label><input type="text" name="email" id="email" /><br />
	</fieldset>
	<fieldset><legend>Informations supplémentaires</legend>
	<label for="localisation">Localisation :</label><input type="text" name="localisation" id="localisation" />
	</fieldset>
	<fieldset><legend>Profil sur le forum</legend>
	<label for="avatar">Choisissez votre avatar :</label><input type="file" name="avatar" id="avatar" />(Taille max : 10Ko<br />
	<label for="signature">Signature :</label><textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea>
	</fieldset>
        <label>Se souvenir de moi ?</label><input type="checkbox" name="souvenir" /><br />
	<p>Les champs précédés d un * sont obligatoires</p>
	<p><input type="submit" value="S\'inscrire" /></p></form>
	</div>
	</body>
	</html>';
	
	
} //Fin de la partie formulaire

?>

<?php

    //On récupère les variables
    $i = 0;
    $temps = time(); 
    $pseudo=$_POST['pseudo'];
    $signature = $_POST['signature'];
    $email = $_POST['email'];
    $msn = $_POST['msn'];
    $website = $_POST['website'];
    $localisation = $_POST['localisation'];
    $pass = md5($_POST['password']);
    $confirm = md5($_POST['confirm']);
	
    //Vérification du pseudo
    $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
    $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
    $query->execute();
    $pseudo_free=($query->fetchColumn()==0)?1:0;
    $query->CloseCursor();
    if(!$pseudo_free)
    {
        $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
        $i++;
    }

    if (strlen($pseudo) < 3 || strlen($pseudo) > 20)
    {
        $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
        $i++;
    }

    //Vérification du mdp
    if ($pass != $confirm || empty($confirm) || empty($pass))
    {
        $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
        $i++;
    }
?>

<?php
$query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
$query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
$query->execute();
$pseudo_free=($query->fetchColumn()==0)?1:0;
?>

<?php
    //Vérification de l'adresse email

    //Il faut que l'adresse email n'ait jamais été utilisée
    $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:mail');
    $query->bindValue(':mail',$email, PDO::PARAM_STR);
    $query->execute();
    $mail_free=($query->fetchColumn()==0)?1:0;
    $query->CloseCursor();
    
    if(!$mail_free)
    {
        $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
        $i++;
    }
    //On vérifie la forme maintenant
    if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
    {
        $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
        $i++;
    }
    //Vérification de l'adresse MSN
    if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
    {
        $msn_erreur = "Votre adresse MSN n'a pas un format valide";
        $i++;
    }
    //Vérification de la signature
    if (strlen($signature) > 200)
    {
        $signature_erreur = "Votre signature est trop longue";
        $i++;
    }
?>

<?php
    //Vérification de l'avatar :
    if (!empty($_FILES['avatar']['size']))
    {
        //On définit les variables :
        $maxsize = 10024; //Poid de l'image
        $maxwidth = 100; //Largeur de l'image
        $maxheight = 100; //Longueur de l'image
        $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
        
        if ($_FILES['avatar']['error'] > 0)
        {
                $avatar_erreur = "Erreur lors du transfert de l'avatar : ";
        }
        if ($_FILES['avatar']['size'] > $maxsize)
        {
                $i++;
                $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong>    contre <strong>".$maxsize." Octets</strong>)";
        }

        $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
        {
                $i++;
                $avatar_erreur2 = "Image trop large ou trop longue : 
                (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
        }
        
        $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
        if (!in_array($extension_upload,$extensions_valides) )
        {
                $i++;
                $avatar_erreur3 = "Extension de l'avatar incorrecte";
        }
    }
?>

<?php
   if ($i==0)
   {
	echo'<h1>Inscription terminée</h1>';
        echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p>
	<p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';
	
        //La ligne suivante sera commentée plus bas
	$nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):''; 
   
        $query=$db->prepare('INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email,             
        membre_msn, membre_siteweb, membre_avatar,
        membre_signature, membre_localisation, membre_inscrit,   
        membre_derniere_visite)
        VALUES (:pseudo, :pass, :email, :msn, :website, :nomavatar, :signature, :localisation, :temps, :temps)');
	$query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
	$query->bindValue(':pass', $pass, PDO::PARAM_INT);
	$query->bindValue(':email', $email, PDO::PARAM_STR);
	$query->bindValue(':msn', $msn, PDO::PARAM_STR);
	$query->bindValue(':website', $website, PDO::PARAM_STR);
	$query->bindValue(':nomavatar', $nomavatar, PDO::PARAM_STR);
	$query->bindValue(':signature', $signature, PDO::PARAM_STR);
	$query->bindValue(':localisation', $localisation, PDO::PARAM_STR);
	$query->bindValue(':temps', $temps, PDO::PARAM_INT);
        $query->execute();

	//Et on définit les variables de sessions
        $_SESSION['pseudo'] = $pseudo;
        $_SESSION['id'] = $db->lastInsertId(); ;
        $_SESSION['level'] = 2;
        $query->CloseCursor();
    }
    else
    {
        echo'<h1>Inscription interrompue</h1>';
        echo'<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
        echo'<p>'.$i.' erreur(s)</p>';
        echo'<p>'.$pseudo_erreur1.'</p>';
        echo'<p>'.$pseudo_erreur2.'</p>';
        echo'<p>'.$mdp_erreur.'</p>';
        echo'<p>'.$email_erreur1.'</p>';
        echo'<p>'.$email_erreur2.'</p>';
        echo'<p>'.$msn_erreur.'</p>';
        echo'<p>'.$signature_erreur.'</p>';
        echo'<p>'.$avatar_erreur.'</p>';
        echo'<p>'.$avatar_erreur1.'</p>';
        echo'<p>'.$avatar_erreur2.'</p>';
        echo'<p>'.$avatar_erreur3.'</p>';
       
        echo'<p>Cliquez <a href="./register.php">ici</a> pour recommencer</p>';
    }

?>
</div>
</body>
</html>




Merci beaucoup d'avance

PS: la page appelée au début, identifiants.php, se charge de se connecter à la BDD
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 juin 2012 à 09:38
plusieurs choses:

- tu mets echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p> avant d'avoir fait l'insertion dans la BDD, il serait plus logique de tester que l'INSERT ait bien fonction pour afficher cet echo

- $query->bindValue(':pass', $pass, PDO::PARAM_INT);

est tu sur que le mot de pass est un entier ? (md5 est une suite de chiffres et de lettres et caracteres spéciaux)

- la page appelée au début, identifiants.php, se charge de se connecter à la BDD y a il une erreur si connexion pas effective ?
0
MichaelOfCourse
19 juin 2012 à 10:03
Alain, d'abord je te remercie, tu as l'air de pouvoir m'aider, comme dis plus haut, je débute vraiment en MySQL, et je comprend ce que tu veux dire, mais pourrais tu m'expliquer comment afficher une erreur au cas ou la connexion ne serait pas effective, comme ça je ferais une page bidon et je pourrais voir si le problème vient de la. :)

Merci beaucoup en tout cas !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 juin 2012 à 13:11
donnes nous le code du fichier identifiants.php
en occultant les codes de connexion bien sur
0
MichaelOfCourse
19 juin 2012 à 17:43
<?php
try
{
$db = new PDO('mysql:host=localhost;dbname=*******', '*****', '*****');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>

En espérant que vous trouverez une solution, merci d'avance :)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 juin 2012 à 19:10
je n'utilise pas et ne connait pas PDO ( à tort peut être) mais si j'ai bien compris par défaut les erreur SQL ne sont pas affichées par PDO

vas voir sur ce site du zero justement comment les faire afficher, tu saura ainsi si tu est bien connecté à la BDD:
http://www.siteduzero.com/tutoriel-3-336595-pdo-comprendre-et-corriger-les-erreurs-les-plus-frequentes.html

et ce qui me surprend un peu aussi c'est que chez un hébergeur tu ait host=localhost

quels sont les paramètres d'accès à la BDD que t'a donné ton hébergeur
0
Tu ne connais pas le PDO ? (moi non plus x) ) mais si tu connais autre chose qui au final donne le même résultat je suis preneur hein ;)

Je vais allez jeter un coup d'oeuil au SDZ.

Mon hébergeur ne me donne pas de paramêtre d'accès, j'ai trouvé ça étonnant aussi c'est Cpannel, ou alors je ne sais pas ou regarder (probable aussi ).

EDIT : le lien que tu m'a donné, tu aurais pu me le donner en chinois je n'aurais pas compris beaucoup plus ! LOL, bref je sens que je vais pas trouver de solutions...
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 19/06/2012 à 20:47
disposant d'une réelle BDD en ligne
donc tu as du avoir les codes de connexion à la BDD serveur (ou host) login, mot de pass

avec la methode plus "classique " que je maitrise:
dans ton fichier identifiants.php mets:

<?php  
//parametres de connexion BDD que tu dois modifier pour qu'ils correspondent à ceux donnés par hebergeur ??  
$host="localhost";  
$login="root";  
$passw="....";  
$db_name="myBDD";  

$cnx=mysql_connect($host,$login,$passw) or die ("Pb connexion serveur ".mysql_error());  
if($cnx) {echo "connexion serveur OK";}  
$db=mysql_select_db($db_name) or die ("Pb selection base ".mysql_error());  
if($db){echo " Selection base OK";}  
?>


et vois les messages d'erreur ou OK qu'il renvoie
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 juin 2012 à 21:36
quand tu te connectes avec phpmyadmin a cette BDD tu as bien des codes ? alors mets ceux la
0
MichaelOfCourse
19 juin 2012 à 21:58
Eh eh justement non, je me connecte à un compte a part (dedizone) qui me propose un lien direct vers mon hébergeur, qui me propose un lien direct vers phpmyadmin... Les identifiants rentrés sur la BDD correspondent a je ne sais plus quoi d'ailleurs, mais il me semble que ce sont les bons, enfin j'en n'en suis pas sur quoi, en y réfléchissant le problème vient peut être seulement de ça...

Il faut donc que je trouve le moyen d'obtenir ces codes !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 juin 2012 à 22:44
le problème vient surement de tes codes, que donne les erreurs ou messages suite au code donné dans identifiants.php
0
MichaelOfCourse
20 juin 2012 à 19:15
J'ai finalement réussi à récuperer mes codes d'accès auprès de l'hebergeur, et ton code ne m'affiche plus que des OK (déjà ça ça fait plaisir à voir :) )

Maintenant, ça ne regle pas totalement mon problème car au moment de l'inscription une erreur apparait : Fatal error: Call to a member function prepare() on a non-object

Ce qu'il y a et je pense que ça vient de la c'est que mon fichier functions.php est presque vide !

Merci
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 20/06/2012 à 20:53
ha super, alors si tu veux tout à l'heure si j'ai un peu de temps je te ferait l'enr BDD avec la methode "classique"

mais en attendant tu peux essayer en remettant le code d'origine dans identifiants.php et avec les bosn codes de connexion bien sur.
0
MichaelOfCourse
20 juin 2012 à 21:04
Merci c'est vraiment hyper sympa de ta part, je commence à desesperer moi LOL

Merci encore !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 juin 2012 à 21:49
je n'ai pas testé il peut subsister des erreurs, il faut aussi que tu complètes.
la méthode est différente
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Inscription</title>
<style type="text/css">
/* class message d'erreur */
.msg_err {
	color:red;
}
</style>
</head>
<body>

<?php
$titre="Enregistrement";
include("identifiants.php");
include("debut.php");
include("menu.php");

echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Enregistrement';

//if ($id!=0) erreur(ERR_IS_CO);
	//int variables de travail
	$sasies_ok = true;
	$affich_formulaire=true;
			//// partie traitement des données reçues du formulaire, on la met avant le formulaire, ainsi on peut réafficher les valeurs déja saisie et afficher les messages en cas d'erreur ///
	//init des variables a vide
	$pseudo="";
    $signature = "";
    $email = "";
    $msn ="";
    $website = "";
    $localisation = "";
    $pass = "";
    $confirm ="";
	$souvenir="";
	
	$message_alert="";
	$pseudo_erreur1="";
	$pseudo_erreur2="";
	$mdp_erreur="";
	$email_erreur1="";
	$email_erreur2="";
	$signature_erreur="";
	$avatar_erreur="";
	$avatar_erreur1="";
	$avatar_erreur2="";
	$avatar_erreur3="";
	//au premier affichage du formulaire les input correspondants seront vides
	//lorsqu'elle seront reçues du formulaire elles prendront la valeur saisie par utilisateur
	//en cas d'erreur cela lui évitera de tout ressaisir
	
if(isset($_POST[''])){
			//On récupère les variables
    //$i = 0;
    $temps = time(); 
    $pseudo=$_POST['pseudo'];
    $signature = $_POST['signature'];
    $email = $_POST['email'];
    $msn = $_POST['msn'];
    $website = $_POST['website'];
    $localisation = $_POST['localisation'];
    $pass = md5($_POST['password']);
    $confirm = md5($_POST['confirm']);
	$souvenir= $_POST['souvenir'];
	
    //Vérification du pseudo
    $query="SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo ='".$pseudo."'";
	$req_count=mysql_query($query) or die ("Pb avec la req count ".mysql_error());
	$row=mysql_fetch_assoc($req_count);
	$pseudo_free=($row['nbr']>0) ? false: true;
    if(!$pseudo_free)
    {
        $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
        $sasies_ok=false;
    }

    if (strlen($pseudo) < 3 || strlen($pseudo) > 20)
    {
        $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
        $sasies_ok=false;
    }

    //Vérification du mdp
    if ($pass != $confirm || empty($confirm) || empty($pass))
    {
        $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
        $sasies_ok=false;
    }



    //Vérification de l'adresse email

    //Il faut que l'adresse email n'ait jamais été utilisée
    $query="SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email ='".$mail."'";
    $req_mail=mysql_query($query) or die ("Pb req mail ".mysql_error());
    $row=mysql_fetch_assoc($req_mail);
	$mail_free=($row['nbr']>0) ? false: true;
    
    if(!$mail_free)
    {
        $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
        $sasies_ok=false;
    }
    //On vérifie la forme maintenant
    if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
    {
        $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
       $sasies_ok=false;
    }
    //Vérification de l'adresse MSN
    if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
    {
        $msn_erreur = "Votre adresse MSN n'a pas un format valide";
       $sasies_ok=false;
    }
    //Vérification de la signature
    if (strlen($signature) > 200)
    {
        $signature_erreur = "Votre signature est trop longue";
        $sasies_ok=false;
    }

    //Vérification de l'avatar :
    if (!empty($_FILES['avatar']['size']))
    {
        //On définit les variables :
        $maxsize = 10024; //Poid de l'image
        $maxwidth = 100; //Largeur de l'image
        $maxheight = 100; //Longueur de l'image
        $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
        
        if ($_FILES['avatar']['error'] > 0)
        {
                $avatar_erreur = "Erreur lors du transfert de l'avatar : ";
				$sasies_ok=false;
        }
        if ($_FILES['avatar']['size'] > $maxsize)
        {
                $sasies_ok=false;
                $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong>    contre <strong>".$maxsize." Octets</strong>)";
        }

        $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
        {
                $sasies_ok=false;
                $avatar_erreur2 = "Image trop large ou trop longue : 
                (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
        }
        
        $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
        if (!in_array($extension_upload,$extensions_valides) )
        {
               $sasies_ok=false;
                $avatar_erreur3 = "Extension de l'avatar incorrecte";
        }
    }

   if ($sasies_ok==true)
   {
        
		$nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):''; 
		//texte de la requette
        $query="INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email,             
        membre_msn, membre_siteweb, membre_avatar,
        membre_signature, membre_localisation, membre_inscrit,   
        membre_derniere_visite)
        VALUES ('".$pseudo."','".$pass."','".$email."','".$msn."','".$website."','".$nomavatar."','".$signature."','".$localisation."','".$temps."','".$temps."'";
		//soumission de la requette
		$requette_insert=mysql_query($query) or die ("Pb avec l'insertion ".mysql_error());
		if($requette_insert){ 
			//c'est seulement quand la requette d'insertion a réussi 
			// qu'on définit les variables de sessions
			$_SESSION['pseudo'] = $pseudo;
			$_SESSION['id'] = mysql_insert_id();
			$_SESSION['level'] = 2;
			//on ne réaffiche pas le formulaire
			$affich_formulaire=false;
			//et met le message 
			echo'<h1>Inscription terminée</h1>';
			echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p>
			<p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';
		}else{
			echo'<h1>Votre inscription a échoué suit à un problème avec la base de données</h1>';
		}
    }
    else
    {
       $message_alert = 'Inscription interrompue';
        
    }
	mysql_close();
	}
	
	if($affich_formulaire==true){
?>


	<h1>Inscription 1/2</h1>
<?php 
		// messages alert pb saisies
				if($message_alert != ""){ echo '<span class="msg_err">'.$message_alert.'</span><br />';}

?>	
	<form method="post" action="register.php" enctype="multipart/form-data">
		<fieldset><legend>Identifiants</legend>
			<label for="pseudo">* Pseudo :</label> 
				<input name="pseudo" type="text" id="pseudo" value="<?php echo $pseudo;?>" /> (le pseudo doit contenir entre 3 et 15 caractères)<br />
<?php 
				// messages d'erreur pseudo
				if($pseudo_erreur1 != ""){ echo '<span class="msg_err">'.$pseudo_erreur1.'</span><br />';}
				if($pseudo_erreur2 != "") { echo '<span class="msg_err">'.$pseudo_erreur1.'</span><br />';}
				
				//tu fais pareil pour les autres
?>				
			<label for="password">* Mot de Passe :</label>
				<input type="password" name="password" id="password" value="<?php echo $pass;?>"  /><br />
			<label for="confirm">* Confirmer le mot de passe :</label>
				<input type="password" name="confirm" id="confirm" value="<?php echo $confirm;?>"  />
		</fieldset>
		<fieldset><legend>Contacts</legend>
			<label for="email">* Votre adresse Mail :</label>
				<input type="text" name="email" id="email" value="<?php echo ?>"  /><br />
		</fieldset>
		<fieldset><legend>Informations supplémentaires</legend>
			<label for="localisation">Localisation :</label>
				<input type="text" name="localisation" id="localisation" value="<?php echo $localisation ?>"  />
		</fieldset>
		<fieldset><legend>Profil sur le forum</legend>
			<label for="avatar">Choisissez votre avatar :</label>
				<input type="file" name="avatar" id="avatar" />(Taille max : 10Ko<br />
			<label for="signature">Signature :</label>
				<textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea>
		</fieldset>
			<label>Se souvenir de moi ?</label>
				<input type="checkbox" name="souvenir" value="oui" <?php if($souvenir == "oui"){echo 'checked="checked"';} ?>/><br />
		<p>Les champs précédés d un * sont obligatoires</p>
		
		<p><input type="submit" name="s_inscrire" value="S'inscrire" /></p>
	</form>
	
	
	
<?php
} //fin if affich formulaire
?>

</div>
	</body>
	</html>
0
MichaelOfCourse
20 juin 2012 à 22:47
Merci pour ton code, et surtout merci de l'avoir tant commenté :)

Je vais encore profiter de toi car le site me dit "Parse error: syntax error, unexpected ';' in /home/minecra4/public_html/register.php on line 229" je pense que ça voulais dire que tu avais oublié un point virgule à la ligne 229, mais je ne vois pas trop ou il faut en rajouter pour le coup... Je me sens très con !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 juin 2012 à 10:45
il manque même la variable après echo

<input type="text" name="email" id="email" value="<?php echo $email; ?>"  /><br />


je viens aussi de voir ligne 69 suprimer cette ligne

et ligne 100 c'est $email au lieu de $mail
$query="SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email ='".$email."'";


Tu devrais t'inscrire sur le site c'est gratuit et sans soucis.
0
MichaelOfCourse
21 juin 2012 à 17:20
Je vais m'enregistrer tout de suite, tu as raison !

J'ai remarqué qu'à la ligne 26 et à la 59, il y a des commentaires ressemblant fortement à du code, est ce fait exprès ou je peux les transformer en code ?

Et aussi, je ne comprend pas ce qui se passe, mais il ne se passe rien quand je clique sur s'inscrire, le formulaire ne remet à zéro en fait !

Tu peux tester si tu veux, http://minecraft-35000.craft-web.com/register.php

Ne t'inquiètes pas, utilise le pseudo Alain_42 + un mot de passe bison, et je supprimerais tes informations si elle s'inscrivent, ce qui n'est pour l'instant pas le cas lol.

Et je ne te le dirais jamais assez, mais merci pour tout ce que tu fais !
0