Page 1 sur 1

Problème de redirection

Posté : 17 juin 2014, 14:44
par JVL
Bonjour à tous,

Aujourd'hui je n'arrive à pas rediriger une page vers une autre, lors de l'authentification sur ma page, l'utilisateur doit être redirigé, mais les header ne fonctionne pas.

L'index:
<head>

<form method="post" action="login.php"><table><center>

						<label for="login">login : </label>
						<input type="text" name="login" placeholder="login"></br>
						<label for="password">mdp : </label> 
						<input type="password" name="password" placeholder="mot de passe"></br>
						<input class="button" type="submit" name="submit" value="valider" />

</center></table></form>

</head>
Login.php
<?php
		include("connection.php");	

			if(empty($_POST['login']) || empty($_POST['password']))
			{
	
			}
			
			$req = $bdd->query('SELECT rang FROM personnel WHERE login_pnom = \''.$_POST['login'].'\' AND mdp_personnel = \''.$_POST['password'].'\'');
			$donnees = $req->fetch(PDO::FETCH_OBJ);



			if($donnees == "0") {
	
			} elseif($donnees == "1"){
				
			} elseif($donnees == "2"){
		
				   				session_start();
								$_SESSION['login'] = $_POST['login'];
								$_SESSION['rang'] = $donnees; 
								Header("Location: login.php"); 
				
			} elseif($donnees == "3"){
					
			} elseif($donnees == "4"){
					
			} elseif($donnees == "5"){
					
								session_start();
								$_SESSION['login'] = $_POST['login'];
								$_SESSION['rang'] = $donnees; 
								header('Location: admin.php');
			}
			
			

		
?>



Merci beaucoup d'avance pour toutes réponses.

Cordialement.

Re: Problème de redirection

Posté : 17 juin 2014, 15:01
par telnes
hello

met des echo dans tes if pour savoir ou tu va quand tu arrive sur ta page

fait un print_r($donnees) aussi (http://www.php.net/manual/fr/pdostatement.fetch.php cf exemple)


++

Re: Problème de redirection

Posté : 17 juin 2014, 15:08
par JVL
hello

met des echo dans tes if pour savoir ou tu va quand tu arrive sur ta page

++
Ok, alors apparemment tout bloquer après :
$donnees = $req->fetch(PDO::FETCH_OBJ);

le r_print: stdClass Object ( [rang] => 2 )

J'ai d'abord essayer avec switch case, puis je me suis dit que j'allais essayer avec un if (plus simple?),
mon $donnees ne veut pas rentré dans le if

Re: Problème de redirection

Posté : 17 juin 2014, 15:25
par telnes
mon $donnees ne veut pas rentré dans le if
force :mrgreen:


sinon $donnees est un objet et comme le montre
le r_print: stdClass Object ( [rang] => 2 )
la variable qui contient ta valeur est dans "rang" et pour y accéder il faut faire $donnees->rang

Re: Problème de redirection

Posté : 17 juin 2014, 15:28
par JVL
Je suis vraiment pas très malin, merci bien.

Ma stupidité me dépasse dès fois.

Néanmoins ce n'est pas finit, la redirection fonctionne toujours pas !
			$req = $bdd->query('SELECT rang FROM personnel WHERE login_pnom = \''.$_POST['login'].'\' AND mdp_personnel = \''.$_POST['password'].'\'');
			$donnees = $req->fetch(PDO::FETCH_OBJ);

		

			if($donnees->rang == "0") {
	echo '0 ';
			} elseif($donnees->rang == "1"){
					echo '1 ';
			} elseif($donnees->rang == "2"){
			echo '2 ';
				   				session_start();
								$_SESSION['login'] = $_POST['login'];
								$_SESSION['rang'] = $donnees; 
								Header('Location : http://localhost/climatelec/main.php'); 
				
			} elseif($donnees->rang == "3"){
						echo '3 ';
			} elseif($donnees->rang == "4"){
						echo '4 ';
			} elseif($donnees->rang == "5"){

								session_start();
								$_SESSION['login'] = $_POST['login'];
								$_SESSION['rang'] = $donnees; 
								Header('Location : http://localhost/climatelec/admin.php');
			}

Re: Problème de redirection

Posté : 17 juin 2014, 15:37
par xTG
Tu as un "2" qui s'affiche ?
Si tel est le cas il te suffira de supprimer cet echo pour que la redirection fonctionne.
En activant les erreurs PHP tu devrais en fait voir un warning te disant qu'une écriture dans le buffer de sortie a déjà été réalisée avant le header.

Re: Problème de redirection

Posté : 17 juin 2014, 15:43
par JVL
Tu as un "2" qui s'affiche ?
Si tel est le cas il te suffira de supprimer cet echo pour que la redirection fonctionne.
En activant les erreurs PHP tu devrais en fait voir un warning te disant qu'une écriture dans le buffer de sortie a déjà été réalisée avant le header.
Malheureusement ce n'est pas si simple, j'ai enlever tout les echos, on passe bien le if, mais ca bloque sur la page login.php grosse page blanche, pas de redirection ...
<?php
		include("connection.php");	


			
			$req = $bdd->query('SELECT rang FROM personnel WHERE login_pnom = \''.$_POST['login'].'\' AND mdp_personnel = \''.$_POST['password'].'\'');
			$donnees = $req->fetch(PDO::FETCH_OBJ);

		

			if($donnees->rang == "0") {

			} elseif($donnees->rang == "1"){

			} elseif($donnees->rang == "2"){
			
				   				session_start();
								$_SESSION['login'] = $_POST['login'];
								$_SESSION['rang'] = $donnees->rang; 
								Header('Location : http://localhost/climatelec/main.php'); 
				
			} elseif($donnees->rang == "3"){

			} elseif($donnees->rang == "4"){

			} elseif($donnees->rang == "5"){

								session_start();
								$_SESSION['login'] = $_POST['login'];
								$_SESSION['rang'] = $donnees->rang; 
								Header('Location : http://localhost/climatelec/admin.php');
								
			}
Merci encore pour votre aide.

edit: j'ai ajouter le try catch ... toujours une jolie page blanche ... même pas d'erreurs !

Re: Problème de redirection

Posté : 17 juin 2014, 15:56
par JVL
Bon je comprend pas pourquoi cela ne fonctionne pas mais j'ai trouver un autre moyen de rediriger
function redirige($url)
{
   die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}
redirige("tapage.php" ) 

Et hop ca redirige, merci quand même !

Re: [RESOLU] Problème de redirection

Posté : 17 juin 2014, 16:04
par telnes
:shock: :non: :priere:

tu est sur d'avoir l'affichage des erreurs activés ?

ensuite $_SESSION['rang'] = $donnees; !!! FAIL

ensuite on écris plutot header() que Header()

si ca t'affichait

2

et ensuite pas d'erreur c'est que tu as un souci dans la conf des erreurs car header() balance forcément une erreur si il y a du "texte" dans le corps de la page web avant.

enjoy