Espace membre

Fermé
ajpgerm Messages postés 5 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 16 février 2009 - 16 févr. 2009 à 13:03
silentData Messages postés 183 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 18 octobre 2013 - 16 févr. 2009 à 13:57
Bonjour,
voila cela fait quelque jours que je bosse sur un site
je veux etblir un espace mbre mais je rencontre un obstacle
rentrons dans le but du sujet;
voici mon code inscription.php:
<?php
session_start();
?>
<?php
//on teste si le visiteur a soumis le formulaire d'inscription
if(isset($_POST['inscription']) && $_POST['inscription'] == 'inscription');
{
//on teste l'existence de nos varibles.
//on teste egalement si elles ne sont pas vides
if((isset($_POST['login']) && !empty($_POST['login'])) &&
(isset($_POST['pass']) && !empty($_POST['pass'])) &&
(isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm'])) &&
(isset($_POST['mail']) && !empty($_POST['mail'])))
{
//on teste les deux mots de passe
if($_POST['pass']!=$_POST['pass_confirm'])
{
$erreur='les deux mots de passe sont differents';

}
else{
include("mysql_connect.php");
//on recherche si ce login est deja utilise par un autre membre
$sql='SELECT count(*) 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);
mysql_free_result($req);
if($data[0] == 0)
{
$sql='INSERT INTO membre VALUES("","'.mysql_escape_string($_POST['login']).'"
"'.md5(mysql_escape_string($_POST['pass'])).'","'.mysql_escape_string($_POST['mail']).'")';
mysql_query($sql) or die('Erreur SQL!<br>'.$sql.'<br>'.mysql_error());
mysql_close();

$_SESSION['login'] = $_POST['login'];
header("location:membre.php");
exit();
}
else
{
$erreur='Un membre possede deja ce login.';

}
}
}
else{
$erreur='Au moins un des champs est vide.';

}
}
?>
********************************************************************************************
********************************************************************************************
ensuite voici le code connexion.php:
<?php
session_start();
?>
<?php

// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion')
{
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])))
{

include("mysql_connect.php");
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND
pass="'.md5(mysql_escape_string($_POST['pass'])).'"';
$req = @mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = @mysql_fetch_array($req);
// si on obtient une réponse, alors l'utilisateur est un membre
if (mysql_num_rows($req)==1)
{
$_SESSION['login']=$_POST['login'];
echo "<script language='javascript'>document.location='membre.php'</script>";

}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif (mysql_num_rows($req)==0)
{
$erreur = 'Compte non reconnu. Veillez vous inscrire';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Probè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.';
}
}
?>
********************************************************************************************
*******************************************************************************************
le code mysql_connect.php:
<?php
// SERVEUR SQL
mysql_connect("localhost", "root", "");
mysql_select_db("anohjp");
?>
*******************************************************************************************
******************************************************************************************
code membre.php:

<?php
session_start();
?>
<?php
if ((!isset($_SESSION['login'])) || ($_SESSION['login'] == ''))
{
// La variable $_SESSION['login'] n'existe pas, ou bien elle est vide
// <=> la personne ne s'est PAS connectée
echo '<p>Vous devez vous <a href="connexion.php">connecter</a>.</p>'."\n";
exit();
}
?>
******************************************************************************************
******************************************************************************************
enfin ma base de donnee:
id int(11) auto_increment
login varchar(20)
pass varchar(20)
mail varchar(20)
..............................................................................................................................................................
..............................................................................................................................................................
premierement
le probleme que je rencontre est que lorsque je m'inscris voici l'erreur qui s'affiche:

Erreur SQL!
INSERT INTO membre VALUES("","anohjp" "e15b52dea77b4f3b6ef05c26bc1faf01","anohjpg@yahoo.fr")
Column count doesn't match value count at row 1

Deuxiement
sans etre inscrit et que je me connecte la page membre s'ouvre ce qui n'est pas normal;elle doit s'ouvrir si le visiteur est inscrit.



alors j'implore votre pardon de bien vouloir m'aider a trouver la solution
A voir également:

3 réponses

silentData Messages postés 183 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 18 octobre 2013 40
16 févr. 2009 à 13:35
Alors pour le premier problème, je ne suis pas sur, mais ta requete devrait plutot recemblé a ca :

INSERT INTO membre(id, nom, password, email) VALUES ('','anohjp' 'e15b52dea77b4f3b6ef05c26bc1faf01','anohjpg@yahoo.fr')

Spécifie les champs dans lesquelles tu veux insérer une valeur (Il me semble que c'est obligatoire) et autrement le caractère d'encapsulation en SQL est ' et non pas ".

Pour le 2ème, si une fois tu as créé les variables de session, tu dois fermer l'explorateur et le rouvrir pour killer la session. Changer de page ou rafraichir te gardera tes variables de session en mémoire...

J'espère avoir pu t'aider ;)
0
ajpgerm Messages postés 5 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 16 février 2009
16 févr. 2009 à 13:49
merci pour ta reponse mais le probleme persiste toujours

fermer l'explorateur et le rouvrir pour killer la session:comment ca se passe
merci
0
silentData Messages postés 183 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 18 octobre 2013 40
16 févr. 2009 à 13:57
Si tu es sur ton site (disons http://127.0.0.1/index.php) et que ta variable de session (login) est créée, elle sera stockée. Si tu fais F5, et que tu recharge ta page index.php, la variable de session login existera toujours. Pour qu'elle n'existe plus, tu dois soit killer la session (fonction session_kill() ou session_stop() un truc comme ca) soit fermer ton explorateur et le rouvrir...

Après par rapport à ta requête, j'avais pas vu que tu avais donné la structure de ta table... Enfait comme ID est en auto_increment, tu ne dois pas le spécifié :

INSERT INTO membre(login, pass, mail) VALUES ('anohjp' 'e15b52dea77b4f3b6ef05c26bc1faf01','anohjpg@yahoo.fr')

Voilà ;)
0