L'en-tête() n'est pas la redirection PHP
Je suis à l'aide de code PHP suivant pour vérifier la session. Mais si la session n'est pas connecté alors la page n'est pas de redirection juste vous montrer la page noire.
Mon Si la condition est bonne ! il est frappant de l'en-tête de la fonction ..
Voici mon code:
if(
!isset($_SESSION['SESS_MEMBER_ID'])
|| (trim($_SESSION['SESS_MEMBER_ID']) == '')
AND !isset($fb_login)
) {
header("location:login.php?msg=Please+Login+Again.");
}
Suggestions sont les bienvenues!
HTTP/1.1 200 OK
Date: Wed, 10 Oct 2012 10:57:14 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
- Vous pourriez trouver cela utile: va PHP header() & exit() en toute sécurité de mettre fin à un script avant de rediriger? mais votre question contient trop peu d'informations pour dire en fait qu'est-ce que le problème concret que vous avez.
- Vous trouverez peut-être ce plus utile: stackoverflow.com/questions/7487156/php-redirect-to-not-working/...
- Activer le rapport d'erreurs. Je serais très surpris si vous n'obtenez pas un "Headers already sent" erreur.
- Rapport d'erreur est sur ! Pas d'erreurs ... SI la condition est parfait. il est frappant de l'en-tête de la fonction
- Si vous n'êtes pas sûr de la cause, malgré les rapports d'erreurs, et vous n'en êtes pas à l'aise avec la
header
appel, essayez d'utiliser lehttp_redirect
de la fonction, il demande une extension PHP, juste pour dire. Elle a été faite exactement pour de tels cas. - double possible de en-Têtes déjà envoyé par PHP
- Je ne suis pas modifier les en-têtes. Sa syntaxe parfaite ! 🙁 Ne sait pas où il est mauvais !
- Eh bien, si tu as fait tout correctement et en parfaite syntaxe, pourquoi nous embêter avec cette question?
- Ouais ! Tout est parfait ! Vous pouvez venir, Gmail, la messagerie instantanée, je vais vous montrer l'URL ! Si vous n'avez pas l'esprit
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez
header("Location: ");
après que vous avez du contenu de sortie assurez-vous de mettreob_start();
plus tôt dans le script.ob_start();
tampons de votre script, donc rien n'est de sortie jusqu'à ce que vous appelezob_end();
ou la fin du fichier est atteinte. L'appel deheader("Location: ");
une fois que le contenu a déjà été sortie vers le navigateur peut causer des problèmes.if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') && !isset($fb_login)) { header("location:login.php?msg=Please+Login+Again."); } else { print("In else."); }
Alors si vous voyez "Dans un autre." vous savez que l'instruction conditionnelle est de résoudre faux.header("Location: ");
?Mettre ob_start(); en début de fichier PHP , il sera aide,
Assurez-vous de mettre une sortie; ou mourir; après la commande: et de faire de la "Localisation" de commencer avec des majuscules
Faire la
L
capital.Essayer de formater l'en-tête correctement:
Et bien sûr, assurez-vous que vous n'êtes pas d'envoyer une sortie (que ce soit volontairement ou par erreur) avant l'appel.
1) assurez-vous de ne pas envoyer quoi que ce soit avant la fonction header ()
2) Faire "emplacement" à "Location: "
En ajoutant à ce que les autres ont dit, êtes-vous sûr que les cnditions sont réunies pour frapper l'en-tête()
Vous pouvez utiliser empty() pour éclaircir votre code & Faire des essais :
D'essayer de changer le
AND
pour&&