le 01/12/2010 à 22:26
Problème connexion espace membre
Bonsoir,
Je souhaite créer un espace membre pour mon site, j'ai ainsi 4 pages php :
- index.php : qui demande le login/mdp a l'utilisateur s'il n'est pas inscrit : l'orienter vers inscription.php.
- inscription.php : qui demande a l'utilisateur de s'inscrire (login,mdp,mail...) et qui sauvegarde les données dans une base de donnée SQL,
- membre.php : page reservé au membre,
- deconnexion.php : pour se deconnecter.
Cependant je rencontre un petit problème: mes pages fonctionnent correctement mais quand je veux me connecter (sur la page index donc), impossible de s'authentifier "La connexion avec le serveur a été réinitialisée pendant le chargement de la page."
Sur la base de donnée les utilisateurs inscrits apparaissent bien.
Merci de votre aide. :)
Voici le code de la page index.php :
membre.php:
deconnexion.php
inscription.php
table sql :
Je souhaite créer un espace membre pour mon site, j'ai ainsi 4 pages php :
- index.php : qui demande le login/mdp a l'utilisateur s'il n'est pas inscrit : l'orienter vers inscription.php.
- inscription.php : qui demande a l'utilisateur de s'inscrire (login,mdp,mail...) et qui sauvegarde les données dans une base de donnée SQL,
- membre.php : page reservé au membre,
- deconnexion.php : pour se deconnecter.
Cependant je rencontre un petit problème: mes pages fonctionnent correctement mais quand je veux me connecter (sur la page index donc), impossible de s'authentifier "La connexion avec le serveur a été réinitialisée pendant le chargement de la page."
Sur la base de donnée les utilisateurs inscrits apparaissent bien.
Merci de votre aide. :)
Voici le code de la page index.php :
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ( !empty($_POST['login']) && !empty($_POST['pass'])){
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('test', $base);
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT * FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass="'.mysql_escape_string($_POST['pass']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
mysql_close();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[1] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data [0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
<html>
<head>
<title>Accueil</title>
</head>
<body>
<p align="center">
<font face="Verdana" size="2">
<h3>Connexion à l'espace membre </h3><br />
<form action="index.php" method="POST" id="Connexion">
<label>Login:<br><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"></label><br>
<label>Password:<br><input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"></label><br><br>
<input type="submit" name="connexion" value="Connexion">
<br><br>
<a href="inscription.php">Vous inscrire</a>
</form>
</font></p>
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
membre.php:
<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>
<html>
<head>
<title>Espace membre</title>
</head>
<body>
Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?>!<br />
<a href="deconnexion.php">Déconnexion</a>
</body>
</html>
deconnexion.php
<?php
session_start();
session_unset();
session_destroy();
header('Location: index.php');
exit();
?>
inscription.php
<?php
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ( !empty($_POST['login']) && !empty($_POST['pass']) && !empty($_POST['pass_confirm'])
{
// on teste les deux mots de passe
if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
else {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('test', $base);
// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT * FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
if ($data[0] == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string($_POST['pass']).'", "'.mysql_escape_string($_POST['mail']).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}
else {
$erreur = 'Un membre possède déjà ce login.';
}
}
}
else {
$erreur = "Assurez vous d'avoir rempli tout les champs.";
}
}
?>
<html>
<head>
<title>Inscription</title>
</head>
<body>
<font face="Verdana" size="2">
<h3>Inscrivez vous </h3>
<form action="inscription.php" method="post">
<TABLE BORDER=0 CELLSPACING=5>
<tr>
<label><td>Login : </td><td><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"></td><br /><br /></label>
</tr>
<tr>
</label><td>Mot de passe : </td><td><input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"></td><br /><br /></label>
</tr>
<tr>
</label><td>Confirmation du mot de passe : </td><td><input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"></td><br /><br /></label>
</tr>
<tr>
</label><td>Adresse mail : </td><td><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) echo htmlentities(trim($_POST['mail'])); ?>"></td><br /><br /></label>
</tr>
<td><input type="submit" name="inscription" value="Inscription"></td>
</form>
</font>
<?php
if (isset($erreur)) echo '<br />',$erreur;
?>
</body>
</html>
table sql :
CREATE TABLE membres_tbl (
id int(11) NOT NULL auto_increment,
login varchar(40) NOT NULL,
pass varchar(40) NOT NULL,
mail varchar(40) NOT NULL,
PRIMARY KEY (id),
);