Probleme de redirection header location php
Résolu
medgharbi89
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
wilolie Messages postés 1 Statut Membre -
wilolie Messages postés 1 Statut Membre -
Bonjour,
mon problème est avec les redirections des pages en php ,pour faire ça,j'ai utilisé la fonction
header("Location:index.php");
sur mon ordinateur dans le localhost ça fonctionne très bien,mais après l'hébergement de site sur le serveur web,la redirection n'a pas marché!!
EDIT : Ajout du langage dans les balises de code
mon problème est avec les redirections des pages en php ,pour faire ça,j'ai utilisé la fonction
header("Location:index.php");
sur mon ordinateur dans le localhost ça fonctionne très bien,mais après l'hébergement de site sur le serveur web,la redirection n'a pas marché!!
<?php
session_start();
include("config.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd]">
<html xmlns="[http://www.w3.org/1999/xhtml]">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Connexion</title>
<link href="login-box.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div style="padding: 100px 0 0 250px;">
<div id="login-box">
<form action="loging.php" method="post" name="form">
<H2>Accès Privé</H2>
<?php
if(isset($_POST["login"]) && isset($_POST["pass"])) {
$login = $_POST["login"] ;
$pass = $_POST["pass"] ;
if(empty($login) || empty($pass))
{
echo '<script language="javascript">alert ("Attention champs vides non autorisés!");</script>';
echo "<p align='center'><a href='Loging.php'>Réesseyez</a></p>" ;
} else {
$sql = "select * from admin_recrut where login='".$login."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['pass'] != md5($pass) || $data['login'] != $login) {
echo "<p align='center'><font face='verdana' size=2 color='#006699'><b>Désolé login ou pass non valide</b></font></p>";
echo "<p align='center'><a href='Loging.php'>Réesseyez</a></p>" ;
} else {
$_SESSION['login'] = $login;
$_SESSION['pass'] = $pass;
// transférer vers une autre page
header('Location:index.php');
}
}
}else{
echo "Veuillez saisir vos identifiants de connexion svp!";
}
?>
<br />
<br />
<div id="login-box-name" style="margin-top:20px;">login:</div>
<div id="login-box-field" style="margin-top:20px;">
<input name="login" class="form-login" title="Username" value="" size="30" maxlength="2048" />
</div>
<div id="login-box-name">pass:</div>
<div id="login-box-field">
<input name="pass" type="password" class="form-login" title="Password" value="" size="30" maxlength="2048" />
</div>
<br />
<br />
<br />
<a href="#"><img src="images/login-btn.png" width="103" height="42" style="margin-left:90px;" onClick="form.submit();" /></a>
</form>
</div>
</div>
</body>
</html>
EDIT : Ajout du langage dans les balises de code
3 réponses
-
Salut,
Je suppose qu'il s'agit de l'erreur Headers already sent
Tu ne peux pas modifier les entêtes HTTP si tu as déjà commencer à envoyer du contenu :
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include ou require, et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
https://www.php.net/manual/fr/function.header.php
Deux solutions pour résoudre ton problème avec l'utilisation de la fonction header() :
- Solution 1 (recommandée mais long) : rassembler le traitement php et les appels à la fonction header() au début de ta page et n'utiliser php dans ton html uniquement pour l'affichage.
- Solution 2 (non recommandée mais rapide) : activer l'option output_buffering de php sur ton serveur (qui doit être activé sur ton serveur local, ce qui explique que ca ne marche que en local).
Bonne journée -
Bonjour, cette ligne de code marche très ben en local :
header('Location:index.php');
Mais en ligne il serai préférable d'utiliser :
header('Location:http://Adresse_du_site.fr/index.php');
Je pense que cela devrait marcher ! -
Pour le même problème j'ai déjà utilisé ce genre d'alternatives, j'admets que ce n'est pas très propre mais cela peut dépanner quand le header() fait des siennes.
echo " <script type='text/javascript'>document.location.replace('index.php?page=mapage');</script>"; exit();