8796 sujets

Développement web côté serveur, CMS

bonsoir à tous,

Lorsque je veux me connecter sur mon site avec login et password
j'obtiens le message d'erreur (exemple) suivant:

SELECT * FROM user WHERE login='toto@monsite.com' AND password='tutu'incorrect

et si je clique sur le bouton "s'identifier" sans renseigner les champs login et password, j'ai le message suivant qui s'affiche:

SELECT * FROM user WHERE login='Adresse email' AND password='Mot de passe'incorrect


J'ai repris les deux fichiers qui me semblent être les seuls concernés pour voir d'où vient le problème:

le premier 'identification.php'
le second, 'connexion_db.inc.php'

pour 'identification.php', j'ai le code suivant:


<?php

	session_start(); // Démarrage de la session

	require_once('connexion_db.inc.php'); // Connexion à la base de données



	// Intitialisation des variables

	$login = $_POST['login'];

	$password = $_POST['pass'];

    

	// Verification de l'identification
	
if (isset($_POST['login']) && isset($_POST['pass'])){
           $login=mysql_real_escape_string($_POST['login']);
           $password=mysql_real_escape_string($_POST['pass']);
           $req="SELECT * FROM user WHERE login='".$login."' AND password='".$password."'"; // or die('Erreur de connexion'.mysql_error());
           echo $req;
		   $res= mysql_query($req);
            if (mysql_num_rows($req)!=0){
                 echo "vous êtes connecté";
             } else {
                  echo "incorrect";
             }
     }  else {
               echo "certains champs sont vides";
        }

?>





pour 'connexion_db.inc.php'



<?php
 
	// Identifiants de connexion au serveur MySQL
 
	$hoteBase = 'db0000.monhebergeur.fr';
 
	$utilisateurBase = 'dbe123456789';
 
	$mdpBase = 'ab231aQé';
 
	$base = 'db123456789';
 
	mysql_connect($hoteBase, $utilisateurBase, $mdpBase); // Connexion au serveur
 
	mysql_select_db($base); // Sélection de la base
 
?>


et donc je ne vois pas où est le "bug"???

je vous remercie d'avance pour votre aide et conseils,

@micalement,

marc
Salut, tu dois avoir des valeurs par défaut dans ton formulaire (value="Adresse email") qui sont envoyées.
oui..j'ai retrouvé l'autre fichier qui me semble avoir un rapport direct avec le formulaire, il est nommé 'entete.inc.php' et le code est le suivant:



	<div id="entete">

		<div style="float:left;">

			<div style="float:left; padding-left: 150px; padding-top:5px; width:150px; height:150px;"><a href="./index.php"><img src="./images/pic.gif" width="150" height="150"></a></div>

			<div id="identification">

				<form name="identification" method="post" action="./identification.php">

					<table class="verdana-10-blanc-bold">

						<tr>

							<td><a href="./inscription1.php" class="verdana-10-blanc-bold">Enregistrez-vous</a> : </td>

							<td><input type="text" name="login" value="Adresse email" class="arial-10-noir-bold" onfocus="this.value=''"></td>

						</tr>

						<tr>

							<td></td>

							<td><input type="text" name="pass" value="Mot de passe" class="arial-10-noir-bold" onfocus="this.value=''"></td>

						</tr>

						<tr>

							<td></td>

							<td align="center"><a href="#" onclick="javascript:document.identification.submit();" class="verdana-10-blanc-bold">S'identifier</a></td>

						</tr>

					</table>

				</form>

			</div>

			<div style="float:left; width:150px; height:150px;"><img src="./images/pic.gif" width="150" height="140" usemap="#Map"><map name="Map"><area shape="circle" coords="70,72,60" href="http://monsite.com/" target="_blank"></map></div>

		</div>

	</div>



on retrouve bien: name="login" value="Adresse email"

et:

name="pass" value="Mot de passe


mais je ne vois pas le lien avec les 2 fichiers 'identification.php' et 'connexion_db.inc.php' pour pouvoir identifier la piste de l'erreur??

pas évident tout ca! Smiley sweatdrop

j'ai vu dans le code du javascript onclick="javascript:document.identification.submit();

y a t il une relation?
Salut,

remplacer
if (mysql_num_rows($req)!=0){
par
if (mysql_num_rows([b]$res[/b]) > 0){
bonjour!

voilà où j'en suis. il y a une amélioration mais c'est pas encore ça! Smiley decu
deux modifications (en gras) ont été ajoutées au code que voici:


<?php

	session_start(); // Démarrage de la session

	require_once('connexion_db.inc.php'); // Connexion à la base de données;

	$login = $_POST['login'];
	$password = $_POST['pass'];

	// if (isset($_POST['login']) && isset($_POST['pass']));
    [b]if (isset($_POST['login']) && isset($_POST['pass']) && !empty($_POST['login']) && !empty($_POST['pass']))    [/b]{
        $login=mysql_real_escape_string($_POST['login']);
        $password=mysql_real_escape_string($_POST['pass']);
        $req="SELECT * FROM user WHERE login='".$login."' AND password='".$password."'"; // or die('Erreur de connexion'.mysql_error());
        echo $req;

        [b]if(mysql_fetch_array(mysql_query($req)))        [/b]{
            echo "vous êtes connecté";
        }
            else
        {
            echo "incorrect";
        }
    }
    else
    {
        echo "certains champs sont vides";
    }
    
	
?>


l'amélioration, c'est que lorsque j'utilise mon "petit formulaire" pour se connecter au site, formulaire constitué des 2 champs "login" et "password",
j'ai le retour des messages d'erreur cohérents par rapport à ce que je peux saisir dans les 2 champs "login" et "password":

ainsi si clique directement sur le bouton "s'identifier" en laissant à blanc les deux champs, j'ai le message d'erreur "certains champs sont vides", meme message d'erreur si je saisis seulement dans le champ "login" ou alors dans le champ "password",

pour le message d'erreur "incorrect", il est cohérent aussi car il est renvoyé quand j'ai validé la saisie de l'email d'un user bien présent dans la table, mais avec un mauvais mot de passe

enfin, si je saisis le bon email (le bon "user") et le bon mot de passe, le message "vous êtes connecté" s'affiche.

à noter que dans chacun de ces cas (messages) on arrive sur page "blanche" avec en haut à gauche l'affichage du message.

ainsi, en reprenant le cas où j'ai le message "vous êtes connecté", si je clique sur la flèche gauche de IE pour retourner sur la page d'accueil, je n'ai pas l'affichage de ma connexion alors que le message mentionnait bien que j'étais connecté?
Ce que je pense c'est que le script identifie bien les choses par rapport à la table "user" puisqu'il différencie (par exemple) le bon du mauvais mot de passe, mais après ...il perd l'identification???

voilà, voilà, où j'en suis...

@micalement

marc
hello,

je reviens avec quelques ajouts et modifs, le code est le suivant:


<?php
 
	session_start(); // Démarrage de la session
 
	require_once('connexion_db.inc.php'); // Connexion à la base de données;
 
	$login = $_POST['login'];
	$password = $_POST['pass'];
    $result = mysql_query($req);
    $artuser = mysql_fetch_assoc($result);
    
    if (isset($_POST['login']) && isset($_POST['pass']) && !empty($_POST['login']) && !empty($_POST['pass']))
    {
        $login=mysql_real_escape_string($_POST['login']);
        $password=mysql_real_escape_string($_POST['pass']);
        $req="SELECT * FROM user WHERE login='".$login."' AND password='".$password."'"; // or die('Erreur de connexion'.mysql_error());
        echo $req;
 
 
	    if(mysql_fetch_array(mysql_query($req)))
	    {
		echo "vous êtes connecté";
	    }
        
 
            else
            {
            echo "incorrect";
            }
    }
    
    
    
    else
    {
        echo "certains champs sont vides";
    }
 
    $_SESSION['login']=$login;
    $_SESSION['password']=$password;
    $_SESSION['id_user'] = $artuser['id_user'];
    $_SESSION['nom_user'] = stripslashes($artuser['nom']);
    $_SESSION['prenom_user'] = stripslashes($artuser['prenom']);
	header("Location:index.php");
    
 
?>


...mais je n'arrive pas ouvrir la session avec les login et password
quand ceux ci sont affichés comme étant corrects malgré l'ajout des
codes $_SESSION???

Avez vous un conseil pour que je rectifie?

merci d'avance

@micalement,

marc
bonsoir,
je reviens ici pour dire que ca s'améliore avec le code suivant mais...


<?php

	session_start(); // Démarrage de la session

	require_once('connexion_db.inc.php'); // Connexion à la base de données;

	$login = $_POST['login'];
	$password = $_POST['pass'];
    // $result = mysql_query($req);
    // $artuser = mysql_fetch_assoc($result);

    if (isset($_POST['login']) && isset($_POST['pass']) && !empty($_POST['login']) && !empty($_POST['pass']))
    {
        $login=mysql_real_escape_string($_POST['login']);
        $password=mysql_real_escape_string($_POST['pass']);
        $req="SELECT * FROM user WHERE login='".$login."' AND password='".$password."'"; // or die('Erreur de connexion'.mysql_error());
        $res=mysql_query($req) or die('Erreur de connexion'.mysql_error());

	    if($artuser=mysql_fetch_array($res))
	    {
		// echo "Vous êtes connecté(e) sur votre compte.";
		$_SESSION['login']=$login;
		$_SESSION['password']=$password;
		$_SESSION['id_user'] = $artuser['id_user'];
		$_SESSION['nom_user'] = stripslashes($artuser['nom']);
		$_SESSION['prenom_user'] = stripslashes($artuser['prenom']);
		header('Location: index.php');
	    exit();
	    }


            else
            {
            echo "incorrect";
            }
    }



    else
    {
        echo "Certains champs sont vides.";
    }

?>


Et donc là le problème que j'ai c'est que malgré le header, cela ne renvoie pas sur la page d'index et pourtant aucun code html n'est présent avant ou a été désactivé comme le "echo".

je ne comprends pas,

merci pour votre aide

@micalement,

Marc