Erreur à l'ouverture d'une session

nico3009 Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   -  
nico3009 Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai créé sur ma page index.php un formulaire d'identification pour ouvrir une session. J'ai créé également le fichier verifLogin.php. Ma table est composé de id, nom, prenom, pseudo, email, mdp.

mon problème est le suivant :
quand je veux m'identifier (je suis bien entendu dans ma table "utilisateurs"), j'ai le message suivant :

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/167/sdb/e/d/**********/verifLogin.php on line 11
Erreur SQL :
SELECT nom, prenom, pseudo, email, mdp FROM utilisateurs WHERE pseudo = ''

Voici la partie concernée de mon fichier index.php :
<html>
<head>
<title>Connexion au site</title>
</head>
<body>
<form method="post" action="verifLogin.php">
<table border="0" width="290" align="center">
<tr>
<td width="95"><b>Pseudo</b></td>
<td width="280">
<input type="text" name="pseudo" size="20">
</td>
</tr>
<tr>
<td width="95"><b>Mot de passe<b></td>
<td width="280">
<input type="password" name="mdp">
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="submit" value="Se connecter">
</td>
</tr>
</table>
</form>
</body>
</html>

Et voici mon fichier verifLogin.php :

<?php

session_start();
$loginOK = false;

if (isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) ) {

extract($_POST);

$sql = "SELECT nom, prenom, pseudo, email, mdp FROM utilisateurs WHERE pseudo = '".addslashes($login)."'";
$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);

if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);

if ($password == $data['mdp']) {
$loginOK = true;
}
}
}

if ($loginOK) {
$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
$_SESSION['email'] = $data['email'];
}
else {
echo 'Pseudo ou mot de passe incorrect, veuillez réessayer !';
}
?>

Voilà, si quelqu'un peut m'éclairer, ce serait volontiers.

7 réponses

gryzzly Messages postés 4608 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
et les paramètres de connexion, ils existent pas ?

A link to the server could not be established

$req = mysql_query($sql) → ce serait mieux (t'as pas vraiment le choix) avec mysql_query($sql, $connexion) et que tu initialise ta variable $conexion avec les paramètres appropriés (login, mdp, serveur, base...)
0
nico3009 Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   1
 
Voilà, j'ai donc mis la connexion
Mais quand je me logue, il me dit pseudo ou mot de passe incorrect, qui est la réponse dans le cas ou l'utilsateur n'est pas inscrit.
Voici le verifLogn corrigé :

<?php

session_start();

$loginOK = false;
$hostname = "sql.free.fr";
$user = *******";
$password = "*******";
$nom_base_donnees = "*********";

if (isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) ) {

extract($_POST);

$connexion = mysql_connect ("$hostname","$user","$password");
mysql_select_db($nom_base_donnees);
$sql = "SELECT nom, prenom, pseudo, email, mdp FROM utilisateurs WHERE pseudo = '".addslashes($login)."'";
$req = mysql_query($sql, $connexion) or die('Erreur SQL : <br />'.$sql);

if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);

if ($password == $data['mdp']) {
$loginOK = true;
}
}
}

if ($loginOK) {
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['email'] = $data['email'];
}
else {
echo 'Pseudo ou mot de passe incorrect, veuillez réessayer !';
}
?>
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

à mon avis c'est ta requête, elle est citée dans le message d'erreur.
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/167/sdb/e/d/**********/verifLogin.php on line 11
Erreur SQL :
SELECT nom, prenom, pseudo, email, mdp FROM utilisateurs WHERE pseudo = '' 

affiche ta requête au lieu de l'exécuter, ça vient surement du contenu de '$login'.
echo $sql;
0
nico3009 Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   1
 
Aïe, je ne comprend as tout ce que tu viens de dire. Il faut que j'écrive echo $sql; ?
Si oui, où dois-je le mettre?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
re,

tu fais la même chose mais au lieu d'exécuter tu affiches la requête.
session_start();

$loginOK = false;
$hostname = "sql.free.fr";
$user = *******";
$password = "*******";
$nom_base_donnees = "*********";

if (isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) ) {

extract($_POST);

$connexion = mysql_connect ("$hostname","$user","$password");
mysql_select_db($nom_base_donnees);
$sql = "SELECT nom, prenom, pseudo, email, mdp FROM utilisateurs WHERE pseudo = '".addslashes($login)."'";
echo $sql; 

tu mets les autres lignes en commentaire pour ne pas qu'elles s'exécutent et tu affiches la page.
tu auras la requête SQL et tu pourras voir si elle est correcte ou pas. tu peux la tester directement dans PhpMyAdmin ou équivalent.
0
nico3009 Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   1
 
Bon, j'ai bien essayé ça et il me trouve apparement.
J'ai donc essayé d'aller voir d'autres tutos et j'ai fait mon script d'une autre manière.
Ce que je viens de penser, c'est que mon mot de passe est crypté et arrive donc crypté dans ma base.
C'est peut-être pour cette raison qu'il ne reconnait pas le mot de passe??
Je vais donc chercher dans les forums si je trouve quelque chose la dessus mais là je dois partir à un repas de famille. Si quelqu'un a la solution, je suis preneur.
Voici mon nouveau script de verifLogin.php :

<?php

session_start();

$hostname = "sql.free.fr";
$user = "********";
$password = "********";
$nom_base_donnees = "************";

mysql_connect($hostname, $user, $password) or die(mysql_error());
mysql_select_db($nom_base_donnees);

if (isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) ) {
extract($_POST);

$sql = "SELECT mdp FROM utilisateurs WHERE pseudo = '".addslashes($pseudo)."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_assoc($req);

if ($data['mdp'] != $mdp) {
echo '<p>Pseudo ou mot de passe incorrect</p>';
exit;
}
else {
session_start();
$_SESSION['pseudo'] = $pseudo;

echo 'Vous etes bien logué';
}
}
else {
echo '<p>Vous avez oublié de remplir un champ.</p>';
exit;
}

?>
0
nico3009 Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   1
 
Je n'ai pas trouvé ce que je voulais. Apparement il y a un crypt($pass) à rajouter mais je ne trouve pas le bon endroit.
J'ai également essayé de rentrer mon mdp crypté mais ca me marque le meme message.
Voilà pour les pistes que je peux vous donner.
0