8791 sujets

Développement web côté serveur, CMS

Bonjour,

Depuis quelques jours et malgré les multitudes recherches sur le net, je n'arrive pas à faire fonctionner la redirection d'une page web.
Pour être sûr de ne pas avoir d'erreur dans mon code, j'ai créé un page php contenant simplement les lignes suivantes :

    header("Location:  http://www.google.fr/");
 
    exit();


Je précise qu'il n'y a pas d'espaces ou de code html avant ces lignes.

Mais le résultat est une page vide... et les informations de l'en-tête http sont les suivantes :

Date: Thu, 18 Mar 2010 09:47:04 GMT
Server: Apache/2.2.14 (Win32) PHP/5.3.1
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

302 Found

Est-ce un problème de configuration lié à apache ou php ? Ou autre chose qui m'aurait échappé ?


Merci de votre aide !
Modifié par yannneo (19 Mar 2010 - 15:58)
Merci pour ta réponse.

Mais penses-tu que l'urlwriting (seule fonction que j'ai activé dans le fichier config d'apache) ait une influence sur la fonction header ?

Sinon que peut-on me conseiller pour remplacer cette fonction (notamment dans le fichier .htaccess) ?
Ci-dessous un bout de mon code :


// On teste si nos variables sont définies
if (isset($_POST['pseudo']) && isset($_POST['pswd'])) {

    // On vérifie si le pseudo existe avant de procéder à la vérification du mot de passe
    if ( checkPseudoExist( htmlentities ($_POST['pseudo']) ) ) {
        $cryptedPswd = sha1($_POST['pswd'].$grainOfSalt);

        session_start ();
        // On enregistre les paramètres de notre visiteur comme variables de session 
        $_SESSION['pseudo'] = $_POST['pseudo'];
        $_SESSION['pswd'] = $_POST['pswd'];

        // On redirige notre visiteur vers une page de notre section membre
        header('location:  http://localhost:8080/monsite/users/member_index.php');
 
    }
    else {
        // Le visiteur n'a pas été reconnu comme étant membre du site
        echo '<body onLoad="alert(\'Identifiants non reconnus...\')">';
        // Puis on le redirige vers la page d'accueil
        echo '<meta http-equiv="refresh" content="0;URL=http://localhost:8080/monsite/index.php">';
    }

...


Merci de ton aide.
yannneo a écrit :
Mais penses-tu que l'urlwriting (seule fonction que j'ai activé dans le fichier config d'apache) ait une influence sur la fonction header ?
Non mais par contre je pense que :
* avant de poser une nouvelle question ce serait bien de répondre à celle que j'ai posée plus haut : enregistres-tu tes pages en utf-8 avec BOM ?
* à priori tu es en local (EasyPHP ?) et si je comprends bien tu as désactivé tous les modules Apache paramétrés par défaut pour ne mettre que rewrite_module ? Si oui pourquoi ?

yannneo a écrit :
Sinon que peut-on me conseiller pour remplacer cette fonction (notamment dans le fichier .htaccess) ?
Euh... rien compris : le code PHP en question ne peut pas être remplacé par de l'urlrewriting !

Par ailleurs ton code comporte (au moins) une énormité :
echo '<body ... >'; 
suivi de
echo '<meta  ... >'; 

Modifié par Heyoan (18 Mar 2010 - 16:06)
J'utilise l'IDE Netbeans 6.8 pour coder mes lignes.
Je confirme bien que mes fichiers sont enregistrés au format utf-8 mais par contre pas moyen de savoir (de moins à ma connaissance) si c'est avec ou sans BOM.

Non je n'ai pas désactivé tous les modules, je n'ai activé en conséquence que le module suivant :
LoadModule rewrite_module modules/mod_rewrite.so
et modifiés les paramètres :
AccessFileName ...
et
AllowOverride ...

C'était juste pour avoir une adresse plus agréable à voir :
exp :
www.monsite.fr/index.php -> www.monsite.fr/


Concernant mon énormité :

echo '<body ... >';

suivi de

echo '<meta ... >';


étant débutant, je n'ai pas percuté l'aberration...

Merci de ta patience
Modifié par yannneo (18 Mar 2010 - 16:59)
yannneo a écrit :
J'utilise l'IDE Netbeans 6.8 pour coder mes lignes.
Du coup je ne vais pas pouvoir t'aider car je ne sais si ni où ça se paramètre. Par contre pour faire le test tu pourrais utiliser n'importe quel éditeur (genre Notepad si tu es sous windows) et faire un simple fichier test.php
<?php
    header("Location:   http://www.google.fr/");  
    exit();
?>
Si ça fonctionne c'est que c'est bien un problème de BOM ajouté par NetBeans.

yannneo a écrit :
étant débutant, je n'ai pas percuté aberration...
Ce n'est pas un problème de PHP mais d'HTML : les éléments META doivent être placés dans le HEAD et pas dans le BODY (cf. le Squelettor pour partir d'une bonne structure). Du coup la redirection via header doit forcément être faite avant le DOCTYPE et tu ne peut pas afficher directement ton BODY à ce moment là. D'ailleurs c'est un peu vilain d'utiliser un alert JavaScript : voir un exemple dans ce post.
Modifié par Heyoan (18 Mar 2010 - 17:03)
Bonjour Heyoan,

Pour ton information :

Après plusieurs jours de recherches, j'ai enfin trouvé le problème : il s'agissait d'un bug de ma version de PHP Smiley decu
Solution -> installation de la dernière version de PHP et la redirection avec la fonction header fonctionne parfaitement...

Ce fut long et laborieux Smiley biggol mais au final le problème a été résolu Smiley ravi

Merci encore pour ton aide