Créer un compte
Connexion

Créer un espace membre PHP MySql

Pour créer et répondre aux sujets, vous devez être connecté.
Ce sujet est résolu.
Pages: 1
Auteur Message
Aglzime
22/06/2010 à 17:46:42
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Bonjour!
j'aimerai créer un espace membre , mais je me blok en premier pas ! la page d'inscription "senregistrer.php", jaimerai que cette page doit contenir les champs suivants:

  • Nom
  • Email
  • mot de passe

Je ne sais pas comment il doit etre le champs email dans ma base de donné", ( son type, sa taille...), et comment empêcher une personne à s'inscrire sous un email déja présent dans ma base de donnée et pareil pour le pseudo!!!
Merci d'avance!!

cordialement ;)

ybouane
23/06/2010 à 06:12:44
ybouane
Admin
Bonjour,
Pour les champs, le champs de l'email tu peut simplement mettre varchar avec comme taille 255.
Et pour vérifier si il n'y a pas déjà eu quelqu'un avec le même email ou pseudo, tu peut faire quelque chose de similaire à:
$pseudo = $_POST['pseudo'];
$nom = $_POST['nom'];
$email = $_POST['email'];
$req1 = mysql_fetch_array(mysql_query('select count(pseudo) as cpt from utilisateurs where pseudo="'.$pseudo.'"'));
if($req1['cpt'] == 0)
{
    $req2 = mysql_fetch_array(mysql_query('select count(email) as cpt from utilisateurs where email="'.$email.'"'));
    if($req2['cpt'] == 0)
    {
        //Enregistrement des données.
    }
    else
    {
        echo 'Quelqu\'un utilise déjà votre email.';
    }
}
else
{
    echo 'Quelqu\'un utilise déjà votre pseudo.';
}

Cordialement :)

Image
Aglzime
23-06-2010 à 14:49:42
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Merci de votre Réponse!!
Mais je ne sais pas comment rajouté le code que tu m'as donné , voici mon code en entier (partie PHP):

<?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 */
    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
    $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
   

    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$pass))
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "*****";
         $database = "*****";
         $username = "*****";
         $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
         $nom = mysql_real_escape_string($pseudo);
         $password = mysql_real_escape_string($pass);
   
   
         // 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 membres WHERE pseudo = '".$nom."'";
   
         // 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 membres(pseudo,ip,pass,date_enregistrement) VALUES('".$nom."', '".$ip."', '".$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 = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.';
    }
}
?>
cordialement  ;)

ybouane
23/06/2010 à 16:19:22
ybouane
Admin
Bonjour,
ton code fait déjà la vérification du pseudo, il ne te reste plus qu'à faire la vérification de l'email comme ceci et de mettre le formulaire html essaye quelque chose comme ça:
<?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 */
    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
    $email = (isset($_POST['email']) && trim($_POST['email']) != '')? Verif_magicquotes($_POST['email']) : null;
    $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
   

    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$email,$pass))
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "*****";
         $database = "*****";
         $username = "*****";
         $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
         $nom = mysql_real_escape_string($pseudo);
         $email = mysql_real_escape_string($email);
         $password = mysql_real_escape_string($pass);
   
   
         // 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 membres WHERE pseudo = '".$nom."'";
   
         // 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
         {
                         $requete2 = "SELECT count(*) as nb FROM membres WHERE email = '".$email."'";
                         $req_exec2 = mysql_query($requete2) or die(mysql_error());
                         $resultat2 = mysql_fetch_assoc($req_exec2);
                         if ($resultat2['nb'] == 0)
                         {
                                 // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()
                                 $insertion = "INSERT INTO membres(pseudo,email,ip,pass,date_enregistrement) VALUES('".$nom."','".$email."', '".$ip."', '".$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
                         {
                                 $message = 'Cet email est déjà utilisé, changez-le.';
                         }
         }
         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 = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.';
    }
}
else
{
?>
<form action="" method="post">
Pseudo : <input type="text" name="pseudo" /><br />
Email : <input type="text" name="email" /><br />
Mot de passe : <input type="password" name="pass" /><br />
<input type="submit" value="Envoyer" />
</form>
<?php
}
?>

Cordialement :)

Image
Aglzime
23/06/2010 à 18:45:57
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Merciiiii!!
ça fonctionne mais! ya juste un petit bug :colaire: ! quand quelqu'un s'inscrit s'affiche juste une page blanche, et aussi quand quelqu'un saisi un e-mail ou pseudo déja utilisé s'affiche pareille une page blanche  -_- ! je veux que s'affiche un message d'erreur lorsque la personne met un email ou pseudo déja utilisé, et un message de remerciement pour une inscription valide!!,
Merci d'avance!!!

cordialement  ;)

ybouane
24/06/2010 à 05:25:54
ybouane
Admin
Bonjour,
alors utilise ce code:
<?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 */
    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
    $email = (isset($_POST['email']) && trim($_POST['email']) != '')? Verif_magicquotes($_POST['email']) : null;
    $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
   

    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$email,$pass))
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "*****";
         $database = "*****";
         $username = "*****";
         $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
         $nom = mysql_real_escape_string($pseudo);
         $email = mysql_real_escape_string($email);
         $password = mysql_real_escape_string($pass);
   
   
         // 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 membres WHERE pseudo = '".$nom."'";
   
         // 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
         {
                         $requete2 = "SELECT count(*) as nb FROM membres WHERE email = '".$email."'";
                         $req_exec2 = mysql_query($requete2) or die(mysql_error());
                         $resultat2 = mysql_fetch_assoc($req_exec2);
                         if ($resultat2['nb'] == 0)
                         {
                                 // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()
                                 $insertion = "INSERT INTO membres(pseudo,email,ip,pass,date_enregistrement) VALUES('".$nom."','".$email."', '".$ip."', '".$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
                         {
                                 $message = 'Cet email est déjà utilisé, changez-le.';
                         }
         }
         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 = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.';
    }
echo $message;
}
else
{
?>
<form action="" method="post">
Pseudo : <input type="text" name="pseudo" /><br />
Email : <input type="text" name="email" /><br />
Mot de passe : <input type="password" name="pass" /><br />
<input type="submit" value="Envoyer" />
</form>
<?php
}
?>


Image
Aglzime
24/06/2010 à 10:34:31
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Merciii bien!
Celui il fonctionne parfaitement!!
je cherche si il n'existe pas un code qui vérfier si l'email est valide!! pck j'ai essayé un e-mail SANS "@" et il l'a accepté!!
Merci beaucoup pour ton aide!!!  :#1: :meilleur:
 ;)

Amicalement  ;)


ybouane
24/06/2010 à 17:53:09
ybouane
Admin
Bonjour,
regarde ce tutoriel:
http://www.supportduweb.com/scripts_tutoriaux-code-source-43-verification-d-email-avec-regex-expressions-regulieres-verifier-la-validite-d-une-adresse-email-en-php.html

Cordialement :)

Image
Aglzime
25/06/2010 à 12:25:18
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Désolé ça ne focntionne pas!!! , Par ce que je ne sais pas si la partie en PHP doit être placée entre <head> et </head> ou bien entre <body> et </body> ??
Merci pour ce petit tuto sympa  ;)
Cordialement  :)

Aglzime
25/06/2010 à 12:48:05
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
J'ai trouvé un bout de code PHP qui traine sur le net soit disant que ça verifier si l'adresse email existe réellement! mais je ne sais pas comment l'appliqué , le voici :
<?php if(!function_exists('getmxrr'))
{
   function getmxrr($hostname,&$mxhosts)
   {
      if(!is_array($mxhosts))
         $mxhosts = array();
      if( !empty( $hostname ) )
      {
         @exec( "nslookup -type=MX $hostname", $output, $ret );
         while( list( $k, $line ) = each( $output ) )
         {
            // On recherche la présence de d'entrées MX:
            if( ereg( "^{$hostname}\tMX preference = ([0-9]+), mail exchanger = (.*)$", $line, $parts ) )
            {
               $mxhosts[ $parts[1] ] = $parts[2];
            }
         }
         if( count( $mxhosts ) )
         {
            // S'il y a plusieurs enregistrements MX, on les classe par ordre de priorité
            reset( $mxhosts );
            ksort( $mxhosts );
            $i = 0;
            while( list( $pref, $host ) = each( $mxhosts ) )
            {  
               $mxhosts2[$i] = $host;
               $i++;
            }
            $mxhosts = $mxhosts2;
            return true;
         }else{
             return false;
         }
      }
   }
}

function mailCheck($email)
{
   // L'adresse email doit être correctement formattée
   if(!eregi("^[[:alpha:]]{1}[[:alnum:]]*((\.|_|-)[[:alnum:]]+)*@[[:alpha:]]{1}[[:alnum:]]*((\.|-)[[:alnum:]]+)*(\.[[:alpha:]]{2,})$", $email))
      exit('L\'adresse '.$email.' est mal formatée');
   // On récupère le domaine
   list(,$domain ) = split('@',$email);
   // On cherche des enregistrements MX dans les DNS
   if (getmxrr($domain, $MXHost))
      $ConnectAddress = $MXHost[0];
   else
      $ConnectAddress = $domain;
   // On créé la connexion sur le port smtp (25)
   $Connect = @fsockopen($ConnectAddress,25,&$errno,&$errstr);
   if($Connect)
   {
      if(ereg("^220", $Out = fgets($Connect, 1024)))
      {
         fputs ($Connect, "HELO {$_SERVER['HTTP_HOST']}\r\n");
         $Out = fgets ( $Connect, 1024 );
         fputs ($Connect, "MAIL FROM: <{$email}>\r\n");
         $From = fgets ( $Connect, 1024 );
         fputs ($Connect, "RCPT TO: <{$email}>\r\n");
         $To = fgets ($Connect, 1024);
         fputs ($Connect, "QUIT\r\n");
         fclose($Connect);
         // Si le code renvoyé par la commande RCPT TO est 250 ou 251 (cf: RFC)
         // Alors l'adresse existe
         if (!ereg ("^250", $To) && !ereg ( "^251", $To )) {
            echo 'Adresse rejetée par le serveur '.$To;
            return false;
         }
         else {
            echo 'Adresse acceptée par le serveur';
            return true;
         }
      }else{
         echo 'Le serveur n\'a pas répondu';
         return false;
      }
   }else{
      // Connexion au serveur de messagerie impossible
      // vous pouvez afficher le message d'erreur en décommentant la ligne suivante:
      echo $errno."-".$errstr;
      return false;
     
   }
}

?>



ybouane
26/06/2010 à 01:57:42
ybouane
Admin
Bonjour,
Il te suffisait simplement de faire:
<?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 */
    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
    $email = (isset($_POST['email']) && trim($_POST['email']) != '')? Verif_magicquotes($_POST['email']) : null;
    $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
   

    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$email,$pass))
    {
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&amp;','&',$email)))
{
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "*****";
         $database = "*****";
         $username = "*****";
         $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
         $nom = mysql_real_escape_string($pseudo);
         $email = mysql_real_escape_string($email);
         $password = mysql_real_escape_string($pass);
   
   
         // 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 membres WHERE pseudo = '".$nom."'";
   
         // 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
         {
                         $requete2 = "SELECT count(*) as nb FROM membres WHERE email = '".$email."'";
                         $req_exec2 = mysql_query($requete2) or die(mysql_error());
                         $resultat2 = mysql_fetch_assoc($req_exec2);
                         if ($resultat2['nb'] == 0)
                         {
                                 // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()
                                 $insertion = "INSERT INTO membres(pseudo,email,ip,pass,date_enregistrement) VALUES('".$nom."','".$email."', '".$ip."', '".$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
                         {
                                 $message = 'Cet email est déjà utilisé, changez-le.';
                         }
         }
         else
         {   // Le pseudo est déjà utilisé
             $message = 'Ce pseudo est déjà utilisé, changez-le.';
         }
}
else
{
     $message = 'L\'email entré est invalide.';
}
    }
    else
    {    // Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
         $message = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.';
    }
echo $message;
}
else
{
?>
<form action="" method="post">
Pseudo : <input type="text" name="pseudo" /><br />
Email : <input type="text" name="email" /><br />
Mot de passe : <input type="password" name="pass" /><br />
<input type="submit" value="Envoyer" />
</form>
<?php
}
?>

Cordialement

Image
Aglzime
26-06-2010 à 14:29:31
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
MERCI BEAUCOUP , Je ne sais pas comment te remercier, mais franchement ça mérite un grand chapeau  <:)  <:)
ça marche , c'est parfait!! Et désolé si je vous ai pris un peu de votre temps pour m'aider , c'est vraiment très sympa de votre part!
Maintenant les page d'inscription et de connexion sont faites!!
Désormais je travaille sur la page ' Profile-membre", et j'aimerai afficher dans cette page que les données du membre ,( Son pseudo, et son email , et son mot de passe,) dans la base de données les colones sont " Pseudo, email, pass) j'ai essayé de faire une requête du genre <?php if ($_SESSION['logged'] == 1)
{
 include("connectmysql.php");
$sql = mysql_query("SELECT * FROM membres WHERE pseudo = '".$_SESSION['pseudo']."' AND id = '".$_SESSION['id']."'");
$ech = mysql_fetch_array($sql);
echo 'Voici votre pseudo : '.$ech['pseudo'];
echo '<br/>';
echo 'Voici votre mot de passe : '.$ech['pass'];
echo '<br/>';
echo 'Voici votre adresse email : '.$ech['email'].'<br/>';
echo '<a href="logout.php">Se déconnecter</a>'
}
?>
Mais ça ne fonctionne pas, je sais pas pourquoi? peut-être qu'il manque quelque chose ou ya quelque chose de plus!!

Merci d'avance Notre  <:)  :#1:  :D
Cordialement  ;)

ybouane
26/06/2010 à 16:48:32
ybouane
Admin
Bonjour,
Peut-tu me donner aussi le code de la page connexion.

Cordialement :)

Image
Aglzime
26/06/2010 à 19:05:25
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Oui bien sur ,
Voici la partie PHP de la page "Connexion.php" :
<?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 */
    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
    $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
   

    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$pass))
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "******";
         $database = "******";
         $username = "*******";
         $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
         $nom = mysql_real_escape_string($pseudo);
         $password = mysql_real_escape_string($pass);
   
   
         /* Requête pour récupérer les enregistrements répondant à la clause :
         champ du pseudo et champ du mdp de la table = pseudo et mdp postés dans le formulaire*/
        $requete = "SELECT * FROM membres WHERE pseudo = '".$nom."' AND pass = '".$password."'";  
   
         // 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);

         // Les valeurs (si elles existent) sont retournées dans le tableau $resultat;
         if (isset($resultat['pseudo'],$resultat['pass']))  
               {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de visiter les pages protégées.  */
                 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 = 'Bonjour '.htmlspecialchars($_SESSION['login']).' <a href = "destin1.php">Cliquez ici pour vous connecter</a>';?>
                                 <script language="JavaScript">
document.location.href="destin1.php";
</script>
<?php
                }
                else
                {   // Le pseudo ou le mot de passe sont incorrect
                $message = 'Le pseudo ou le mot de passe sont incorrect';
                }

    }
    else
    {  //au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
    $message = 'Les champs Pseudo et Mot de passe doivent &ecirc;tre remplis.';
    }
}
?>
ET en bas de ce code, se trouve le formulaire avec les champs ( Pseudo et Mot de passe);

Cordialement  ;)

ybouane
27-06-2010 à 05:26:42
ybouane
Admin
Bonjour,
Ton code contient plein de failles de sécurité et il est mal fait, parce que:
  • Le mot de passe doit être enregistré dans les sessions lui aussi.
  • La page du profil doit vérifier le pseudo et mot de passe (ils doivent être dans les sessions) avant de donner les informations sur le membre, sinon, quelqu'un pourrait retrouver les informations des utilisateurs(qui sont supposées être confidentielles)
  • La variable $_SESSION['logged'] n'existe pas et ne sert à rien.
  • Dans la connexion tu enregistre le pseudo dans $_SESSION['login'] et dans le profil tu essaye de le récupérer avec $_SESSION['pseudo']
  • $_SESSION['id'] elle aussi n'existe pas.

Désolé, mais le code que tu m'a donné n'est pas bien fait, regarde sur google, il y a plein de tutoriels avec des scripts tout faits:
http://www.google.fr/search?q=cr%E9er+un+espace+membre+en+php

Cordialement :)

Image
Aglzime
27/06/2010 à 12:01:33
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
J'ai suivi le tuto' du site du zéro ,
mais je me suis planter dans quelque chose, bref rien qui marche, sa serait bien qu'ils mettent le script dans une archive "ZIP" à la fin du tuto. Pour des débutants comme moi. Dans leur tuto ya des code, je ne sais pas dans quel page faut les mettre!!
Merci de ton aide quand même, ça me donne envie d'abondonner tellement ça rend fou!!

Cordialement  ;)

Aglzime
27/06/2010 à 14:07:45
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Une erreur s'est produite <strong>Veuillez signaler le bug dans le forum de bugs</strong><br /><strong>Si vous ne pouvez pas, </strong> contactez nous par le formulaire de contact.

ybouane
28-06-2010 à 05:32:21
ybouane
Admin
Bonjour,
ce dernier code est meilleur, donc voila le code pour la page membre.php:
<?php
session_start();//Si tu ne l'a pas déjà fait
include("connectmysql.php");
$sql = mysql_query("SELECT * FROM membres WHERE pseudo = '".$_SESSION['pseudo']."'");
$ech = mysql_fetch_array($sql);
echo 'Voici votre pseudo : '.$ech['pseudo'];
echo '<br/>';
echo 'Voici votre mot de passe : '.$ech['pass'];
echo '<br/>';
echo 'Voici votre adresse email : '.$ech['email'].'<br/>';
echo '<a href="logout.php">Se déconnecter</a>'
?>

Cordialement :)

Image
Aglzime
28-06-2010 à 18:50:20
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Merci beaucoup ! ça fonctionne !! ;)
Résolu,
Désolé d'avoir été lourd!!!  -_-
Cordialement  ;)

Pages: 1