私はページへのJSリダイレクトを実行する必要があるプロジェクトで作業していました.AJAXクエリを介してPHPでセッション変数を設定し、設定されています。チェックに成功すると、リダイレクトURLがJSで構築され、リダイレクトが実行されます。私がこれまで持っているものセッション変数をAJAXで設定した後のJSリダイレクト
は次のとおりです。
<?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>
、変数設定PHPコード:ページへの最初の訪問で
<?php
session_start();
$v_ip = $_SERVER['REMOTE_ADDR'];
$hash = md5($v_ip);
if(isset($_POST["$hash"])) {
$_SESSION['allow'] = true;
}
?>
を、すべてが正しく処理された作品実際のリダイレクトの時点までセッション変数が設定され、JSコードがページのコードに正しく出力され、何らかの理由で実際のwindow.location.replace関数がアクティブ化されません。ページは空白のままです。検査の結果、ソースコードがすべて正しく表示されますが、リダイレクトは発生しません。もう一度ページにアクセスすると、リダイレクトは正常に行われます。
両方のファイルでセッション変数の名前を変更してもう一度設定し直す必要がある場合、同じことが起こります。最初の訪問時にはリダイレクトは処理されませんが、実際のリダイレクト再度正しく処理されます。
どうしてですか?
これは問題です - ifは失敗しません - 空白ページのソースコードを調べると、正しく出力された条件付きJSコードが表示されます。これはセッション変数が設定されていることを意味します。リダイレクトは何らかの理由で実行されません。リダイレクトURLの作成に使用されるすべての変数も正しく設定されています。 – Mirian
'ソースの表示 'を使用していますか?それはURLの別の 'GET'を実行するので、実際には2度目にページに行くのが実際です。 – Barmar
Javascriptコンソールにエラーがありますか? – Barmar