login

Répondre
aquievreux
le 12/04/2010 à 11:49
aquievreux
Bonjour, j'ai un pb, je suis en train de créer un formulaire permettant de se logger pour un accés au site, cependant le code que j'ai trouvé et modifié comporte une erreur, car lors de la connexion le serveur internet s'arréte, cependant le login et mot de passe sont bien présent dans ma base de données.
Merci de m'aider c'est assez urgent.
Voici le code :

<?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']))) {

$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('djp', $base);

// 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="'.md5(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[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
//<p><strong>Vous êtes bien connecté !!!!</strong></p>
header('Location: deco.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 = '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.';
}
}
?>

<html>
<head>
<title>Accueil</title>
</head>

<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php

if (isset($erreur)) echo '<br /><br />',$erreur;
?>

<a href="formulaire.php?id=1"><p><strong>Bon d'intervention sur site : fiche à remplir</strong></p></a>

</body>
</html>
moogli
le 12/04/2010 à 17:10
moogli
yop,

même réponse que sur php deb

après test c'est le mysql_close qui plante le bouzion faut ajouter le lien vers la db pour corriger => mysql_close($base).

screeshot de l'erreur

@+
Il en faut peu pour être heureux !!!!!
aquievreux
le 12/04/2010 à 19:39
aquievreux
meme si je rappel la bdd il me fait le même pb il ne me charge pas l'accueil pour membre mais me raffiche a vide la page de connexion mais merci qd mm
moogli
le 13/04/2010 à 09:22
moogli
le seul renvoie vers une page c'est sur la page deco.php a voir ce qu'elle a dans le bide.
Il en faut peu pour être heureux !!!!!
aquievreux
le 13/04/2010 à 09:37
aquievreux
Pour moi aprés longue étude l'erreur viendrai d'ici :

<?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="'.md5(mysql_escape_string($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
//var_dump($data);
?>


Car lorsque j'effectue une inscription tout fonctionne bien, si je ne me deconnecte pas il retrouve le membre lors de l'identification. Cependant lorsque je me déconnecte, et que je cherche par la suite à réidentifier ce même membre il ne le trouve plus.
L'erreur viendrai t-elle de ma requête??
aquievreux
le 13/04/2010 à 09:43
aquievreux
J'ai modifié quelque petite chose dans le code le revoilà :

<?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']))) {

$base = mysql_connect ('localhost', 'root', '') or die(mysql_error());;
mysql_select_db ('djp', $base) or die(mysql_error());;

// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_real_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_real_escape_string($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
//var_dump($data);

mysql_free_result($req);
mysql_close($base);

// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
//<p><strong>Vous êtes bien connecté !!!!</strong></p>
header('Location: bienvenue.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 = '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.';
}
}

?>


<html> 
<head>
<title>Accueil</title>
</head>

<body>
Connexion a l'espace membre :<br />
<form action="bienvenue.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php

if (isset($erreur)) echo '<br /><br />',$erreur;
?>

<a href="formulaire.php?id=1"><p><strong>Bon d'intervention sur site : fiche a remplir</strong></p></a>


</body>
</html>
moogli
le 13/04/2010 à 09:57
moogli
hum fait voir le code de deconnection, y pas de raison que ton membre disparaisse de la base, si tu le trouve une fois il doit y rester !

@+
Il en faut peu pour être heureux !!!!!
moogli
le 13/04/2010 à 10:25
moogli
donc ton utilisateur est toujours en db, si tu te reconnect avec le même utilisateur et mot de passe ça doit fonctionner

essai de débugger c'est ta seul chance.

@+
Il en faut peu pour être heureux !!!!!
aquievreux
le 13/04/2010 à 10:30
aquievreux
oui il reste ds ma bdd cependant j'ai l'impression qu'il ne le retrouve pas, je ne trouve pas ma solution et ça m'énerve.
De plus je suis débutante j'ai commencé le php et html il y a une semaine dc je suis un peu perdue
Répondre
LoadingChargement en cours