Actualité informatique
Test comparatif matériel informatique
Jeux vidéo
Astuces informatique
Vidéo
Télécharger
Services en ligne
Forum informatique
01Business

|-  INTERNET


|||-  

[php][resolu] inscriptions automatiques pour mon site

 

27 utilisateurs inconnus
Ajouter une réponse
 

 
Page photos
 
     
Vider la liste des messages à citer
 
 Page :
1
Auteur
 Sujet :

[php][resolu] inscriptions automatiques pour mon site

Prévenir les modérateurs en cas d'abus 
shiter
shiter
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 03/02/2007 à 12:45:24  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjours,

 J'en appelle à ceux qui ont fait du php toute leur vie :D ,
 j'aimerais savoir comment faire pour qu'on puissent s'inscrire sur mon site, je voudrais :

 -Que la personne qui s'inscrit choisisse son pseudo et son mot de pass
 -Via un formulaire, si son mot de pass et son pseudo "concordent" elle peut acceder à une page "personnel"(en gros je ne veut pas que "patate" et "ketchup" soient inscrits et accèdent à la même page)


 Voila ce que j'ai commencer à pondre :

 Page pour s'inscrire (inscription-formulaire.php) :

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/D​TD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/​xhtml" xml:lang="fr">
  <head>
  <title></title>
  </head>
  <body>

 <center>inscription</center>
 <form action="inscription.php" method="post">
 <fieldset>
 <legend><strong>Minitchat</str​ong></legend>

 Pseudo : <input type="text" name="pseudo" />
 <br />
 mot de passe :  <input type="text" name="pass" rows="50" />
 <br />

 <br />
 <input type="submit" value="Envoyer" />
 </fieldset>
 </form>

 </body>
 </html>

 ------------------------------​------------------------------

 Page ou sont envoyés les données de l'inscription c'est-à-dire le pseudo et le pass(inscription.php) :

 <?
 $pseudo_choisi = $_POST['pseudo'];
 $pass_choisi = $_POST['pass'];

  //connection
  mysql_connect("localhost","roo​t","root" );
  mysql_select_db("exo" );  
   
   mysql_query("INSERT INTO inscription VALUES('', '$pseudo_choisi', 'pass_choisi')" );
 ?>

 ------------------------------​-----------------------------

 page principale, en gros, là ou il y a le formulaire pour entrée dans sa page quand on est inscrit(entree.php) :

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/D​TD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/​xhtml" xml:lang="fr">
  <head>
  <title></title>
  </head>
  <body>

 <center>ENTREE</center>

 <form action="acces.php" method="post">
 <fieldset>
 <legend><strong>Minitchat</str​ong></legend>

 Pseudo : <input type="text" name="pseudo" />
 <br />
 mot de passe :  <input type="text" name="pass" rows="50" />
 <br />

 <br />
 <input type="submit" value="Envoyer" />
 </fieldset>
 </form>

 </body>
 </html>

 ------------------------------​------------------------------

 Page qui suit le formulaire de entree.php, pour rentrer dans ses pages(acces.php) :

 <?
 $confirmation_pseudo = $_POST['pseudo'];
 $confirmation_pass = $_POST['pseudo'];

  //connection
  mysql_connect("localhost","roo​t","root" );
   mysql_select_db("exo" );
   
    $la_sentense_de_sql = mysql_query("SELECT * FROM inscription" );
     
       
      $donnee = mysql_fetch_array($la_sentense​_de_sql);

//C'est là ou ça coince, j'ai repris tous les mots de pass et tous les pseudo de ma

//table, maintenant, que faire pour que la page ne s'ouvre seulement si un

//pseudo va avec un mot de pass et pour que ça ouvre une page qui n'est pas la

//même que les autres membres ?
 ?>

 ------------------------------​------------------------------​--

 Bon peut-être que j'ai coder n'importe comment dès le début mais j'espere avoir beaucoup de réponses.

 Merci d'avance :jap:


---------------
Yeaaaaaar le site innove, venez tous !!! XD
guiii
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 03/02/2007 à 18:43:30  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Salut,

 
  • Point 1 : dans tes pages inscription-formulaire.php et entree.php, dans le formulaire, le champs du mot de passe doit être de type password et non text.

 



<input type="password" name="pass" rows="50" />



 ça évite d'afficher directement le mot de passe à l'écran quand tu le tapes : ça le remplace par des étoiles.


 

  • Point 2 : Dans ta page inscription.php, avant d'affecter à $pseudo_choisi et $pass_choisi les valeurs des variables envoyées par le formulaire, tu dois vérifier que ces variables existent bien !
On fait cela grâce à la fonction isset
 



<?
 if (isset($_POST['pseudo'], $_POST['pass']))
 {

  $pseudo_choisi = $_POST['pseudo'];
  $pass_choisi = $_POST['pass'];
 }
 else
 {
  // échec
 }
 

 





 

  • Point 3 : Il ne faut pas insérer tel quel les variables dans ta base de données, tu risques des injections sql !
Tu dois vérifier la valeur de l'option magic_quotes_gpc : si cette option est activée, php rajoute automatiquement les caractères d'échappement, sinon il faut les ajouter toi-même.
 



if (!get_magic_quotes_gpc()) {

$pseudo_choisi = addslashes($pseudo_choisi);

$pass_choisi = addslashes($pass_choisi);
 }



 c'est à faire avant d'effectuer ta requête, évidemment.

 

  • Point 4 : Dans ta page acces.php, c'est la même chose : il faut vérifier que les variables transmises par le formulaire existent bien (fonction isset) et faire attention aux injections sql (même méthode que juste au-dessus).

 
  • Point 5 :



    $la_sentense_de_sql = mysql_query("SELECT * FROM inscription" );


Non, faut pas faire ça.
 Il faut faire une requête du type :
 



$la_sentense_de_sql = mysql_query("SELECT * FROM inscription WHERE pseudo='$confirmation_pseudo'" );



 ça n'est pas la peine de prendre ta liste entière d'utilisateurs.
 (nb : en adaptant pseudo au véritable nom du champs contenant tes utilisateurs dans ta base de données)

 Ensuite tu vérifies que le mot de passe est correct :
 



if ($confirmation_pass != $donnee['password'])
 {
  // échec !
 }
 else
 {
  // réussite !
 }



 (nb : en adaptant password au véritable nom du champs contenant les mots de passe dans la base de données)

 Pour traîter la réussite ou l'échec de l'identification :
 Si l'identification échoue, tu peux afficher un message d'erreur suivi d'une redirection vers la page d'accueil.

 Si l'identification réussit, l'utilisateur a accès à la page...


 ps : tu ne devrais pas garder en clair les mots de passe dans la base de données. Tu devrais les hachés, c'est beaucoup plus sécurisé.

(Publicité)
shiter
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 04/02/2007 à 17:13:49  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Pour le isset, il n'y en a pas besoin puisque c'est sur une autre page.

 Pour le formulaire type password, ce n'est qu'un détail, pour l'instant, je veux juste que ça marche :D , et après j'essayerais de voir comment hacher les pass (de toute façon ce n'est pas important pour ce que je veux faire ^^)


 Bon ensuite, je ne comprend pas le point 3, qu'est-ce que !get_magic_quotes_gpc ? A quoi sert il ?!


 Au point 5, je trouve ça bizard :

 



 
 $la_sentense_de_sql = mysql_query("SELECT * FROM inscription WHERE pseudo='$confirmation_pseudo'"​);

 //En haut c'est ok

 $donnee = mysql_fetch_array($la_sentense​_de_sql);

 /*Par contre, je n'ai appellé que "pseudo" et pas "password", donc le code du bas devrait être faux ?!
 Et même Si je l'avais appellé, ça ne demande pas si le pass va avec le pseudo, en gros on pourais rentrer dans le compte de nimporte qui avec n'importe quel pass qui se trouve dans la table de mysql ?!
 */

 if ($confirmation_pass != $donnee['password'])
 {
 // échec !
 }
 else
 {
 // réussite !
 }
 




 Merci j'attent une autre réponse de ta pare pour pouvoir finir mon code  :D


---------------
Yeaaaaaar le site innove, venez tous !!! XD
guiii
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 04/02/2007 à 21:24:57  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

shiter a écrit :

Pour le isset, il n'y en a pas besoin puisque c'est sur une autre page.



 Aucun rapport, que ça soit sur la même page ou non, une vérification de la variable est nécessaire. Soit par un isset, soit par un empty.

 



Bon ensuite, je ne comprend pas le point 3, qu'est-ce que !get_magic_quotes_gpc ? A quoi sert il ?!



 Qu'est-ce que magic_quotes_gpc
 Utilité de la fonction get_magic-quotes_gpc


 



/*Par contre, je n'ai appellé que "pseudo" et pas "password", donc le code du bas devrait être faux ?!
 Et même Si je l'avais appellé, ça ne demande pas si le pass va avec le pseudo, en gros on pourais rentrer dans le compte de nimporte qui avec n'importe quel pass qui se trouve dans la table de mysql ?!
 */



 Non ! Tu as appellé les valeurs de tous les champs de ta table (SELECT *) sur la ligne où le champs pseudo est égal à la valeur de ta variable $confirmation_pseudo (WHERE pseudo='$confirmation_pseudo').

 On vérifie donc que pour UN pseudo donné, on a bien le mot de passe qui correspond.

shiter
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 05/02/2007 à 18:07:35  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

Guiii a écrit :

 
 Aucun rapport, que ça soit sur la même page ou non, une vérification de la variable est nécessaire. Soit par un isset, soit par un empty.
 




 Ba j'ai pourtant apris ça sur le site du zero et ça marche d'ailleur très bien

 ------------------------------

 D'après ce que j'ai compris, le get_magic_quotes_gpc sert à mettre des antislash là ou il faut donc pour l'instant, c'est pas indispensable pour faire marcher mon code (mais merci quand même du conseil :bien: )

 ------------------------------

 Mon code ne marche toujours pas sur la page acces.php, j'ai mis 2 pseudo qui vont avec 2 mot de pass dans mysql.

 Entree.php :
 



 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/D​TD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/​xhtml" xml:lang="fr">
  <head>
  <title></title>
  </head>
  <body>

 <center>ENTREE</center>

 <form action="acces.php" method="post">
 <fieldset>
 <legend><strong>Minitchat</str​ong></legend>

 Pseudo : <input type="text" name="pseudo" />
 <br />
 mot de passe :  <input type="text" name="pass" rows="50" />
 <br />

 <br />
 <input type="submit" value="Envoyer" />
 </fieldset>
 </form>

 </body>
 </html>
 





 acces.php
 



 
 <?
 $confirmation_pseudo = $_POST['pseudo'];
 $confirmation_pass = $_POST['pseudo'];

  //connection
  mysql_connect("localhost","roo​t","root" );
   mysql_select_db("exo" );
   
    $la_sentense_de_sql = mysql_query("SELECT * FROM inscription WHERE pseudo = '$confirmation_pseudo'" );
     
       
      $donnee = mysql_fetch_array($la_sentense​_de_sql);
       
      if ($confirmation_pass != $donnee['pass'])
      {
      echo ("Movais mot de pass" );
      }
       
      else
      {
      echo ("bon mot de pass" );
      }
 ?>
 





 Les symptomes : ça m'affiche toujours movais mot de pass

sauf quand je laisse vide le formulaire.

 Bonsoir :jap:


---------------
Yeaaaaaar le site innove, venez tous !!! XD
(Publicité)
guiii
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 05/02/2007 à 18:43:47  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
ça ne risque pas de marcher :
 



$confirmation_pseudo = $_POST['pseudo'];
 $confirmation_pass = $_POST['pseudo'];




 un $confirmation_pass = $_POST['pass']; serait mieux ;)



 



Ba j'ai pourtant apris ça sur le site du zero et ça marche d'ailleur très bien



 Un lien vers la page où ils te disent ça ?

 Le Site du Zéro est très bien pour apprendre les bases, mais il comporte quelques erreurs ou mauvaises recommandations, malheureusement :/  


 



D'après ce que j'ai compris, le get_magic_quotes_gpc sert à mettre des antislash là ou il faut donc pour l'instant, c'est pas indispensable pour faire marcher mon code



 Penses-y quand même. Sinon tu risques de te prendre des injections sql dans les dents.
 Même si la plupart des hébergeurs laissent cette option à 1, c'est une bonne manie à prendre que de la vérifier systématiquement.

shiter
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 06/02/2007 à 20:25:51  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
C'est bon ça marche !! Merci beaucoup de ton aide !

 Par contre pour le lien, je cherche encore ^^ mais je sais que j'ai vu qu'il n'y a pas besoin de isset quelque part.

 Merci encore pour tes conseils bonne soirée :bien:  :salut:


---------------
Yeaaaaaar le site innove, venez tous !!! XD
 Page :
1

Aller à :
 

Sujets relatifs
Pas de detection wifi Plus de stats chez mon hébergeur Online [Résolu]
site orange résilié, qui apparait toujours sur moteur de recherche [Résolu]-Cherche conseils SVP pour les Contrôles ActiveX
[Résolu]-SVP Quels sont les paramètres de Bouygues dans O.Express sim absent sur tel portable [résolu).
comment afficher une page d'accueil? (Résolu) Faut-il arrêter la "FREEBOX" RESOLU
RÉSOLU - format fichier image png >< jpg [Résolu ]Problèmes sur Oulook avec W7 suite changement FAI
Plus de sujets relatifs à : [php][resolu] inscriptions automatiques pour mon site

Les 5 sujets de discussion précédents Nombre de réponses Dernier message
effacer un blog [resolu] 12
MSN . Blog spaces live [résolu] 2
Création d'un site ! 24
CSS & IE 2
Erreur transfert pages site sur internet 9