一貫してスタックオーバーフローでは、入力時や値変更後にユーザーをリダイレクトする方法の問題が提起されています.PHPでは、これを達成するためにヘッダーを修正するのが標準的な答えです。なぜPHP内で場所の変更、悪い習慣のためにJavaScriptを使用していますか?
しかし、PHPでは、HTMLやテキストを投稿する前にヘッダーを変更する必要があります。
だから、定期的に、私は次のようである私自身の個人的なソリューションを、ポスト:
「あなたがリダイレクトを実行し、次のことを書きたい時にPHPタグを終了:最後に、その後
<script>
location.replace("Whatever.php");
</script>
をとあなたのコードを完成させるためにもう一度あなたのPHPタグを手に入れてください。
私はそれを投稿したたびに、答えはほぼすぐに忘却にdownvotedされています。しかし、私の知る限り、それは完全に機能します。
私の質問は、なぜこれほど大きく下落しているのですか?そんなに悩んでいるこのソリューションを使用することはどうですか? (エスケープ機能を除く)全使用量の
例:
if(isset($_GET['role'])){ //If value set in GET
$role = $_GET['role']
if($role == "Admin"){ ?> // Drop PHP tag
<script>location.replace("AdminPage.php");</script> //Solution
<?php else{ ?>
<script>location.replace("StandardPage.php");</script> //Solution
<?php } } ?> //Pick up Tag final time and Close isset.
本当にユーザーをリダイレクトしても、実際にテキストやHTMLを出力する点はありません。なぜなら、ブラウザを待つ代わりに 'header( 'Location ...')' htmlをレンダリングし、javascriptを実行して、ロケーションの変更を処理します。 –
しかし、私が知っている限り、PHPで条件を実行したりテストしたりすることはできず、ヘッダを使って判断を下すこともできません。これは、場所の変更のヘッダーは事実上意味がないことを私に示唆しています。 – cmprogram
_ "PHPの実行またはテスト条件" _は、あなたが話している条件によって異なります。明らかに、ユーザーのデスクトップの解像度をテストすることはできませんが、あなたの例では、既に示したようにPHPで完全にテストできるGETパラメータをテストしただけです –