[RESOLU] Redirection d'une page header location

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] Redirection d'une page header location

Re: [RESOLU] Redirection d'une page header location

par reverb » 31 mai 2013, 12:46

Voici ma page de code en entière,
<?php 
session_start();
if(isset($_SESSION['membre_id'])){
        // Si la session membre id existe on redirige vers la page index.
header('Location: index.php');
}

if(isset($_POST['connexion'])){
        $FormValid = true;
        if(empty($_POST['membre_pseudo']) || empty($_POST['membre_mdp'])){
                $FormValid = false;
                // si les champs pseudo & pass sont vide on renvoi une indication.
                $Notification = array('Class'=>'Error','Content'=>'Tous les champs doivent être rempli.');
        } else {
                // Sinon, on traite les informations
                $Pseudo=($_POST['membre_pseudo']);
                $Password=($_POST['membre_mdp']);
                if(strlen($Pseudo) < 3){
                        // si le pseudo contient moins de 3 caractères -> formulaire incorrect.
                        $FormValid = false;
                        $Notification = array('Class'=>'Error','Content'=>'Le pseudo doit contenir plus de 3 caractères.');
                }
                if(strlen($Pseudo) > 150){
                        // si le pseudo contient plus de 150 caractères -> formulaire incorrect.
                        $FormValid = false;
                        $Notification = array('Class'=>'Error','Content'=>'Le pseudo doit contenir moins de 150 caractères.');
                }
                if(strlen($Password) < 3){
                        // si le Password contient moins de 3 caractères -> formulaire incorrect.
                        $FormValid = false;
                        $Notification = array('Class'=>'Error','Content'=>'Le Password doit contenir plus de 3 caractères.');
                }
                if(strlen($Password) > 150){
                        // si le Password contient plus de 150 caractères -> formulaire incorrect.
                        $FormValid = false;
                        $Notification = array('Class'=>'Error','Content'=>'Le Password doit contenir moins de 150 caractères.');
                }
                // autres traitement de tes données..
                
                if($FormValid){
                // si les informations sont correct
                require_once("connexioninscription.inc.php");
                $req = $bdd->prepare('SELECT * FROM membres WHERE membre_pseudo=:membre_pseudo AND membre_mdp=:membre_mdp');
                $req->execute(array('membre_pseudo'=>$Pseudo,'membre_mdp'=>$Password));
                $d = $req->fetch(PDO::FETCH_OBJ);
                $req->closeCursor();
                if($d!=1){
                        // si le résultat est différent de 1, on retourne une indocation.
$Notification = array('Class'=>'Error','Content'=>'Les identifiants sont faux.');
} 
else 
{
                        // Les identifiants sont correct, on créer la session et on redirige vers la page voulue.
						
$_SESSION['membre_id'] = $d->membre_id;
$_SESSION['membre_pseudo']= $d->membre_pseudo;
$_SESSION['membre_mail']= $d->membre_mail;
if(isset($_SESSION['membre_id'])){
header('Location: index.php');
}
                
                }
                
                } // end FormValid
        } // end !empty membre_pseudo ou membre_mdp
} // end isset post connexion

?>
<!DOCTYPE HTML>
<html>
<head>
<link rel="shortcut icon" title="montitre" type="image/png" href="mafavicon.png" />

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Connectez-vous."/>
<title>Connexion / Connectez-vous</title>
<link href="css1.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="container">
<?php include("header.inc.php"); ?>
<?php include("menus.inc.php"); ?>
 <div id="corpsconnexion">
 <div id="retourselect">
 <a href="connexion.php" title="recharger la page"><h1 class="titre1">Connexion</h1></a>
 </div>
 <div id="cadreformins">
<?php if(isset($Notification)){ echo $Notification['Content'];}?>
<p class="texte3">Connectez-vous</p>
<form method="post" name="connexion" action="connexion.php" enctype="multipart/form-data">
<fieldset>
<p class="classinscr"><label>Nom d'utilisateur :
<input type="text" name="membre_pseudo" />
</label>
</p>
<p class="classinscr">
<label>Mot de passe :
<input type="password" name="membre_mdp" />
</label>
</p>
<p class="classinscr">
<label>
<input type="submit" name="connexion" value="connexion" />
</label>
</p>
</fieldset>
</form>
</div>
</div>
<?php include("footer.inc.php"); ?>
</div>
</body>
</html>
Pourtant la redirection du membre déjà connecté fonctionne :roll:
Je cherche une solution, je tiens au courant si je trouve la source du problème :).

Re: [RESOLU] Redirection d'une page header location

par J-oxi » 30 mai 2013, 19:52

Le session_start en premier dans ta page?
$_SESSION['membre_id'] contient bien une valeur?
Je vois pas comme ça.

Re: [RESOLU] Redirection d'une page header location

par reverb » 30 mai 2013, 19:40

Re,
Oui la dessus pas de soucis ^^ je n'ai fait aucun dossier pour classer mes pages, toutes les pages de mon site se trouvent à la racine public/www. ( je suis pas très organisé à ce niveau là x).

Re: [RESOLU] Redirection d'une page header location

par J-oxi » 30 mai 2013, 19:09

La page index.php ce situe bien au même niveau sur le serveur que la page du code ou se trouve la redirection?

Re: [RESOLU] Redirection d'une page header location

par reverb » 30 mai 2013, 18:33

Re j-oxi ^^,
j'avais une dernière petite question concernant la redirection de page,
après avoir envoyer le pseudo et mdp pour se connecté, aucune redirection de page ne se produit, pourtant l'action est bien rédigé, pense tu que le fait de laisser les commentaire ( //blablabla ) puisse causer des problèmes au bon fonctionnemet ?

mon code :
$_SESSION['membre_id'] = $d->membre_id;
$_SESSION['membre_pseudo']= $d->membre_pseudo;
$_SESSION['membre_mail']= $d->membre_mail;
if(isset($_SESSION['membre_id'])){
header('Location: index.php');
}
// j'ai bien vérifié qu'il n'y avait aucun code html avant header location
merci pour ton tes réponses qui me son d'une grande aide :D sincèrement.

Re: Redirection d'une page header location

par J-oxi » 29 mai 2013, 13:52

Np', oublie pas de mettre le sujet en résolu.

Re: Redirection d'une page header location

par reverb » 29 mai 2013, 13:45

Re,

tout fonctionne correctement.
Merci encore pour ton aide j-oxi :),
Sincèrement.

Re: Redirection d'une page header location

par J-oxi » 29 mai 2013, 13:34

Possible que j'ai fait une erreur, je crois que ce n'est pas $résultat mais $d.

Et cette partie du code sert a verifié que la ligne existe bien dans la base de données.

Re: Redirection d'une page header location

par reverb » 29 mai 2013, 13:31

Bonjour,

(Merci pour ta réponse J-oxi :))
J'ai trouvé la phrase de code qui faisait planté, mais je ne vois pas à quoi elle peut servir je l'ai donc retiré dans un premier temps ( et tout fonctionne correctement ^^ )

Voici le code que j'ai retiré :
if($resultat!=1){
                        // si le résultat est différent de 1, on retourne une indocation.
                        $Notification = array('Class'=>'Error','Content'=>'Les identifiants sont faux.');
                } else {
                        // Les identifiants sont correct, on créer la session et on redirige vers la page voulue.
}
Merci pour ton attention et ton aide :),
Sincèrement.

Re: Redirection d'une page header location

par J-oxi » 28 mai 2013, 16:31

Le code semble fonctionner chez moi. Je n'ai pas tester la parti base de données don vérifie a ce niveau la. Valeurs, Noms de champs etc..

Pour ta question :
La variable $Notification, n'est qu'un tableau contenant la classe et le contenu,
tu t'en sers avec une ligne comme ça dans ta page html pour afficher les erreur ou éventuellement le succès du formulaire.
<?php if(isset($Notification)){ ?>
<span class="<?php echo $Notification['Class'];?>"><?php echo $Notification['Content'];?></span>
<?php }?>

Re: Redirection d'une page header location

par reverb » 28 mai 2013, 16:13

Bonjour j-oxy,
Merci pour cette nouvelle méthode :),
Je l'ai donc mis en application, mais il y a un problème :/,
la page de code détecte les identifiants comme faux :s (Si je comprend bien, cette phrase de code fonctionne de la même manière que echo '<span class=Error>' ('Class'=>'Error','Content'=>'Le pseudo doit contenir plus de 3 caractères.'); ? )

Merci pour ton soutien et ton aide :).
Sincèrement.

Re: Redirection d'une page header location

par J-oxi » 27 mai 2013, 19:47

essaye quelque chose de comme ça,
je l'ai pas vérifier.
<?php 
session_start();
if(isset($_SESSION['membre_id'])){
	// Si la session membre id existe on redirige vers la page index.
header('Location:index.php');
}

if(isset($_POST['connexion'])){
	$FormValid = true;
	if(empty($_POST['membre_pseudo']) || empty($_POST['membre_mdp'])){
		$FormValid = false;
		// si les champs pseudo & pass sont vide on renvoi une indication.
		$Notification = array('Class'=>'Error','Content'=>'Tous les champs doivent être rempli.');
	} else {
		// Sinon, on traite les informations
		$Pseudo = $_POST['membre_pseudo'];
		$Password = $_POST['membre_mdp'];
		if(strlen($Pseudo) < 3){
			// si le pseudo contient moins de 3 caractères -> formulaire incorrect.
			$FormValid = false;
			$Notification = array('Class'=>'Error','Content'=>'Le pseudo doit contenir plus de 3 caractères.');
		}
		if(strlen($Pseudo) > 150){
			// si le pseudo contient plus de 150 caractères -> formulaire incorrect.
			$FormValid = false;
			$Notification = array('Class'=>'Error','Content'=>'Le pseudo doit contenir moins de 150 caractères.');
		}
		if(strlen($Password) < 3){
			// si le Password contient moins de 3 caractères -> formulaire incorrect.
			$FormValid = false;
			$Notification = array('Class'=>'Error','Content'=>'Le Password doit contenir plus de 3 caractères.');
		}
		if(strlen($Password) > 150){
			// si le Password contient plus de 150 caractères -> formulaire incorrect.
			$FormValid = false;
			$Notification = array('Class'=>'Error','Content'=>'Le Password doit contenir moins de 150 caractères.');
		}
		// autres traitement de tes données..
		
		if($FormValid){
		// si les informations sont correct
		//require_once("connexioninscription.inc.php");
		$passhache = $Password;
		$req = $bdd->prepare('SELECT * FROM membres WHERE membre_pseudo=:membre_pseudo AND membre_mdp=:membre_mdp');
		$req->execute(array('membre_pseudo'=>$Pseudo,'membre_mdp'=> $passhache));
		$d = $req->fetch(PDO::FETCH_OBJ);
		$req->closeCursor();
		if($resultat != 1){
			// si le résultat est différent de 1, on retourne une indocation.
			$Notification = array('Class'=>'Error','Content'=>'Les identifiants sont faux.');
		} else {
			// Les identifiants sont correct, on créer la session et on redirige vers la page voulue.
		$_SESSION['membre_id'] = $d->membre_id;
		$_SESSION['membre_pseudo']= $d->membre_pseudo;
		$_SESSION['membre_mail']= $d->membre_mail;
		if(isset($_SESSION['membre_id'])){
		header('Location:index.php');
		}
		
		}
		
		} // end FormValid
	} // end !empty membre_pseudo ou membre_mdp
} // end isset post connexion

?><!DOCTYPE HTML>
<html>
<head>
<link rel="shortcut icon" title="montitre" type="image/png" href="mafavicon.png" />

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Connectez-vous."/>
<title>Connexion / Connectez-vous </title>
<link href="css1.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="container">
<?php //include("header.inc.php"); ?>
<?php //include("menus.inc.php"); ?>
 <div id="corpsconnexion">
 <div id="retourselect">
 <a href="connexion.php" title="recharger la page"><h1 class="titre1">Connexion</h1></a>
 </div>
 <div id="cadreformins">
<?php if(isset($Notification)){ echo $Notification['Content'];}?>
<p class="texte3">Connectez-vous</p>
<form method="post" name="connexion" action="connexion.php" enctype="multipart/form-data">
<fieldset>
<p class="classinscr"><label>Nom d'utilisateur :
<input type="text" name="membre_pseudo" />
</label>
</p>
<p class="classinscr">
<label>Mot de passe :
<input type="password" name="membre_mdp" />
</label>
</p>
<p class="classinscr">
<label>
<input type="submit" name="connexion" value="connexion" />
</label>
</p>
</fieldset>
</form>
</div>
</div>
<?php //include("footer.inc.php"); ?>
</div>
</body>
</html>

Re: Redirection d'une page header location

par reverb » 27 mai 2013, 19:44

Re,
Dans plusieurs tutoriel, il est conseillée de séparer les éléments. ( j'ai justement suivi un de ces tuto ^^ )
Peut-être est-ce inutile ^^' ? je vais essayer de tout regrouper sur la page connexion.php
Merci pour ton aide

Re: Redirection d'une page header location

par J-oxi » 27 mai 2013, 19:15

Salut,
Pourquoi tu ne fais pas directement le traitement sur ta page connexion.php? ça t'éviterais des redirections inutile.

Redirection d'une page header location

par reverb » 27 mai 2013, 17:31

Bonjour à tous,
J'ai précédemment créé un formulaire d'inscription de connexion et la déconnexion.
Lorsque l'on se retrouve sur la page de connexion (connexion.php pour se connecter ) j'insère un pseudo et un mot de passe (test), puis, la connexion s'effectue bien (faisant appelle à ma page connexionvalide.php) , mais la redirection vers ma page connexion ne fonctionne pas :/ pourtant aucune erreur ne s'affiche :(.
Voici les codes de mes deux pages :
connexion.php
<?php session_start(); ?>
<!DOCTYPE HTML>
<html>
<head>
<link rel="shortcut icon" title="montitre" type="image/png" href="mafavicon.png" />

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Connectez-vous."/>
<title>Connexion / Connectez-vous </title>
<link href="css1.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="container">
<?php include("header.inc.php"); ?>
<?php include("menus.inc.php"); ?>
 <div id="corpsconnexion">
 <div id="retourselect">
 <a href="connexion.php" title="recharger la page"><h1 class="titre1">Connexion</h1></a>
 </div>
 <div id="cadreformins">
<?php
if (empty($_SESSION['membre_id']))
{
?>
<p class="texte3">Connectez-vous</p>
<form method="post" action="connexionvalide.php" enctype="multipart/form-data">
<fieldset>
<p class="classinscr"><label>Nom d'utilisateur :
<input type="text" name="membre_pseudo" />
</label>
</p>
<p class="classinscr">
<label>Mot de passe :
<input type="password" name="membre_mdp" />
</label>
</p>
<p class="classinscr">
<label>
<input type="submit" name="submit" value="connexion" />
</label>
</p>
</fieldset>
</form>
<?php
}
else
{
echo '<span class="textewarning">'."Vous êtes déjà connecté".'</span><br />';
echo '<span class="textesimple">'."Le site est encore en cours de création, pour cette raison l'éspace membre reste limité, avec ses fonctions.".'</span>';
}
?>
</div>
</div>
<?php include("footer.inc.php"); ?>
</div>
</body>
</html>
et voici ma page connexionvalide.php :
<?php session_start(); ?>
<?php if (empty($_SESSION['membre_id']))
{
    /* il faut que toutes les variables du formulaires existent*/
if(isset($_POST['membre_pseudo']) && isset($_POST['membre_mdp']))
{
    /*il faut que tous les champs soient renseignes*/
if($_POST['membre_pseudo']!="" && $_POST['membre_mdp']!="")
{
    /*connexion a la BDD*/
require_once("connexioninscription.inc.php");
     
    /*on crypte le mot de passe pour faire le test*/
$passhache =($_POST['membre_mdp']);
     
    /* on verifie qu'un membre a bien ce pseudo et ce mot de passe*/
$req = $bdd->prepare('SELECT * FROM membres WHERE membre_pseudo=:membre_pseudo AND membre_mdp=:membre_mdp');
$req->execute(array('membre_pseudo'=> $_POST['membre_pseudo'], 'membre_mdp'=> $passhache));
$resultat=$req->fetch();
     
/*si il n'y a pas de resultats, on renvoie a la page de connexion*/
if(!$resultat)
{
header('Location: connexion.php');
}
else
{
session_start();
$_SESSION['membre_id']= $resultat['membre_id'];
$_SESSION['membre_pseudo']= $pseudo;
$_SESSION['membre_mail']= $resultat['membre_mail'];
header('Location: connexion.php');
} ?>
<!DOCTYPE HTML>
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Connectez-vous."/>
<title>Connexion / Connectez-vous</title>
<link rel="shortcut icon" title="montitre" type="image/png" href="mafavicon.png" />
<link href="css1.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="container">

<?php include("header.inc.php"); ?>
<?php include("menus.inc.php"); ?>
 <div id="corpsconnexion">
 <div id="retourselect">
 <a href="connexion.php" title="recharger la page"><h1 class="titre1">Connexion</h1></a>
 </div>

</div>
  <?php
}
else
{
echo '<span class="texteerror">'."Il faut remplir tous les champs".'</span>';
}
}
else
{
echo '<span class="texteerror">'."Une erreur s'est produite".'</span>';
}
}
else
{
echo '<span class="textewarning">'."Vous êtes déjà connecté".'</span>';
}
?>


<?php include("footer.inc.php");?>

</div>

</body>
</html>
, Merci pour votre attention et votre aide.