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 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   527
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
merci bien de l'explication j'ai mis un moment avant de trouver une explication claire comme celle ci
0
Utilisateur anonyme
 
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   Statut Membre Dernière intervention   24
 
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   Statut Membre Dernière intervention  
 
merci sa marche :)
0