2016-04-30 3 views
0

test.php?number = 1またはtest.php?letter = 1を訪問した場合は、そのページにとどまります。彼らがtest.phpにアクセスした場合、私はそれらがリダイレクトされるようにします。||を使用していますin文で

しかし私は、次の処理が行われ、以下のスクリプトを使用して上記を達成しようとしている:

  • ユーザーの訪問がtest.phpを数= 1、彼らはページにとどまる場合は?。
  • ユーザーがtest.php?letter = 1を訪問した場合、それらはリダイレクトされます。

    if(!isset($_GET['number']) === false || $_GET['letter'] === false) { echo '<h1>Hello</h1>'; }else{ header('Location: redirect.php'); exit(); }

注:数字と文字の値を変更することができます!必ずしも1ではありません!

+0

'|| $ _GET ['letter'] === false' $ _GET ['letter'] 'は常にFALSEでしょうか?私はあなたが '|| !isset($ _ GET ['letter'])=== false'はあなたの前の状態に当てはまります。それはそれを見て混乱する方法です。 'if(isset($ _ GET ['number'])|| isset($ _ GET ['letter'])){'そして逆ではなく、誤った応答が偽であるかどうかを逆さまにチェックします。それが* set *かどうかを確認してください。さらに、空であるとみなしてください:http://php.net/manual/en/function.empty.php。最初に値が存在するかどうかを確認します。 – Marcus

+0

@Marcus 'false'をコード行から削除することで、' number'や 'letter'が空であればページにアクセスできます(例えばtest.php?number =) –

+0

下記の私の答えを見てください。 – Marcus

答えて

0

の代わりにisset()empty()を使用してください。この場合、存在しない値として、あなたは何もしません。 番号に値が入力されていないtest.php?number=が入力されています。また、の文字はです。どちらかまたは手紙条件が満たされ、<h1>Hello</h1>が印刷されている値を、含まれている場合

次のようにチェックします。それ以外の場合はどちらも値を含まない場合、リダイレクトされます。

if (! empty($_GET['number']) || ! empty($_GET['letter'])) { 
    echo '<h1>Hello</h1>'; 
} 
else { 
    header('Location: redirect.php'); 
    exit; 
} 
+0

ありがとう、私は 'empty()'を将来使用することを忘れないでください。 –

+0

'isset()'と 'empty()'の両方に時間と場所があります。マニュアルから: "* empty()は本質的に!isset($ var)|| $ var == false *"と簡潔に等価で、問題を簡素化し、あなたのケースで 'empty() 'を使うのがより理にかなっています。 – Marcus

関連する問題