[RESOLU] 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] header location

Re: header location

par Spols » 18 déc. 2015, 10:34

les questions à te poser :
-Que doit voir un visiteur qui vient pour la première fois sur mon site ?
-Comment (par quelle URL) est il arriver sur mon site ?
-Comment (par quelle URL) doit il arriver sur mon site ?
-Comment je sais si l'utilisateur est logué ou non? <== la plus importante
-Quelle page l'utilisateur logué a comme accès en plus ?

Si tu te réponds à ces questions, cela devrait te mettre sur la bonne voie

Re: header location

par MaxRaj » 18 déc. 2015, 09:43

quel condition me suggère tu??? car je ne trouve aucun moyen stp :?

Re: header location

par Spols » 18 déc. 2015, 08:37

ajouter une condition sur le header que tu as supprimer. ou inverser le nom de tes pages

Re: header location

par MaxRaj » 18 déc. 2015, 07:30

J'ai enlevé l'echo et le header('location: page.php') dans ma page index.php mais quand j'ouvre le dossier contenant les deux pages ,c'est la page index.php qui s'affiche mais non pas la page d'authentification (page.php)....Que doit je faire? svp :?:

Re: header location

par Spols » 17 déc. 2015, 17:00

$_SESSION['id'] = $resultat['id'];
			$_SESSION['login'] = $login;
			echo 'Vous êtes connecté !';
			
			header ('location: index.php');
<?php
	session_start ();
	
	header('location: page.php');
	
	
	error_reporting(E_ALL);
Sans avoir analysé tout en détail, voici 2 remarques
Dans le premier code,
Un echo avant un header va forcement poser problème. Si tu veux changer de page tu ne dois avoir aucun texte renvoyé par PHP

Dans le second,
Un header à cet endroit là va forcement poser problème car il rend totalement inutile tout ce qu'il y a en dessous. il n'est pas dans une condition, il s'applique donc à tous
Tu devrais aussi mettre ton error_reporting plus haut dans ton code et surment aussi dans ton premier script.

Re: header location

par ynx » 17 déc. 2015, 15:58

Salut,

Comme souligné par Spols, aucune sortie php ne doit être effectuée avant la modification des entêtes http via header (à moins d'activer la directive php output_buffering).
//echo 'Vous êtes connecté !'; <- pas de echo avant l'utilisation de header
    header('location: index.php');
Il ne faut pas oublier également d'ajouter l'instruction exit(); après un header(Location: ...); pour s'assurer que la suite du code ne soit pas exécutée :
header('location: index.php');
    exit();
Bonne journée

Re: header location

par MaxRaj » 17 déc. 2015, 14:53

Merci pour ta réponse mais mon script n'affiche aucune erreur et il n'y a rien avant mon <?php , voici la page d'authentification que j'ai nommé provisoirement 'page.php' :

Code : Tout sélectionner

<?php session_start (); require_once 'connect.php'; $error='' ; if(!empty ($_POST)) { if(isset($_POST['connect'])) { $login=$_POST['login']; $motdepasse = sha1($_POST['motdepasse']); // Vérification des identifiants $req = $connect->prepare('SELECT id FROM personnel WHERE login=:login AND motdepasse=:motdepasse'); $req->execute(array('login'=>$login, 'motdepasse'=>$motdepasse)); $resultat = $req->fetch(); if (!$resultat) { $error='Mauvais identifiant ou mot de passe !' ; } else { $_SESSION['id'] = $resultat['id']; $_SESSION['login'] = $login; echo 'Vous êtes connecté !'; header ('location: index.php'); } } } ?> <!DOCTYPE html> <html> <head> <title>Authentification</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <div id="main"> <div id="login"> <h2>Login </h2> <form action="" method="post"> <label>Utilisateur :</label> <input id="name" name="login" placeholder="username" type="text" required = "required"/> <label>Mot de passe :</label> <input id="password" name="motdepasse" placeholder="password" type="password" required = "required"/> <input name="connect" type="submit" value="connect"/> <p><a href="inscription.php">S'inscrire </a></p> <!--<span><?php echo $error; ?></span>--> </form> </div> </div> </body> </html>
et voici 'index.php':

Code : Tout sélectionner

<?php session_start (); header('location: page.php'); error_reporting(E_ALL); include_once 'fonctions.php'; $id_page_accueil = 1; if (isset($_GET['id_page'])) { $_ENV['id_page'] = intval($_GET['id_page']); } else { $_ENV['id_page'] = $id_page_accueil; } extraction_infos_DB(); ?> <!DOCTYPE html> <html> <head > <META charset="utf-8"/> <META NAME="keywords" lang="fr" CONTENT="<?php echo $_ENV['mots_cles']; ?>"> <!-- Insère la description extraite de la DB dans les meta --> <META NAME="Description" CONTENT="<?php echo $_ENV['description']; ?>"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title><?php echo $_ENV['titre']; ?></title> <link rel="stylesheet" type="text/css" href="styles.css"> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-8922143-3']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> </head> <body onLoad="getDt()"> <!-- <div id="menu_horizontal"> <?php // Affiche le menu 'racine' => id de la page = id de la page d'accueil = 1 echo affiche_menu($id_page_accueil); ?> </div> --> <div id="chemin_fer"> <?php echo affiche_chemin_fer($_ENV['id_page']); ?> </div> <div id="bloc_central"> <div class="menu_vertical"> <?php // Affiche le menu en cours => id de la page = id de la page en cours. echo affiche_menu($_ENV['id_page']); ?> </div> </body> </html>

Re: header location

par Spols » 17 déc. 2015, 14:24

il est très important que le header apparait dans ton code avant la moindre sortie php du type echo, print etc.

Vérifie aussi qu'en début de fichier, il n'y ai rien avant ton <?php

sinon donne nous ton code et si ce n'est pas fait affiche les erreurs de ton script, il y a des chances que cela nous aiguilles dans la bonne direction

header location

par MaxRaj » 17 déc. 2015, 14:16

Bonjour! J'ai un problème avec la syntaxe header('location: index.php') ,c'est à dire que lors de la saisie d'un login et d'un mot de passe , je devrais être diriger vers index.php (en local) mais ce n'est pas le cas car je reste sur la même page au lieu d'être diriger vers index.php. Ors ,le login et le mot de passe sont correcte! :( |*()
Vous pouvez m'aider??? svp