Probleme de redirection header location php [Résolu/Fermé]

Signaler
Messages postés
11
Date d'inscription
mardi 17 février 2015
Statut
Membre
Dernière intervention
13 avril 2015
-
Messages postés
1
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
3 mai 2018
-
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

Messages postés
2379
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
10 mars 2020
427
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
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59861 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
mardi 17 février 2015
Statut
Membre
Dernière intervention
13 avril 2015

merci pour l explication mais tu peut l explique un peut détaille d'apres mon code
Messages postés
1
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
3 mai 2018

merci bien de l'explication j'ai mis un moment avant de trouver une explication claire comme celle ci
Messages postés
186
Date d'inscription
mercredi 7 mai 2014
Statut
Membre
Dernière intervention
28 septembre 2017
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();	
Messages postés
11
Date d'inscription
mardi 17 février 2015
Statut
Membre
Dernière intervention
13 avril 2015

merci sa marche :)
Messages postés
219
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
27 avril 2020
1
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 !