[RESOLU] Problème de redirection

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 : [RESOLU] Problème de redirection

Re: [RESOLU] Problème de redirection

par telnes » 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

Re: Problème de redirection

par JVL » 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 !

Re: Problème de redirection

par JVL » 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 !

Re: Problème de redirection

par xTG » 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.

Re: Problème de redirection

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

Re: Problème de redirection

par telnes » 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

Re: Problème de redirection

par JVL » 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

Re: Problème de redirection

par telnes » 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)


++

Problème de redirection

par JVL » 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.