クエリ文字列を介して変数を受け取る PHP スクリプトがあります。
最初に、explode を使用して特定の文字列を配列に入れます。これらの文字列には、使用する必要のある値がいくつか含まれているためです。例として:
index.php?a=2,2&b=foo&i=&s=bar
$d['i'] = explode(',',$_GET['i']);
$d['s'] = $_GET['s'];
$d['a'] = explode(',',$_GET['a']);
$d['b'] = explode(',',$_GET['b']);
特定の変数が必須であるため、設定されているかどうかを確認する必要があります。つまり、「i」と「s」を設定し、データを含める必要があります。
それらが設定されていないか空の場合、エラーページにリダイレクトしたい。ただし、常に機能するとは限らず、その理由がわかりません。「いつもではない」と言うとき、それは私が意味することです. 空の変数をランダムに受け入れたり拒否したりするようですが、その理由はわかりません。
これが私のPHPコードです。
if(!$d['i'] || !$d['s']) {
header('Location: error.php?e=2');
}
最初は上記しかありませんでしたが、変数が設定されているが空の場合でも、それは実行されました。
私が試したのは、次を使用することです:
if(strlen($d['i']) < 1 || strlen($d['s']) < 1) {
header('Location: error.php?e=2');
}
しかし、何らかの奇妙な理由で、空の文字列を受け入れます。私もこれを試しましたが、成功しませんでした:
if(empty($d['i']) < 1 || empty($d['s']) < 1) {
header('Location: error.php?e=2');
}
ここで私が間違っていることの手がかりはありますか?