8791 sujets

Développement web côté serveur, CMS

Bonjour à toutes et tous,

Voila je souhaite mettre en place un accès privée sur mon site or lorsque je saisi login et mot de passe j'ai le message "requete en echec 1"

Ce que je comprend c'est donc : que la connexion à ma bdd se fait bien mais qu'après ya un problème. Mais quoi ?

Pouvez vous m'aiguiller ? Auriez vous des pistes pour que je puisse enfin avancé dans mon projet ! C'est mon premier projet Php donc débutant !!!

Cdt

<?php

session_start();
        include("chiens.inc");
        switch(@$_POST['do'])
{
        case"login":
                $cxn=mysqli_connect("xxxx","xxxxxxx","xxxxxx","xxxxxxx")
                or die ("Connexion impossible au serveur dans case login");
               
               
        $sql = "SELECT LoginName FROM member WHERE LoginName='".$_POST['fusername']."'";
        $result = mysqli_query($cxn,$sql)
                                or die("Requête en échec 1.");
        $num=mysqli_num_rows($result);
        if ($num>0) // loginname trouvé
        {
        $sql= "SELECT LoginName FROM member WHERE password='".$_POST['fpassword']."'";
        $result2 = mysqli_query($cxn,$sql)
                                or die("Requête en échec 2.");
        $num2=mysqli_num_rows($result2);
        if ($num2>0)  // Mot de passe OK
       
        {
                                $_SESSION['auth']="yes";

                                header("Location:espace prive.php");   
                        }

                        else // mot de passe incorrect
                        {
                $message="Le nom de Login '$_POST[fusername]' existe, mais le mot de passe ne va pas ! Réessayez.<br>";
                include ("login_form.inc");
                        }
        }
       
        elseif ($num==0)  // Nom de login introuvable
        {
                $message="Le nom de login que vous avez saisi n'existe pas. Essayez encore.<br>";
                include("login_form.inc");
        }

        break;

        default:
                include("login_form.inc");}
                ?>
Bonjour,
Vérifie que la table "member" existe et qu'elle possède bien un champ "LoginName".
Si tu utilises MySQL, attention, je crois qu'il est sensible à la casse.
Modifié par Gothor (25 Jul 2012 - 12:15)
Oui c'est bien un code que j'ai fais avec l'aide de "PHP pour les nuls"
Et oui la table member existe également avec un respect de la casse...

upload/42690-imprimecra.jpg
Au lieu d'afficher "Requête en échec 1.", pourrais-tu tenter d'afficher mysqli->error pour voir l'erreur s'il te plaît ?
Gothor comme je l'expliquais je débute et me forme de façon plus approfondi en septembre.

A ce que j'ai pu lire j'ai donc fait une erreur de débutant qui comme le préconise les documentations officiel php utiliser 'die' après une commande sql. Et en effet je ne connais que cette manière comment afficher le résultat "mysqli->error (printf non?)
Gothor a écrit :
Au lieu d'afficher &quot;Requête en échec 1.&quot;, pourrais-tu tenter d'afficher mysqli-&gt;error pour voir l'erreur s'il te plaît ?


OR DIE(mysqli_error($cnx));
Voila ce que l'on m'affiche :

Warning: mysqli_error() expects parameter 1 to be mysqli, null given in /homez.166/mateldisj/www/Login.php on line 14
En effet, merci jb_gfx.

En revanche, j'ai désormais ce message : "Table 'mateldisjbdd.member' doesn't exist"

La table existe pourtant (cf : message et capture écran précédent)

<?php
session_start();
require 'chiens.inc';

if (!empty($_POST['do']) && 'login' == $_POST['do'])
{
  $cnx = mysqli_connect("xxxx","xxxxxxx","xxxxxx","xxxxxxx");

  if (mysqli_connect_errno()) {
    printf('Échec de la connexion : %s', mysqli_connect_error());
    exit;
  }
  
  $login = mysqli_real_escape_string($cnx, $_POST['fusername']);
  $password = mysqli_real_escape_string($cnx, $_POST['fpassword']);

  $sql = "
    SELECT LoginName 
    FROM member 
    WHERE LoginName = '" . $login . "' 
    AND password = '" . $password . "'
    LIMIT 1";

  $result = mysqli_query($cnx, $sql);

  if (false === $result)
  {
    printf('Échec de la requête : %s', mysqli_error($cnx));
    exit;
  }

  $num = mysqli_num_rows($result);

  if (0 > $num)
  {
    $_SESSION['auth'] = 'yes';
    header('Location:espace prive.php');
    exit;
  } else {
    $message = 'Le login ou le mot de passe est faux.';
    require 'login_form.inc';
  }
} else {
   require 'login_form.inc';
   break;
}
?>

Modifié par jb_gfx (26 Jul 2012 - 03:45)