Pages: 1
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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:
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
|
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
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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
|
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
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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
|
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
}
?>
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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!!! :meilleur:
Amicalement
|
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
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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;
}
}
?>
|
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('&','&',$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
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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
Cordialement
|
Admin
|
Bonjour,
Peut-tu me donner aussi le code de la page connexion.
Cordialement
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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 être remplis.';
}
}
?>
ET en bas de ce code, se trouve le formulaire avec les champs ( Pseudo et Mot de passe);
Cordialement
|
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
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
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.
|
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
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !
Membre
|
Merci beaucoup ! ça fonctionne !!
Résolu,
Désolé d'avoir été lourd!!!
Cordialement
|
Pages: 1
|