Php GET变量和IF语句
我对这个简单的Php GET变量和IF语句,php,if-statement,get,Php,If Statement,Get,我对这个简单的if语句有问题: $type = $_GET['type']; if ($type !== 1 || $type !== 2) { header('Location: payment.php'); exit; } 只允许类型1和2,但是 www.example/success.php?type=1-重定向回payment.php www.example/success.php?type=2-重定向回payment.php www.example/success.p
if
语句有问题:
$type = $_GET['type'];
if ($type !== 1 || $type !== 2) {
header('Location: payment.php');
exit;
}
只允许类型1和2,但是
最后一个例子还可以,但我不知道为什么在第一个和第二个例子中它也重定向。
==
是标识运算符;所以它也会检查类型
但是$\u GET,$\u POST。。。数组是字符串。因此,您还需要检查字符串:
if ($type !== "1" && $type !== "2") /* ... */
同时检查
$a!==$x&&$a!==$y
将始终为真(如果$x!==y
)。所以在这里使用|
。如果您的意思是只有值为1和2的类型应该被重定向,那么您应该尝试使用此代码
if ($type === 1 || $type === 2) {
header('Location: payment.php');
exit;
}
试试这个:
if (!($type == 1 || $type == 2)) {
header('Location: payment.php');
exit;
}
这可以说是
类型为1或2以外的任何类型
,您还需要从或切换到和<代码>$x!=1 | |$x!=2始终为真。@Juhana-true;我没看到。太快了,看不到第二个错误,抱歉。@user2406937现在好多了?不,只有这些类型不应该被重定向。我明白了,这个$type=(int)$\u GET['type']怎么样;if($type!=1 | |$type!=2){header('Location:payment.php');exit;}if(!($type==1 | |$type==2))
-这很好,但我想问你,这里的int是什么-(int)$\u得到['type'代码>(int)类型将值从字符串转换为整数。。您可以在google中搜索php中的typecasting这个词,或者您也可以阅读本文