Connexions - Deux tables

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 : Connexions - Deux tables

Re: Connexions - Deux tables

par Brian35 » 17 mai 2012, 17:31

Redirection non effectuée car tu as du HTML avant le header().
Or il ne faut rien envoyer au navigateur avant une telle balise.
Actives l'affichage des erreurs dans le php.ini en mode debug. ;)
Salut, merci de ton aide tout d'abord ^^

de l'HTML ?
J'ai uniquement le <div id="centre_page"> avant l’exécution du script ^^
Le div je l'ai mis comme cela mais ça ne change pas grand chose :)
J'ai tester les deux variables email_recu et password_recu et elle s'affiche correctement cela devrait fonctionner pourtant xD ! ^^
<?php 
session_start();

include('includes/haut.php'); 
include('includes/menu_g.php'); 
include('includes/menu_d.php'); 
?>
  
<?php
$message_erreur = '';
$valid_connect 	= false;
// Si envoyé : TRAITEMENT DU FORMULAIRE DE CONNEXION (dans la même page que le formulaire !)
if(isset($_POST['envoie_connexion'])) 
{
    $_SESSION['id'] 	= 0;
    $_SESSION['level'] 	= 0;
	// récupération des données envoyées
	$email_recu 	= (isset($_POST['email']))? 	mysql_real_escape_string(trim($_POST['email'])) : '';
	$password_recu 	= (isset($_POST['password']))? 	mysql_real_escape_string(trim($_POST['password'])) : '';

	// on vérifie si le membre a bien son compte activé
    if ($email_recu=='' || $password_recu=='' ) // Oublie d'un champ
    {
        $message_erreur = '<p>Vous devez remplir tous les champs</p>';
		$valid_connect 	= false; // non
 
    } else {
 
		// 1/ recherche dans la table "clients"
		$req_clients = "SELECT id, rang  FROM vinicom_clients WHERE email = '".$email_recu."' AND password = '".md5($password_recu)."';"; 
		$res_clients = mysql_query($req_clients) or die(mysql_error()); 
		$nbr_clients = mysql_num_rows($res_clients); // nombre de lignes trouvées 
 
		if ($nbr_clients == 1){ // un client trouvé !
			$row_clients = mysql_fetch_row($res_clients);
				// enregistrement en SESSION
				$_SESSION['id'] 	= $row_clients['id']; 
				$_SESSION['level'] 	= $row_clients['rang'];
				$valid_connect = true; // ok
		} else {
 
			// 2/ recherche dans la table "fournisseurs"
			$req_fournis = "SELECT id, rang  FROM vinicom_fournisseurs WHERE email = '".$email_recu."' AND password = '".md5($password_recu)."';"; 
			$res_fournis = mysql_query($req_fournis) or die(mysql_error()); 
			$nbr_fournis = mysql_num_rows($res_fournis); // nombre de lignes trouvées 
			if ($nbr_fournis == 1){ // un fournisseur trouvé !
				$row_fournis = mysql_fetch_row($res_fournis);
				$_SESSION['level'] = $row_fournis['rang'];
				// enregistrement en SESSION
				$_SESSION['id'] 	= $row_fournis['id']; 
				$_SESSION['level'] 	= $row_fournis['rang'];
				$valid_connect = true; // ok
 
			} else { // ni client, ni fournisseur !
				$message_erreur = '<p>Aucun résultat trouvé avec ces paramètres.</p>';
				$valid_connect = false; // non
			}
		}
	}
 
	// redirection en fonction du rang
	switch ($_SESSION['level']) {
		case 1: // CLIENT
			header('location : client.php');
			break;
		case 2: // FOURNISSEUR
			header('location : fournisseur.php');
			break;
		case 3: // ADMIN
			header('location : admin.php');
			break;
		case 0: // pas trouvé !
		default: // par defaut
			$valid_connect = false; // non
			// on reste sur la page (affichage formulaire + message d'erreur)
	}
} // fin traitement du formulaire.
?>

<?php
// AFFICHAGE DU FORMULAIRE
if ($valid_connect === false)
{
?>

  <div id="centre_page"> 

<h1>Connexion :</h1>
 
<?php // message d'erreur ?
if ($message_erreur != '') { ?>
	<p><?php echo $message_erreur; ?></p>
<?php } ?>
 
<?php 
// Transmission de variable : test
echo $email_recu;
echo $password_recu;
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
	<p>
		<label for="idemail">Votre email : </label>
		<input id="idemail" type="text" name="email" value=""/>
	</p>
	<p>
		<label for="idpassword">Votre Mot de passe : </label>
		<input id="idpassword" type="password" name="password" value=""/>
	</p>
	<p>
		<input type="submit" name="envoie_connexion" value="envoyer"/>
	</p>
</form>
 
<?php
} // fin affichage formulaire de connexion
?>
  </div>
 
<?php include('includes/bas.php'); ?>
Actives l'affichage des erreurs dans le php.ini en mode debug. ?
comment ^^

Re: Connexions - Deux tables

par xTG » 17 mai 2012, 06:26

Redirection non effectuée car tu as du HTML avant le header().
Or il ne faut rien envoyer au navigateur avant une telle balise.
Actives l'affichage des erreurs dans le php.ini en mode debug. ;)

Connexions - Deux tables

par Brian35 » 17 mai 2012, 01:05

Bonsoir,

J'ai besoin de votre aide, j'ai un script qui utilise deux tables pour la connexion, formulaire banal (email et mot de passe), quand je rentre un identifiant qui n'existe pas dans la table, j'ai le message aucun résultat trouvé avec ce paramètre (ok) mais lorsque je veux me connecté avec un identifiant d'un des deux tables, aucun message d'erreur et rien ne se passe, aucune session créer et redirection non effectuer...

D'ou vient le problème ?
merci
<?php 
session_start();

include('includes/haut.php'); 
include('includes/menu_g.php'); 
include('includes/menu_d.php'); 
?>
  
  
  <div id="centre_page"> 

<?
$message_erreur = '';
$valid_connect 	= false;
// Si envoyé : TRAITEMENT DU FORMULAIRE DE CONNEXION (dans la même page que le formulaire !)
if(isset($_POST['envoie_connexion'])) 
{
    $_SESSION['id'] 	= 0;
    $_SESSION['level'] 	= 0;
	// récupération des données envoyées
	$email_recu 	= (isset($_POST['email']))? 	mysql_real_escape_string(trim($_POST['email'])) : '';
	$password_recu 	= (isset($_POST['password']))? 	mysql_real_escape_string(trim($_POST['password'])) : '';

	// on vérifie si le membre a bien son compte activé
    if ($email_recu=='' || $password_recu=='' ) // Oublie d'un champ
    {
        $message_erreur = '<p>Vous devez remplir tous les champs</p>';
		$valid_connect 	= false; // non
 
    } else {
 
		// 1/ recherche dans la table "clients"
		$req_clients = "SELECT id, rang  FROM vinicom_clients WHERE email = '".$email_recu."' AND password = '".md5($password_recu)."';"; 
		$res_clients = mysql_query($req_clients) or die(mysql_error()); 
		$nbr_clients = mysql_num_rows($res_clients); // nombre de lignes trouvées 
 
		if ($nbr_clients == 1){ // un client trouvé !
			$row_clients = mysql_fetch_row($res_clients);
				// enregistrement en SESSION
				$_SESSION['id'] 	= $row_clients['id']; 
				$_SESSION['level'] 	= $row_clients['rang'];
				$valid_connect = true; // ok
		} else {
 
			// 2/ recherche dans la table "fournisseurs"
			$req_fournis = "SELECT id, rang  FROM vinicom_fournisseurs WHERE email = '".$email_recu."' AND password = '".md5($password_recu)."';"; 
			$res_fournis = mysql_query($req_fournis) or die(mysql_error()); 
			$nbr_fournis = mysql_num_rows($res_fournis); // nombre de lignes trouvées 
			if ($nbr_fournis == 1){ // un fournisseur trouvé !
				$row_fournis = mysql_fetch_row($res_fournis);
				$_SESSION['level'] = $row_fournis['rang'];
				// enregistrement en SESSION
				$_SESSION['id'] 	= $row_fournis['id']; 
				$_SESSION['level'] 	= $row_fournis['rang'];
				$valid_connect = true; // ok
 
			} else { // ni client, ni fournisseur !
				$message_erreur = '<p>Aucun résultat trouvé avec ces paramètres.</p>';
				$valid_connect = false; // non
			}
		}
	}
 
	// redirection en fonction du rang
	switch ($_SESSION['level']) {
		case 1: // CLIENT
			header('location : client.php');
			break;
		case 2: // FOURNISSEUR
			header('location : fournisseur.php');
			break;
		case 3: // ADMIN
			header('location : admin.php');
			break;
		case 0: // pas trouvé !
		default: // par defaut
			$valid_connect = false; // non
			// on reste sur la page (affichage formulaire + message d'erreur)
	}
} // fin traitement du formulaire.
?>

<?
// AFFICHAGE DU FORMULAIRE
if ($valid_connect === false)
{
?>

<h1>Connexion :</h1>
 
<?php // message d'erreur ?
if ($message_erreur != '') { ?>
	<p><?php echo $message_erreur; ?></p>
<?php } ?>
 
<? echo'<b><a href="voirprofil.php?m='.intval($_SESSION['id']).'&action=consulter" style="color:ff40a0;text-decoration:none;">
'.stripslashes(htmlspecialchars($_SESSION['id'])).''; ?></b></a>&nbsp; - &nbsp;

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
	<p>
		<label for="idemail">Votre email : </label>
		<input id="idemail" type="text" name="email" value=""/>
	</p>
	<p>
		<label for="idpassword">Votre Mot de passe : </label>
		<input id="idpassword" type="password" name="password" value=""/>
	</p>
	<p>
		<input type="submit" name="envoie_connexion" value="envoyer"/>
	</p>
</form>
 
<?php
} // fin affichage formulaire de connexion
?>
  </div>
 
<? include('includes/bas.php'); ?>