Se connecter / S'enregistrer
Votre question

Pb php/mysql espace membre avec session

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
11 Janvier 2010 19:57:58

Bonsoir,
Je vient de créer un espace membre avec session, bdd... qui fonctionne très bien.
Mon problème est que ma page d'inscription ne reconnait pas les utilisateurs déja enregistré, ce qui fait que l'on peut créer plusieurs compte avec le même pseudo.
Si qqn peut m'aider plz

Hébergeur : free
Bdd : 7 champs ( ID , Utilisateur , Pass , Mail , Verif , Ip , level )
Code source :
Formulaire :
<form action="login.php" method='post'>
<table width="474" border="0">
<tr>
<td width="236" height="46"> </td>
<td width="228">Veuillez vous identifier </td>
</tr>
<tr>
<td height="46">Login</td>
<td>

<input type="text" name="login">
</td>
</tr>
<tr>
<td height="44">Pass</td>
<td>

<input type="password" name="password">
</td>
</tr>
<tr>
<td><input type="hidden" name="mail" value="cache"></td>
<td>
<input type="submit" name="Submit" value="Envoyer...">
</td>
</tr>
<tr>
<td></td>
<td><a href="form_inscrip.php">S'inscrire</a></td>
</tr>
</table>
</form>


Traitement :

<?
include("../includes/sql.php");
$login=$_POST["login"];
$password=$_POST["password"];
$mail=$_POST["mail"];
$login=strtolower($login);
$password=strtolower($password);
$mail=strtolower($mail);

if($login=="" || $password=="" || $mail=="")
{
echo '<script language=javascript> alert ("Vous avez oublié de remplir un champs");</script>';
include('form_inscrip.php');
exit;
}

$sql="SELECT utilisateur FROM membre WHERE utilisateur=\"$login\"";
$req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data=mysql_fetch_array($req);

if($data['utilisateur']==$login)
{
echo "<script language=javascript> alert (\"Ce pseudo est déja utilisé !\");</script>";
include("form_inscrip.php");
exit;
}
else
{
$req2=mysql_query("INSERT INTO membre VALUES('','$_POST[login]','$_POST[password]','$_POST[mail]','','','')");
echo '<script language=javascript> alert ("Vous êtes correctement enregistré !");</script>';
echo 'Vous devez maintenant valider votre inscription grâce au mail qui vous à été envoyé !';
exit;
}


?>

Merci de me signaler mes erreurs

Autres pages sur : php mysql espace membre session

11 Janvier 2010 20:46:49

Normalment il est préférable de donner la structure complète de ta table. Mais tu n'as qu'à rajouter une contrainte d'unicité sur le champs pseudo. A l'insertion d'un nouveau membre avec le pseudo cela échouera lamentablement.

  1. CREATE TABLE membres (
  2. id SMALLINT(5) NOT NULL AUTO_INCREMENT UNSIGNED,
  3. pseudo VARCHAR(100) NOT NULL UNIQUE,
  4. ...
  5. ...
  6. PRIMARY KEY(id)
  7. )


Et maintenant il est impossible d'avoir 2 fois le même pseudo dans la base.

Par contre ton code n'est pas sécurisé et plante lamentablement si une personne rajoute un ' dans son pseudo. Le pire c'est que tu affiches le message d'erreur avec la requête sql ce qui permet en moins de 10 secondes d'effacer dans l'intégralité ton site et également d'afficher login/password de l'ensemble de tes membres ...

Pour le mot de passe, il faut qu'avant de le stocker tu utilises la méthode sha1() (de préférence) ou md5(). Ainsi même si le mot de passe est volé, on ne peut le connaitre. Par contre on peut comparer la sortie de la chaine md5() qui est toujours égale. Je te laisse te documenté sur le sujet.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS