Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 00h04   #1
Membre confirmé
 
Inscription : mai 2002
Messages : 543
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 543
Points : 238
Points : 238
Par défaut Problème de redirection

Bonjour,

J'ai ceci :
Code :
1
2
3
4
5
6
function requireLogin() {
    if ( empty( $_SESSION['userId'] ) ) {
        $_SESSION['returnTo'] = $_SERVER['REQUEST_URI'];
	Registry::getObject( 'response' )->redirect( './?rt=users/login/loginform', 401 );
    }
}
et une classe Response contenant :
Code :
1
2
3
4
5
6
 
public function redirect( $url, $status = 302 ) {
        //...
        header( 'Location: ' . $url );
        exit( 0 );
}
Classe Response complète.

La redirection ne fonctionne pas. Avec un header( 'Location: ' . './?rt=users/login/loginform' ); dans la première fonction la redirection fonctionne. Je ne comprend pas ce qui se passe.
Neuromancien2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 06h15   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 738
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 738
Points : 3 310
Points : 3 310
Salut

Code :
'./?rt=users/login/loginform'
Il faudrait peut être mettre un nom à la page de redirection (genre login.php?...etc..) et non ./
Là, tu laisses le système de fournir ce nom automatiquement, peut être que le nom sera celui où le script est exécuté, c'est à dire le nom où se trouve cette fonction requireLogin().


Essai ceci (provisoirement) pour voir :
Code :
1
2
3
4
public function redirect($url, $status = 302) {
    echo 'Une redirection : '.$url;
    exit();
}
Par ailleurs, est il normalisé (si on peu dire) de renvoyer une entête de type 400, 401, 404, 500 au niveau d'une redirection ?
Ne faudrait il pas renvoyer une entête de type 301, 302 ou 303 uniquement, car c'est une redirection ?

Les entêtes de type 404 ou 500, etc .. c'est théoriquement lié à un contenu, une page, non ?
Si on prévoit une page genre 404.php, on rajouterait une entête de type 404 à cette page.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 22h31   #3
Membre confirmé
 
Inscription : mai 2002
Messages : 543
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 543
Points : 238
Points : 238
Citation:
Envoyé par RunCodePhp Voir le message
Par ailleurs, est il normalisé (si on peu dire) de renvoyer une entête de type 400, 401, 404, 500 au niveau d'une redirection ?
Ne faudrait il pas renvoyer une entête de type 301, 302 ou 303 uniquement, car c'est une redirection ?

Les entêtes de type 404 ou 500, etc .. c'est théoriquement lié à un contenu, une page, non ?
Si on prévoit une page genre 404.php, on rajouterait une entête de type 404 à cette page.
Ah ah ! Le problème était là : avec le code 401, la redirection ne fonctionne pas. Avec 302 la redirection fonctionne sans problème. Merci.
Neuromancien2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h54.


 
 
 
 
Partenaires

Hébergement Web