Page 1 sur 1
header location
Posté : 17 déc. 2015, 14:16
par MaxRaj
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
Re: header location
Posté : 17 déc. 2015, 14:24
par Spols
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
Re: header location
Posté : 17 déc. 2015, 14:53
par MaxRaj
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
Posté : 17 déc. 2015, 15:58
par ynx
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
Posté : 17 déc. 2015, 17:00
par Spols
$_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
Posté : 18 déc. 2015, 07:30
par MaxRaj
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
Posté : 18 déc. 2015, 08:37
par Spols
ajouter une condition sur le header que tu as supprimer. ou inverser le nom de tes pages
Re: header location
Posté : 18 déc. 2015, 09:43
par MaxRaj
quel condition me suggère tu??? car je ne trouve aucun moyen stp

Re: header location
Posté : 18 déc. 2015, 10:34
par Spols
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