Il y a un script d'authentification assez vieux php sur un de nos serveurs qui ressemble à ceci:mise en mémoire tampon de sortie de PHP et l'emplacement d'en-tête
ob_start();
$log = new Auth();
// returns true
$checkSession = $log->checkLog();
if(!$checkSession){
header("Location: ../index.php");
exit();
}else{
include "content/".$_GET["content"].".php";
}
$content = ob_get_contents();
ob_end_clean();
include "../".WEBROOT_TEMPLATE_FILE;
Il a toujours travaillé en douceur (les utilisateurs authentifiés ont pu accéder à la page, non authentifié les utilisateurs ont été redirigés vers la page d'accueil) ... jusqu'à aujourd'hui! Pour une raison totalement inconnue, lorsque les utilisateurs tentent d'accéder à l'une des pages du serveur à partir d'un lien généré par une base de données Access 2000, ils sont toujours redirigés vers index.php.
La chose étrange est que cela fonctionne bien lorsque vous collez l'URL directement dans le navigateur. L'URL est exactement la même, et la variable $ _SERVER est également la même dans les deux cas. J'ai même vérifié les en-têtes HTTP qui sont également identiques.
De plus, si je commente la redirection, il fonctionne:
if(!$checkSession){
//header("Location: ../index.php");
//exit();
}else{
// that part is executed
include "content/".$_GET["content"].".php";
}
Quelqu'un a eu le même problème, mais malheureusement n'a pas reçu de réponse valable: PHP if-statement ignored when header(Location: xxx) is inside
Toute idée?
Merci d'avance pour votre aide,
modifier: trouvé la solution
Pour une raison quelconque, le serveur apache n'a pas aimé la demande http qui a été générée par la base de données d'accès 2000 et publié un nouveau avec des en-têtes modifiés (en particulier le http accept) ... Malheureusement, la première requête n'a initialisé aucune session ... d'où la redirection vers index.php.
Ainsi, le (laid, mais travailler) solution est, pour moi:
if($_SERVER['HTTP_ACCEPT']!="*/*"){
// Do your stuff
}
nous ne pouvons pas résoudre vos problèmes de codage, nous ne connaissons pas les implémentations. Activer le rapport d'erreurs/erreurs d'affichage et démarrer le débogage. Je ne vois pas d'autre moyen ... – MonkeyMonkey