SQL et PHP

Résolu/Fermé
Mike - 1 janv. 2009 à 23:08
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 2 janv. 2009 à 00:25
Bonjour,
J'ai un souci avec l'exécution d'une requête count dans du php. Je veut qu lorsque une personne a fournie les bon identifiant, elle soit redirigé vers une autre page, ou alors qu'un message s'affiche.

Voila le code, ici la voila le contenu du body de de la page recevant les réponse aux formulaire:

<body>
<div id="logo"></div>
<?php
include('./../config.php');
if (!empty($_POST['pseudo']) and !empty($_POST['pass']))
{
$pseudo = $_POST['pseudo'];
$pass = $_POST['pass'];
$requete = "SELECT COUNT (*) FROM membre WHERE pseudo='".$pseudo."' AND mdp='".MD5($pass)."'";
$query = mysql_query($requete) OR die(mysql_error());
$rep = mysql_result($query, 0, 0);
if ($rep == 0)
{
echo '<p> Il y a '.$rep.'<br/>Pseudo ou mot de passe incorrect, veuillez les recommencer.<br/><input type="button" name="Retour" value="Retour" onclick="javascript:document.location.replace(\'./../connecter.php\')"></p>';
}
else
{
session_register("pseudo");
$_SESSION['pseudo']=$pseudo;
echo '<script language="Javascript">document.location.replace("./../../index.php");</script>';
}
}
mysql_close();
?>
</body>

La ligne suivant s'affiche:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) FROM membre WHERE pseudo='Carcass' AND mdp='9147608e9a976ae61588360b7a91c122'' at line 1

Merci d'avance et bonne année :)
A voir également:

14 réponses

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
1 janv. 2009 à 23:19
Bonsoirs.
$requete = "SELECT COUNT (*) FROM membre WHERE pseudo='".$pseudo."' AND mdp='".MD5($pass)."'"; 

Voici la bonne requête :
$requete = "SELECT COUNT (*) AS membre WHERE pseudo='".$pseudo."' AND mdp='".MD5($pass)."'"; 

PS : Pense à mettre le code entre les balise
 et 
sur CCM pour concerver l'indentation.
0
Sa ne fonctionne pas non plus, et la même ligne s'affiche.
Et je dois mettre entre quelle balise? C'est koi CCM?
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
1 janv. 2009 à 23:26
CCM = CommentCaMarche (ce site).

$requete = "SELECT COUNT (*) AS nb_membre FROM membre WHERE pseudo='".$pseudo."' AND mdp='".MD5($pass)."'"; 
$req = mysql_query($requete) or die (mysql_error());
$temp = mysql_fetch_array($req);
$nb = $temp['nb_membre'];


Viens sur cette page pour plus d'explications
0
Oki pour CCM

Par contre sa ne fonctionne toujours pas, et la ligne d'erreur est toujours la même
0

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

Posez votre question
J'utilise Wamp, est-ce que la fonction COUNT fonctionne dessus?
0
Galawin Messages postés 835 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 17 novembre 2013 123
1 janv. 2009 à 23:47
Oui
Je croit que c'est à cause de l'espace, essaye sa :

$requete = "SELECT COUNT(*) AS nb_membre FROM membre WHERE pseudo='".$pseudo."' 
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
1 janv. 2009 à 23:46
Apparement tu ne sais pas adapter le code. Voici le code PHP complet (je le crée à partir de rien) :
<?php
include './../config.php';
if(!empty($_POST['pseudo']) && !empty($_POST['pass']))
{
      $pseudo = addslashes(htmlspecialchars($_POST['pseudo']));
      $pass = $_POST['pass'];
      
      //Normalement on se connecte, ce que je ne vois pas dans la source ;)
      
      $sql = "SELECT pseudo,mdp FROM membre WHERE pseudo = '".$pseudo."'";
      $req = mysql_query($sql) or die ('Erreur SQL ! <br/>'.mysql_error());
      
      $nb = mysql_num_rows($req);
      $data = mysql_fetch_array($req);

      if($nb > 0)
      {
            if(md5($pass) == $data['mdp'])
            {
                  $_SESSION['pseudo'] == $pseudo;
            }
            else
            {
                  echo 'Mauvais mot de passe !';
            }
      }
      else
      {
            echo 'Membre inexistant !';
      }
}
else
{
      echo 'Merci de remplir tous les champs';
}
mysql_close();
?>
0
On ce rapproche je sens lol, mais le problème c'est qu'il affiche toujours Mauvais mot de passe !
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
1 janv. 2009 à 23:57
Es-ce que le mot de passe est hashé en MD5 dans la base de données ?
0
Que veut dire hashé? Dsl je débute lol
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
2 janv. 2009 à 00:02
Apparament, tu ne "crypt" pas tes mots de passes (quand je vois ton script ça fait peut niveau sécurité ; On te fais une injection SQL en moins de 2).

<?php
include './../config.php';
if(!empty($_POST['pseudo']) && !empty($_POST['pass']))
{
      $pseudo = addslashes(htmlspecialchars($_POST['pseudo']));
      $pass = $_POST['pass'];
      
      //Normalement on se connecte, ce que je ne vois pas dans la source ;)
      
      $sql = "SELECT pseudo,mdp FROM membre WHERE pseudo = '".$pseudo."'";
      $req = mysql_query($sql) or die ('Erreur SQL ! <br/>'.mysql_error());
      
      $nb = mysql_num_rows($req);
      $data = mysql_fetch_array($req);

      if($nb > 0)
      {
            if($pass == $data['mdp'])
            {
                  $_SESSION['pseudo'] == $pseudo;
            }
            else
            {
                  echo 'Mauvais mot de passe !';
            }
      }
      else
      {
            echo 'Membre inexistant !';
      }
}
else
{
      echo 'Merci de remplir tous les champs';
}
mysql_close();
?>
0
Même problème, il affiche toujours Mauvais mot de passe. Et dans ma base de donnée, les mot de passes sont codés.
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
2 janv. 2009 à 00:13
$pass = md5($_POST['pass']);
0
Nikel :) sa marche :)
Merci beaucoup :)
Et bonne année encore :)
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
2 janv. 2009 à 00:25
Cool 8)

Bonne année aussi.
0