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 -
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.
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.
A voir également:
- Erreur à l'ouverture d'une session
- Yahoomail.fr ouverture de session - Guide
- Www.yahoo.fr ouverture de session ✓ - Forum Yahoo mail
- Yahoo Mail France : comment créer une adresse mail gratuite - Guide
- Instagram une erreur s'est produite ✓ - Forum Instagram
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
7 réponses
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...)
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...)
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 !';
}
?>
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 !';
}
?>
salut,
à mon avis c'est ta requête, elle est citée dans le message d'erreur.
affiche ta requête au lieu de l'exécuter, ça vient surement du contenu de '$login'.
à 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;
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?
Si oui, où dois-je le mettre?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re,
tu fais la même chose mais au lieu d'exécuter tu affiches la requête.
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.
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.
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;
}
?>
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;
}
?>