[RESOLU] Problème de redirection

JVL
Eléphant du PHP | 76 Messages

17 juin 2014, 14:44

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.

Eléphant du PHP | 422 Messages

17 juin 2014, 15:01

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)


++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

JVL
Eléphant du PHP | 76 Messages

17 juin 2014, 15:08

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

Eléphant du PHP | 422 Messages

17 juin 2014, 15:25

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
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

JVL
Eléphant du PHP | 76 Messages

17 juin 2014, 15:28

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');
			}

ViPHP
xTG
ViPHP | 7331 Messages

17 juin 2014, 15:37

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.

JVL
Eléphant du PHP | 76 Messages

17 juin 2014, 15:43

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 !

JVL
Eléphant du PHP | 76 Messages

17 juin 2014, 15:56

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 !

Eléphant du PHP | 422 Messages

17 juin 2014, 16:04

: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
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)