[Tuto] Inscription et connexion dans un espace membres

Morgane
Invité n'ayant pas de compte PHPfrance

16 juil. 2011, 01:29

bonjour,

j'ai suivi le tuto mentionné dans le titre et j'ai essayé de l'adapté a ce que je souhaites récupérer comme information.
j'arrive a récupérer toutes les infos sauf "password", mon champ reste vide.
<?php
// Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
header('Content-type: text/html; charset=UTF-8');

/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine)
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);

return $chaine;
}

// Initialisation du message de réponse
$message = null;


// Si le formulaire est envoyé
if (isset($_POST['pseudo']))
{

    /* Récupération des variables issues du formulaire
    Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
    (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
    En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
    $nom = (isset($_POST['nom']) && trim($_POST['nom']) != '')? Verif_magicquotes($_POST['nom']) : null;
    $prenom = (isset($_POST['prenom']) && trim($_POST['prenom']) != '')? Verif_magicquotes($_POST['prenom']) : null;
	$adresse = (isset($_POST['adresse']) && trim($_POST['adresse']) != '')? Verif_magicquotes($_POST['adresse']) : null;
	 $code_postal = (isset($_POST['code_postal']) && trim($_POST['code_postal']) != '')? Verif_magicquotes($_POST['code_postal']) : null;
	  $ville = (isset($_POST['ville']) && trim($_POST['ville']) != '')? Verif_magicquotes($_POST['ville']) : null;
	   $e_mail = (isset($_POST['e_mail']) && trim($_POST['e_mail']) != '')? Verif_magicquotes($_POST['e_mail']) : null;
	    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
   $password = (isset($_POST['password']) && trim($_POST['password']) != '')? Verif_magicquotes($_POST['password']) : null;

    // Si $nom,$prenom,$adresse,$code_postal,$ville,$e_mail,$pseudo,$password différents de null
    if(isset($nom,$prenom,$adresse,$code_postal,$ville,$e_mail,$pseudo,$password))
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "localhost";
         $database = "essai";
         $username = "root";
         $password = "";
   
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());

         // Connexion à la base
         mysql_select_db($database, $connection);
   
         // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
         mysql_query("SET NAMES 'utf8'");
   
         /* Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string
		 REVOIR ICI RISQUE DE PROBLEME*/
         $nom = mysql_real_escape_string($nom);
		 $prenom = mysql_real_escape_string($prenom);
		 $adresse = mysql_real_escape_string($adresse);
		 $code_postal = mysql_real_escape_string($code_postal);
		 $ville = mysql_real_escape_string($ville);
		 $e_mail= mysql_real_escape_string($e_mail);
		 $pseudo = mysql_real_escape_string($pseudo);
         $password = mysql_real_escape_string($password);
   
   
         // Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire
         $requete = "SELECT count(*) as nb FROM membre WHERE pseudo = '".$pseudo."'";
   
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
   
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec);
   

         // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat;
         if ($resultat['nb'] == 0)
         // Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer
         {
             // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()
             $insertion = "INSERT INTO membre(nom, prenom,adresse,code_postal,ville,e_mail,pseudo,password,date_enregistrement) VALUES('".$nom."','".$prenom."','".$adresse."','".$code_postal."','".$ville."','".$e_mail."','".$pseudo."', '".$password."', NOW())";
         
             // Exécution de la requête d'insertion
             $inser_exec = mysql_query($insertion) or die(mysql_error());
       
             /* Si l'insertion s'est faite correctement (une requête d'insertion retourne "true" en cas de succès, je peux donc utiliser
             l'opérateur de comparaison strict '==='  c.f. http://fr.php.net/manual/fr/language.op ... arison.php) */
             if ($inser_exec === true)
             {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
                 $_SESSION['login'] = $pseudo;
           
                 // A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle.
                 $message = 'Votre inscription est enregistrée. <a href = "#">Cliquez ici pour vous connecter</a>';
             }    
         }
         else
         {   // Le pseudo est déjà utilisé
             $message = 'Ce pseudo est déjà utilisé, changez-le.';
         }
    }
    else
    {    // Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
         $message = 'tous les champs doivent être remplis.';
    }
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Formulaire d'inscription - tutoriel PHP France</title>

<style type="text/css">
<!--
body, p, h1,form, input {
margin:0;
padding:0;
}
body {
background-color:#FFFFFF
}
#inscription {
width:380px;
background:#FFFFFF;
margin:20px auto;
font-family: Arial, Helvetica, sans-serif;
font-size:1em;
border:2px solid #333333;
}
#inscription h1 {
text-align:center;
font-size:1.2em;
background:#333333;
padding-bottom:5px;
margin-bottom:15px;
color:#FFFFFF;
letter-spacing:0.05em;
}
#inscription p {
padding-top:15px;
padding-right:50px;
text-align:right;
}
#inscription input {
margin-left:30px;
width:150px;
}
#inscription #valider {
width:155px;
font-size:0.8em;
}
#inscription #message {
height:27px;
font-size:0.7em;
font-weight:bold;
text-align:center;
padding:10px 0 0 0;
}
-->
</style>
</head>
<body>
<div id = "inscription">
    <form action = "#" method = "post">
    <h1>Inscription</h1>
    <p><label>Nom</label><input type = "text" name = "nom" /></p>
    <p><label>Prénom</label><input type = "text" name = "prenom" /></p>
	<p><label>Adresse</label><input type= "text" name="adresse"/></p>
	<p><label>code postal</label><input type= "text" name="code_postal"/></p>
	<p><label>Ville</label><input type=" text" name="ville"/></p>
	<p><label>e-mail</label><input type="text" name="e_mail"/></p>
	
	<p><label>choisissez un pseudo</label><input type="text" name="pseudo"/></p>
	<p><label>choisissez un mot de passe</label><input type="password" name="password"/></p>
	</br>

    <p><input type = "submit" value = "Envoyer" id = "valider" /></p>
    </form>
    <p id = "message"><?php if(isset($message)) echo $message ?></p>
	echo htmlspecialchars($_SESSION['login']);
</div>
</body>
</html> 





est-ce que quelqu'un peut me dire où se trouve mon erreur, car je n'arrive pas à la voir?

et je voulais savoir s'il était possible de séparer le css de mon php pour qu'il soit plus conforme au reste de mon design?

merci d'avance pour vos réponses

Morgane
Invité n'ayant pas de compte PHPfrance

23 juil. 2011, 15:34

résolu sans aide . sql confondait le mot de passe du serveur et celui de celui qui devait s'identifier. (erreur de ma part car nommé pareil)

merci pour votre aide

devlop78
Invité n'ayant pas de compte PHPfrance

25 juil. 2011, 01:27

Cool. Tu peux cliquer sur "Résolu" :)