Header ne fonctionne pas (php)

Bonjours,

J'utilise easyPhp.

Version de php : 4.3.10

Voici le code :

<?php

	if(isset($_GET['mdp']) AND isset($_GET['prenom'])) {
		header("location : http://".$_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/mapage.php");

	}
	else {
		$classe = htmlspecialchars($_GET['classe']);
	};
?>
<!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></title>
</head>

<body>
<h1>Bienvenu dans la classe de « secondaire <?php echo $classe ?></strong> »</h1>
<form action="classe.php">
<label>Prenom :         </label>
<input type="text" name="prenom" /><br />
<label>Mot de passe : </label><input type="password" name="mdp" /><br />
<input type="submit" value="valider" />
</form>
</body>
</html>


Je ne sais pas pourquoi mais mon header ne marche pas. J'ai mis un echo pour voir si il rentrais dans ma condition et il m'as belle et bien écrit quelque choses.

J'ai même mis mon header tout de suite après le <?php ......mais absolument rien. Il semble ne pas exécuter le header.

Donc ma question est de savoir pourquoi à votre avis il ne veut pas et qu'est-ce que je peut faire pour le résoudre.

Merci beaucoup
Configuration: Windows XP
Firefox 2.0.0.4

8 réponses

  1. Dsl tout le monde

    Je suis stupid. tout ce qui faisait boguer c'est les ':' après le Location.

    Donc si jamais ya qq1 qui a ce même problème ba faite gaffe a mettre les : coller sur Location

    Merci a tous
    1. Contributeur
      Donc t'as pas vraiment testé mon code :p
    2. lollll oui mais après j'lai remis comme à l'ancienne et j'ai juste coller les : sur le Location

      mais merci spark pour tes conseil
    3. C'est ça il faut coller : à location comme ceci location:
  2. si je peux me permettre un conseille, quand tu fais :
    header("location : http://".$_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/mapage.php");

    essai de faire une variable intermediaire, ton code sera plus clair et tes erreurs moins nombreuse.

    explique nous le but de ton code, je pense qu'une solution alternative s'impose. (peut que je me trompe lol)
    1. Salut lexdc.

      Le but de mon code est de valider le nom de l'utilisateur et le mot de passe.

      Donc la page du formulaire = classe.php

      un coup le formulaire envoyer = classe.php

      Il vérifie si le mot de passe et le nom d'utilisateur est correct. Si oui, il nous envoie à la page maPage.php. Si non, il reste dans la même page et il affiche un message d'erreur.

      Si pour tout le monde sa fonctionne cette méthode. Et bien peut-être que mon serveur ya quelque choses de mal configurer :S.

      Donc jespère que j'ai été bien claire.

      Merci
      1. Bonjour, j'ai eu il y quelques temps un problème similaire, peut être est ce que ça pourra t'aider :

        J'enregistrai mes fichiers toto.php encodés en UTF-8 et ce n'était pas compatible avec header vu qu'avant toute chose mon fichier contenait les symboles d'encodage...

        Bon courage.
        1. Salut MoArmel,

          Pourrait tu me dire en quelle encodage tu la mis pour que ca puisse marcher?

          Merci
          1. Heu ! Maintenant je laisse l'encodage en ascii (j'utilise Crimson Editor, c'est top bien et top gratuit) mais je suppose qu'il existe plusieurs types d'encodages qui sont compatibles avec php.

            Bye.
        2. Contributeur
          Salut
          header("location : http://".$_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/mapage.php");

          C'est quoi tous ca ?

          Tu peux mettre simplement :
          header("Location: http://".$_SERVER['HTTP_HOST']."/mapage.php");


          Edit :

          y'a un truc qui se balade dans ton code (;):

          lse {
          $classe = htmlspecialchars($_GET['classe']);
          };
          1. Salut s.spark,

            Pour ta solution je ne suis pas trop sur (http://fr.php.net/header).

            Mais j'ai lu quelque choses https://www.developpez.net/forums/d105113/php/langage/debat-encodage-caracteres-speciaux-iso-8859-1-vs-utf8/

            Il dise quelque choses à propos de BOM. Sa me dit absolument rien mais tk. J'ai dreamweaver mx 2004 et l'option BOM est décocher donc je ne crois pas que sa l'as rapport à ça. Mais si quelqu'un pensse le contraire dit le moi

            Merci
            1. Contributeur
              As-tu essayé ce que je t'ai donné ?
            2. Salut spark,

              Oui j'ai essayer ce que tu m'as dit......mais toujours rien :(
          2. Contributeur
            Au fait là tel qu'est ton code tu vérifies que les variable $_GET['mdp'] et $_GET['prenom'] sont bien vide (si oui ok sa passe).