Résultats aléatoire avec un form d'identification

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Résultats aléatoire avec un form d'identification

Re: Résultats aléatoire avec un form d'identification

par dunbar » 17 déc. 2010, 20:50

Pour le choix j'en sais rien c'est ton script...

Re: Résultats aléatoire avec un form d'identification

par Boro64 » 17 déc. 2010, 19:36

Ok, et merci.
Bon, je ne reviens pas sur la page avec le message de choix? C'est comme si il devait y avoir une redirection...qui n'existe pas d'ailleurs... :shock:
Il me reste aussi un problème de session...mais ça c'est une autre histoire
Encore merci de ton aide

Re: Résultats aléatoire avec un form d'identification

par dunbar » 17 déc. 2010, 19:28

Enleve le session_destroy() ou ajoute un session_start() juste avant.
La raison du session_destroy() est qu'il est toujours mieux de détruire la session avant d'en créer une nouvelle

Re: Résultats aléatoire avec un form d'identification

par Boro64 » 17 déc. 2010, 19:25

Bonsoir et merci Dunbar
Effectivement ça marche mieux..sans que je sache encore pourquoi.... :oops:
Mais je vois ça (outre le $count = mysql_num_rows($req);)
:
if($count == 1)
                                 {
                                         session_destroy();
                                         session_start();
Du coup, je ne reste pas sur la page pour afficher les echos qui suivent et proposent de rejoindre 2 pages, et surtout j'ai cet avertissement:

Code : Tout sélectionner

Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in /homez.106/xxx/www/dev/xxx/xxx/identif2.php on line 21 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homez.106/xxx/www/dev/xxx/xxx/includes/connect.inc.php:1) in /homez.106/heprod/www/dev/tsmoto/boutik/identif2.php on line 22
C'est normal?
D'avance merci

Re: Résultats aléatoire avec un form d'identification

par dunbar » 17 déc. 2010, 18:29

Salut,

Et comme ceci cela donne quoi ?
<?php
 include ('includes/connect.inc.php');
 //code d'identification client
 // on teste si le visiteur a soumis le formulaire de connexion
 if (isset($_POST['connexion'])) 
	{
		 if ((isset($_POST['email']) && !empty($_POST['email'])) && (isset($_POST['password']) && !empty($_POST['password'])))
			 { 
					 $sql = "SELECT * FROM
					                    clients 
					                  WHERE email = '" . mysql_real_escape_string($_POST['email'])."' 
					                  AND mdp     = '" . mysql_real_escape_string(md5($_POST['password']))."' ";
					 $req   = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
					 $data  = mysql_fetch_array($req);
					 $count = mysql_num_rows($req);
					 
					 
					 echo $data['mdp'];
					 echo '<br />';
					 echo md5($_POST['password']);
					 echo '<br />';
					 echo $data['email'];
					 mysql_free_result($req);
					 mysql_close();
			 	//si réponse, alors membre
				 if($count == 1)
				 {
					 session_destroy();
					 session_start();
					 $_SESSION['email'] = $_POST['email'];
					 $_SESSION['mdp']   = $_POST['mdp'];
 
						$bravo = "<p> Bonjour ".$_SESSION['prenom']." ".$_SESSION['nom']."<br /><br />
						 Où souhaitez vous vous rendre?<br /><br />
						 <a href=\"../index.php\">La page d'accueil de la boutique?</a><br /><br />
						 <a href=\"cpte_client.php\">Ou la page de votre compte client?</a></p> ";
						 exit();
				 }
			 	//si pas de réponse erreur dans le couple mdp/email
			 	 elseif ($count > 1)
				 {
				 	$erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion. Prévenir le webmaster.';
				 	
				 }
				 else
				 {
				 	$erreur = 'Il y a au moins une erreur dans une saisie. Veuillez recommencer, svp.'; 
				 }
			 }
			 else
			 {
			 	$erreur = 'Au moins un des 2 champs est vide. Merci de recommencer.';
			 }
	 }
 
?>

Résultats aléatoire avec un form d'identification

par Boro64 » 17 déc. 2010, 16:06

Bonjour
Je soumets à votre sagacité mon problème du jour...
J'ai un formulaire d'identification qui fait des siennes.
J'explique: Soit il me renvoie l'information:
Il y a au moins une erreur dans une saisie. Veuillez recommencer, svp.
Soit il me renvoie le message :
Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion. Prévenir le webmaster.
En faisant un echo de $data['mdp'] et md5($_POST['password']) j'ai bien les mêmes résultats, ce qui est plutôt encourageant.
Pire: Quand je ne conserve qu'un id dans ma base, là, pas de problème, il m'identifie bien et passe à l'étape suivante... :shock:
Voici le code concerné:
<?php
include ('includes/connect.inc.php');
//code d'identification client
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion'])) 
{
if ((isset($_POST['email']) && !empty($_POST['email'])) && (isset($_POST['password']) && !empty($_POST['password'])))
    {        
          $sql = "SELECT * FROM clients WHERE email='".mysql_real_escape_string($_POST['email'])."' AND mdp= '" .(mysql_real_escape_string(md5($_POST['password'])))."' ";
          $req = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
		  $data = mysql_fetch_array($req);
		  		  echo $data['mdp'];
		  echo '<br />';
		  echo md5($_POST['password']);
		  echo '<br />';
		  echo $data['email'];
		  mysql_free_result($req);
		  mysql_close();
		  //si réponse, alors membre
             if($data[0] == 1)
			{
			 session_start();
                $_SESSION['email'] = $_POST['email'];
				$_SESSION['mdp'] = $_POST['mdp'];
				
				$bravo =  "<p> Bonjour ".$_SESSION['prenom']."  ".$_SESSION['nom']."<br /><br />
				 Où souhaitez vous vous rendre?<br /><br />
				 <a href=\"../index.php\">La page d'accueil de la boutique?</a><br /><br />
				 <a href=\"cpte_client.php\">Ou la page de votre compte client?</a></p> ";
			exit();
			}
			//si pas de réponse erreur dans le couple mdp/email
			elseif ($data[0] == 0)
				{
			$erreur = 'Il y a au moins une erreur dans une saisie. Veuillez recommencer, svp.';
				}
				else
				{
				$erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion. Prévenir le webmaster.'; 
				}
	}
				else
				{
				$erreur = 'Au moins un des 2 champs est vide. Merci de recommencer.';
				}
}
         
?>
et au besoin le html:
        <form action="identif.php" method="post" id="enreg">

                <p>Formulaire d'identification:</p>
				<p class="double">
        <label>Votre email:</label> 
		<input type="text" id="email" name="email" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>" />
         </p>
		 <p class="double">
		 <label>Votre mot de passe:</label> <input type="password" id="password" name="password" value="<?php if (isset($_POST['password'])) echo htmlentities(trim($_POST['password'])); ?>" />
          </p>
          <br /><br /><br />
          <input type="submit" name="connexion" value="connexion" id="Connexion" />
        </form><br /><br />
<p><?php

if (isset($bravo)) echo $bravo;
if (isset($erreur)) echo $erreur;
	
?>
</p>
D'avance, merci pour vos avis et conseils.