クエリ変数が存在するかどうかを確認したいと思います。それから私はそのクエリ値に基づいて何かをするでしょう。それが存在し、それが真実なら、何かをしてください。存在しないか偽の場合は、404ページを表示するなどの操作を行います。クエリ変数のテストが存在し、またALSOが特定の値に設定されていますか?
例えばURLがdomain.com?konami=true
if (condition) {
//something
} else {
//show404
}
クエリ変数が存在するかどうかを確認したいと思います。それから私はそのクエリ値に基づいて何かをするでしょう。それが存在し、それが真実なら、何かをしてください。存在しないか偽の場合は、404ページを表示するなどの操作を行います。クエリ変数のテストが存在し、またALSOが特定の値に設定されていますか?
例えばURLがdomain.com?konami=true
if (condition) {
//something
} else {
//show404
}
これは最高の作品:
$konami = $_GET['konami'];
if($konami == "true")
{
echo 'Hello World!';
}
else
{
header('HTTP/1.0 404 Not Found');
}
あなたはこのようにそれを行うことができます:あなたは常に$konami
が定義されているとします。この場合
$konami = false;
if(isset($_GET['konami'])){
$konami = $_GET['konami'];
}
if($konami == "true"){
echo 'Hello World!';
}
else{
header('HTTP/1.0 404 Not Found');
}
- でいっぱい - 設定された場合あなたのGETパラメータの値。
簡単:
if(isset($_GET['konami']) && $_GET['konami'] != 'false') {
//something
} else {
// 404
}
それを行うための最も簡単かつ最短の道:
if($konami != null){ echo $konami; } else { header('HTTP/1.0 404 Not Found'); }
のOPの質問は少し不明です。あなたは彼がkonami
が$_GET
パラメータであり、それは"true"
の値がそう持っていることをチェックしたいと仮定した場合:
if (isset($_GET["konami"]) === true && $_GET["konami"] === "true") {
// something
} else {
// show 404
}
(キャメロン)現在の受け入れ答えの問題は、(それがisset
チェックが欠けているということです容認できない、それは客観的に間違っている)。最高の投票回答(Jan Hancicによる)の問題は、=== "true"
小切手が不足していることです(議論の余地があります。
&&
は、遅延部分であり、最初の部分が偽であれば2番目の部分が評価されないことを意味するので、"Undefined index"
の警告を防ぎます。したがって、この声明の順序は重要です。
また、$a === true
は$a === "true"
と同じではありません。最初の文字はブール値を比較し、2番目の文字列は文字列を比較します。
弱い比較の場合$a == true
あなたは真実をチェックしています。
多くの値は、文字列"true"
、数字1
、文字列"foo"
のように真実です。 偽の値の例は、空文字列""
、数字0
およびnull
です。
"true" == true; // true
"foo" == true; // true
1 == true; // true
"" == true; // false
0 == true; // false
null == true; // false
"true" === true; // false
"true" === false; // false
'isset(..)=== true'と' isset(..) 'を使う特別な理由はありますか、それともそのスタイルの好みですか? – user2864740
それはスタイルの好みです。 'isset()'は 'isset()'とよく似ているので、 '=== true'や' === false'を明示的に指定することはできません。 – Halcyon
ナー、私は '(isset($ _GET [" konami "])=== true)=== true'を好む。あなたは知っている、ちょうどそれを明確にする。 ;-) –
どのような値をテストするべきかについて少し混乱があります。 konami
パラメータがtrue
であることをブール値でテストしますか?konami
パラメータをtruthyとしてテストするか、文字列値が"true"
に等しいかどうかをテストしますか?またはのパラメータkonami
をテストしますか?の値は一般的ですか?
ここでは、konami
を指定した文字列値(この場合は"true"
)と同時にテストすることをお勧めします。この場合、は、これは完全に十分である:$_GET['konami']
が設定されていない場合、それは""
を除く任意の文字列値に等しくすることはできませんので
ini_set('error_reporting', E_ALL & ~E_NOTICE);
...
if ($_GET['konami'] == "true")
...
これは、十分です。 $_GET['konami']
が文字列であることがわかっているので、===
を使用する必要はありません。
誰かが気に入らないかもしれないE_NOTICE
をオフにしていますが、これらのタイプの「通知」は通常多くのプログラミング言語で問題なく、無効にしても何も見逃すことはありません。そうでない場合は、次のようなコードがunecessarily複雑にする必要があります。
if (isset($_GET['konami']) && $_GET['konami'] == "true")
はあなたが本当にこれであなたのコードを複雑に、またはむしろそれを簡単にし、Undefinex index
などの通知を無視しますか?それはあなた次第です。あなたが言及したように、他の答えと
問題:
true
、ない"true"
をテストします。E_NOTICE
。=== true
迅速かつ簡単には不要なテスト。
$konami = filter_input(INPUT_GET, 'konami', FILTER_VALIDATE_BOOLEAN) or die();
REF:
あなたは、このコードを試してください。このコードでは、$ konamiに値が含まれ、$ konamiに 'true'が含まれている場合に2つの条件を1つずつチェックしました。
$konami = $_GET['konami'];
if(($konami) && ($konami == "true")){
/*enter you true statement code */
}else {
/* enter your false statement code */
}
if(!$variable) {
//the variable is null
die("error, $variable is null");
}else{
//the variable is set, your code here.
$db->query("....");
}
いいえそれはうまく動作しません:)あなたのURLに '?konami'パラメータを渡さないと、それは存在せず、あなたは' Undefined index'を得るでしょうそれを '$コナミ 'にする。 PHPのデバッグ/エラー報告をオンにすると、表示されます。 –