J'ai travaillé sur un projet qui me demande d'effectuer une redirection JS vers une page, en configurant une variable de session en PHP via une requête AJAX, puis en vérifiant que la session est réglé. Après une vérification réussie, l'URL de redirection serait alors construite dans JS et la redirection effectuée.Redirection JS après avoir défini une session var avec AJAX
Ce que j'ai à ce jour est:
<?php
$v_ip = $_SERVER['REMOTE_ADDR'];
$hash = md5($v_ip);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$.ajax({
type : 'POST',
url : './session.php',
dataType: "json",
data: "<?php echo $hash; ?>",
success : function(data){},
error : function(){}
});
</script>
<script>
<?php
if(isset($_SESSION['allow'])) {
echo "var url = \"url-here/?token=\";
var token = \"token\";
var redirect = url.concat(token);";
}
?>
window.location.replace(redirect);
</script>
</head>
</html>
Et le code PHP qui définit la variable:
<?php
session_start();
$v_ip = $_SERVER['REMOTE_ADDR'];
$hash = md5($v_ip);
if(isset($_POST["$hash"])) {
$_SESSION['allow'] = true;
}
?>
Sur une première visite à la page, tout est traité correctement et de travaux jusqu'au point de la redirection réelle. La variable de session est définie, le code JS est correctement sorti dans le code de la page, et pour une raison étrange, la fonction window.location.replace réelle n'est pas activée. La page reste simplement vide - lors de l'inspection, le code source affiche tout correctement, et pourtant la redirection ne se produit pas. Si je visite la page une fois de plus, la redirection est bien faite. Si je change le nom de la variable de session dans les deux fichiers, et que je dois tout re-régler, la même chose se produit: lors de la visite initiale, la redirection n'est pas traitée, mais clairement jusqu'à la redirection réelle est traité correctement à nouveau.
Pourquoi cela se produit-il?
C'est la chose - le si n'échoue pas - quand j'inspecte le code source de la page blanche, il montre le code JS conditionnel sorti correctement, ce qui signifie que la session var est définie. Il n'exécute tout simplement pas la redirection pour une raison quelconque. Toutes les variables utilisées pour la construction de l'URL de redirection sont définies correctement. – Mirian
Utilisez-vous 'View Source'? Cela fait un autre GET de l'URL, donc c'est comme aller à la page une seconde fois. – Barmar
Y a-t-il des erreurs dans la console Javascript? – Barmar