0

$_GET変数がURL内の別の変数の値に設定されていることを確認したいと思います。そうでない場合は、ページ/ URLをリロードして、設定された変数を表示したいと思います。これは私が使用しているコードです:

session_start(); 
$openfile = $_SESSION['openfile'];
//check if $GET variable isset to the current $SESSION variable
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){
//if not then create new URL string
  $hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;
//change location to new URL string
  header("Location: $hloc");
}

なぜうまくいかないのかわかりません。どんな助けでも素晴らしいでしょう。ありがとう。

編集:問題は、URLがヘッダー情報の内容を反映していないことです。その後、ページを再度リロードすると、これで問題なく修正されます。しかし、これは明らかに私が望んでいることではありません。

4

4 に答える 4

2
if(isset($_GET['file'])) {
   //its set means value is not equal to null or false
} else {
   //its not set so redirect
}

http://php.net/manual/en/function.isset.php

于 2013-03-26T18:13:41.257 に答える
0

URLの例を提供して、それがそれをコーキングしているかどうかを確認できますか?それを除けば、代わりにこれを試してください。$hlocが引用符の外にあることに注意してください。

session_start(); 
//check if $GET variable isset to the current $SESSION variable
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){
//if not then create new URL string
  $hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;
//change location to new URL string
  header("Location: " . $hloc);
}
于 2013-03-26T18:13:19.690 に答える
0

間違いがあります。Undefined variable: openfile

この行を変更します

$hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;

$hloc = basename($_SERVER['PHP_SELF']).'?file='.$_SESSION['openfile'];

$ openvariableが設定されているため(投稿者のコメントによる)、障害は次のとおりです:SESSION変数またはGET変数のいずれかが設定されていません。次のコードは完全に機能するためです。

<?php
session_start(); 
$_SESSION['openfile']='foo';
$_GET['file']='bar';
$openfile = $_SESSION['openfile'];
//check if $GET variable isset to the current $SESSION variable
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){
//if not then create new URL string
  $hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;
//change location to new URL string
  header("Location: $hloc");
}
?>

構文的にはコードは完璧に見えるので、GET変数とセッション変数の両方が設定されているかどうかを適切に確認してください。

最初にこのステートメント header("Location: $hloc");に一時的にコメントします。置く:

echo $_GET['file'];
echo $_SESSION['openfile'];

if条件の前に、出力を確認します。バグを追跡して知るのに役立ちます。

于 2013-03-26T18:16:36.197 に答える
0

私は問題を見つけました。

これは、スクリプトのさらに下に誤ったヘッダー情報があることが原因でした。

于 2013-03-29T19:49:46.387 に答える