Probleme de redirection header location php

Résolu/Fermé
medgharbi89 Messages postés 11 Date d'inscription mardi 17 février 2015 Statut Membre Dernière intervention 13 avril 2015 - Modifié par jordane45 le 30/03/2015 à 16:36
wilolie Messages postés 1 Date d'inscription jeudi 3 mai 2018 Statut Membre Dernière intervention 3 mai 2018 - 3 mai 2018 à 11:08
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é!!
<?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

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
30 mars 2015 à 17:17
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
3
medgharbi89 Messages postés 11 Date d'inscription mardi 17 février 2015 Statut Membre Dernière intervention 13 avril 2015
30 mars 2015 à 18:11
merci pour l explication mais tu peut l explique un peut détaille d'apres mon code
0
wilolie Messages postés 1 Date d'inscription jeudi 3 mai 2018 Statut Membre Dernière intervention 3 mai 2018
3 mai 2018 à 11:08
merci bien de l'explication j'ai mis un moment avant de trouver une explication claire comme celle ci
0
Utilisateur anonyme
30 mars 2015 à 16:57
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 !
1
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
30 mars 2015 à 20:40
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();	
1
medgharbi89 Messages postés 11 Date d'inscription mardi 17 février 2015 Statut Membre Dernière intervention 13 avril 2015
31 mars 2015 à 13:13
merci sa marche :)
0