Inscription / login

Mammouth du PHP | 965 Messages

18 févr. 2006, 10:11

Je me posais la question du : Comment faites vous les enregistrement / login pour votre site ?

Car je commence a apprendre le SQL un peu a la vas vite, et je dois faire cette partie la sur mon site, alors pour l'instant tout se passe bien l'inscritpion etc mais je me disais que ma methode etait peut être un peu "a l'arrache".

Alors je me demandais si vous utilisiez quelque chose en particulier comme un script que vous changiez pour chaque site ou alors chaque site a son script d'inscription ?

Parce que la a pars demander le pseudo et le mot de passe que j'inscrit sur ma base de donnée je vois pas quoi rajouter d'autre et surtout je vois pas comment par exemple faire une confirmation par email de l'inscription.

Et aussi je me demandais pour verrifier les champs qui ont été enregistrer si vous utilisiez plutôt Javascript, PhP ou autres ...

Je sais pas si sa a sa place ici, alors si un moderateur veux bouger sa np.

TchOos

Mammouth du PHP | 19672 Messages

18 févr. 2006, 12:53

Les échanges avec une base de données se font exclusivement en SQL : donc ta question a sa place ici. Là où on utilise les autres langage, c'est pour créer ces requêtes ou en récupérer le résultat et l'afficher.

Pour ce qui est de ta question de départ, je dirais que tu te poses peut-être le problème à l'envers: ne te demande pas ce que la base de données te permet de faire pour ton application, demande toi ce dont tu as besoin pour ton application qui doit être créé dans ta base de données. Réfléchis toujours par rapport à ce que tu veux obtenir.

Prenons un exemple : tu veux une confirmation de l'inscription par courriel : de quoi as-tu besoin pour mettre ça en place ?
  1. Il faut que l'inscription ait eu lieu;
  2. Il faut que tu puisses distinguer les inscription qui ont déjà été confirmées de celles qui ne le sont pas encore;
Sur cette base, que faut-il mettre en place ? Une idée consisterait à avoir parmi les informations enregistrées dans la base cette information-là qui te permet de savoir :arrow: un champ confirme de type ENUM('oui','non') et à l'enregistrement, tu mettras par défaut la valeur "non".
Ensuite il faut déclencher la mise à jour : il faut donc commencer par envoyer le courriel de confirmation. Dans ce courriel, il faut un lien clicable vers une page de confirmation qui va contenir le code permettant la mise à jour du champ en changeant la valeur "non" en "oui" par une requête UPDATE.

C'est pas nécessairement très compiqué, mais il faut imaginer les scénarios de ce qui se passe et doit se passer. Ensuite, quand tu as défini tout ça, il te reste à développer l'application.

C'est un peu comme les échecs : si tu veux obtenir telle situation, tu dois réfléchir à quelles pièces tu vas devoir bouger, les conséquences de ces mouvements et en fonction de ces conséquences adapter les mouvements pour arriver exactement à la situation voulue.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 965 Messages

18 févr. 2006, 12:58

On est d'accords mais ne connaissant pas forcement les elements me permettant de faire ceci et ne sachant pas s'il existe quelque chose pour faire tel element directement ou pas j'avance a taton !

Je fais tout au fur et a mesur et j'ameliore même si c'est pas forcement la bonne solution !

En fait lors de l'enregistrement je voudrais faire en sorte qu'un nom déjà dans la base ne puisse être mis a nouveau et affiche une erreur pareil pour un email etc, mais comment faire sa ? en envoyant le fomulaire sur un script qui ouvre ma BDD et regarde si sa existe ? c'est possible ?

Je debute vraiment et ces elements me manque a la comprehension et l'organisation de mon script, et n'ayant plus forcement le temps de chercher sur le net je me permet de vous demander directement, alors merci Cyrano pour ton aide sa me fais gagner un temps precieux :wink:

Mammouth du PHP | 19672 Messages

18 févr. 2006, 13:06

Tu ne pourras connaitre l'existence d'une donnée dans la base qu'en la consultant : donc avant d'exécuter une requ^te d'insertion, tu vas devoir effectuer une première requête SELECT pour chercher la présence d'une valeur particulière dans un champ déterminé, par exemple, une adrese de courriel dans un champ courriel de ta table : selon le retour obtenu, tu exécute la requête d'insertion ou tu affiche un message et le formulaire en invitant l'internaute à corriger sa saisie.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 965 Messages

19 févr. 2006, 12:35

Bon alors je fais un script du type :

Code : Tout sélectionner

<? if($password==$password2) // Verrifier les 2 mot de pass { require ("connect.php"); $sql = "INSERT INTO art (nom,mdp,email,confirme) VALUES ('".$pseudo."','".$password."','".$email."','non')"; $test = mysql_query($sql) or die("erreur ! mysql_error()"); }else{ header("location:inscription.php?erreur"); } ?>
Ok mais maintenant je voudrais qu'il verrifie si les nom et email existent déjà !

ensuite je vois pas comment creer un mail a partir de la, a pars en mettant un <href ou un mailto
:roll:

Bref je bloque un peu a partir de la !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 févr. 2006, 16:46

Ok mais maintenant je voudrais qu'il verrifie si les nom et email existent déjà !
Pour cela tu dois effectuer une requete de séléction avec le nom et l'email et verifier si tu as un retour avec mysql_num_rows().

Si oui les ils existent déjà sinon tu peux enregistrer dans la base les nouveau identifiants.
ensuite je vois pas comment creer un mail a partir de la, a pars en mettant un <href ou un mailto
:roll:
avec la fonction mail() tu trouveras des sujet l'utilisant sur le forum :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

19 févr. 2006, 18:23

ok alors j'ai fais sa !
<?

require ("connect.php");

$pseudo=$_POST['pseudo'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$email=$_POST['email'];
$email2=$_POST['email2'];

$ress=mysql_query("SELECT * FROM `art` WHERE nom='$pseudo' and email='$email' ");
$existe=mysql_numrows($ress);

if($pseudo!=" " && $password!=" " && $password2!=" " && $email!=" " && $email2!=" ")
{

	if($password==$password2 && $email==$email2)
		{

			if(!$existe)
				{

				$sql = "INSERT INTO art (nom,mdp,email) VALUES ('".$pseudo."','".$password."','".$email."')";

				$test = mysql_query($sql) or die("erreur ! ".mysql_error());

				
				echo "<br>Votre nom a été ajouté a la base de donnée";
				}

		}
}else{
header("location:inscription.php?erreur");
}
		



	

?>
le problème c'est qu'il ne me renvois pas forcement l'erreur si sa ne marche pas des fois j'ai un ecran tout blanc c'est vraiment très aleatoire.

Avez vous une idée ? :roll:

Mammouth du PHP | 965 Messages

19 févr. 2006, 18:24

oops !

c'etait moi juste au dessus oublié de me log

ViPHP
ViPHP | 3607 Messages

19 févr. 2006, 18:30

remplace
header("location:inscription.php?erreur"); 
par
header("Location: inscription.php?erreur");//il manquai un espace

Mammouth du PHP | 965 Messages

19 févr. 2006, 18:33

non sa change rien car lorsque je valide sa alors que tout les champs sont blanc ils m'envoie sur une page blanche sans raison je vois pas trop pourquoi.

Edit: ou alors il m'indique que l'enregistrement se deroule avec succes :o

alors la j'y comprends plus rien

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 févr. 2006, 19:24

il manque un _ a mysql_num_rows()

tu teste si les champs conteinnent 1 espace:
if($pseudo!=" " && $password!=" " && $password2!=" " && $email!=" " && $email2!=" ") 
remplace par:
if($pseudo!="" && $password!="" && $password2!="" && $email!="" && $email2!="") 
ou encore avec empty()

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 965 Messages

19 févr. 2006, 20:10

merci beaucoup sa marche maintenant :D

je pense que c'est le meilleur moyen de verrifier les champs apres si l'utilisateurs a mis n'importe quoi je peux pas vraiment savoir je supprimerais a la main.

Mais franchement merci maintenant sa marche !

Mammouth du PHP | 965 Messages

19 févr. 2006, 20:13

par contre il continue de me renvoyer sur une page blanche lorsque les nom ou email existent déjà, donc je vois pas trop comment faire a moins de rajouter un else a chaque fois suivis d'un header ...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 févr. 2006, 20:35

a moins de rajouter un else a chaque fois suivis d'un header ...
bonne voie:
$erreur = 0;

if($pseudo!="" && $password!="" && $password2!="" && $email!="" && $email2!="")
{

    if($password==$password2 && $email==$email2)
        {

            if(!$existe)
            {

                $sql = "INSERT INTO art (nom,mdp,email) VALUES ('".$pseudo."','".$password."','".$email."')";

                $test = mysql_query($sql) or die("erreur ! ".mysql_error());

                
                echo "<br>Votre nom a été ajouté a la base de donnée";
             }
             else
                  $erreur = 1;
        }
        else 
           $erreur = 1;
}
else
{
   $erreur = 1;
} 
if($erreur);
   header("location:inscription.php?erreur");

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 965 Messages

19 févr. 2006, 21:04

parfait !

Maintenant je me dis que j'aimerais renvoyer un texte different a chaque erreur par exemple si le nom est déjà existant retourner "Nom existant" ainsi de suite pour l'email ou le reste.

Alors je me demande, faut il faire les verrifications sur la page même ? ou alors je peux renvoyer a partir de mon script existant ?

Je cherche pas forcement un code tout mais comprendre logiquement ce qui serait le mieux !