編集:以前に == の代わりに eq を使用しようとしましたが、機能しませんでした。どういうわけか今はそうです。その時点で別のエラーが発生して動作が妨げられた可能性がありますが、現在は解決されています。ありがとうございました。
私はいくつかの簡単な検証をしようとしています。変数を介して供給されるリダイレクト URL が特定のサイトで始まるかどうかを確認したい。存在する場合はリダイレクトが通過し、そうでない場合はサイトのルートにリダイレクトされます。かなり簡単に見えますよね?
$redir = $input{'redirect'};
$redir_sub = substr($redir, 0, 21);
if ($redir_sub == "http://www.mysite.com") {
print "Location: $redir \n\n";
}else{
print "Location: http://www.mysite.com \n\n";
}
問題は、そこにどの変数を配置しても、「if」が true を返すことです。お気に入りのウェブコミックをそこに置くと、文字列が一致しないにもかかわらず、そこにリダイレクトされます。たとえば、次のようになります。
$redir = $input{'redirect'};
$redir_sub = "http://www.yahoo.com"
if ($redir_sub == "http://www.mysite.com") {
print "Location: $redir_sub \n\n";
}else{
print "Location: http://www.mysite.com \n\n";
}
yahoo! にリダイレクトされます。何が起こっている?