验证PHP GET表单到数组?
我正在写一个代码,我相信这是非常简单的,但由于某种原因,我有麻烦。现在写出来似乎是合乎逻辑的。如果$\u得到!=$然后,arr返回false并返回错误 情况是我们给两个不同的组一个代码,一共有三个代码。第三个代码是一个catch-all,它将它们带到一个未修改的表单,因此它是一个初始值或将被修改。另外两个将它们转换为分配给每个代码的两种不同形式 我想做的是,如果他们输入的代码正确,然后罚款,它会重定向他们,如果他们不输入任何内容,他们会收到一个错误,说抱歉,你必须输入你的代码。如果他们输入错误,则会出现一个错误,提示检查您的代码并重试,或者拨打此号码寻求帮助 错误是我在创建时遇到的问题。如果你能帮我弄清楚如何验证数组中的$\u GET表单,如果结果为false,就会弹出错误验证PHP GET表单到数组?,php,validation,Php,Validation,我正在写一个代码,我相信这是非常简单的,但由于某种原因,我有麻烦。现在写出来似乎是合乎逻辑的。如果$\u得到!=$然后,arr返回false并返回错误 情况是我们给两个不同的组一个代码,一共有三个代码。第三个代码是一个catch-all,它将它们带到一个未修改的表单,因此它是一个初始值或将被修改。另外两个将它们转换为分配给每个代码的两种不同形式 我想做的是,如果他们输入的代码正确,然后罚款,它会重定向他们,如果他们不输入任何内容,他们会收到一个错误,说抱歉,你必须输入你的代码。如果他们输入错误,
<?php
$arr = array(001,002,003);
if ($_GET['code'] === "001") {
header("Location: http://stackoverflow.com/");
}
if ($_GET['code'] === "002") {
header("Location: http://gaming.stackexchange.com/");
}
if ($_GET['code'] === "003") {
header("Location: http://gamedev.stackexchange.com/");
}
if ($_GET ['code'] != $arr);
else {
echo("Uh oh, you did not enter the correct code error message");
}
?>
</head>
<body>
<form id="galaonly" name="galaonly" method="get" action="">
<input name="code" type="text" value="001" size="50" maxlength="150" />
<input type="submit" value="Submit" />
</form>
试试:
捕获无效代码
但是,我认为如果代码不会经常更改,使用开关语句编写这段代码会更好。试试:
捕获无效代码
但是,我认为这段代码最好使用switch
语句编写,前提是代码不会经常更改。我认为您的意思是:
if (! in_array($_GET ['code'], $arr))
echo('error');
但你也可以这样做:
$arr = array(
'001' => 'http://stackoverflow.com/',
'002' => 'http://gaming.stackexchange.com/',
'003' => 'http://gamedev.stackexchange.com/'
);
if (isset($_GET['code']) {
if (isset($arr[$_GET['code']])
header("Location: " . $arr[$_GET['code']);
else
echo 'error';
}
我想你的意思是:
if (! in_array($_GET ['code'], $arr))
echo('error');
但你也可以这样做:
$arr = array(
'001' => 'http://stackoverflow.com/',
'002' => 'http://gaming.stackexchange.com/',
'003' => 'http://gamedev.stackexchange.com/'
);
if (isset($_GET['code']) {
if (isset($arr[$_GET['code']])
header("Location: " . $arr[$_GET['code']);
else
echo 'error';
}
我想这可能是你想要的
if ($_GET['code'] == "001") {
header("Location: http://stackoverflow.com/");
}
else if ($_GET['code'] == "002") {
header("Location: http://gaming.stackexchange.com/");
}
else if ($_GET['code'] == "003") {
header("Location: http://gamedev.stackexchange.com/");
}
else {
echo "Uh oh, you did not enter the correct code error message";
}
否则,您将在数组中查找
if (!in_array($_GET['code'], $arr))
// error stuff here
我想这可能是你想要的
if ($_GET['code'] == "001") {
header("Location: http://stackoverflow.com/");
}
else if ($_GET['code'] == "002") {
header("Location: http://gaming.stackexchange.com/");
}
else if ($_GET['code'] == "003") {
header("Location: http://gamedev.stackexchange.com/");
}
else {
echo "Uh oh, you did not enter the correct code error message";
}
否则,您将在数组中查找
if (!in_array($_GET['code'], $arr))
// error stuff here
您可以使用交换机构造
switch $_GET['code']
{
case "001":
// your code
break;
case "002":
// your code
break;
case "003":
// your code
break;
default:
echo("Uh oh, you did not enter the correct code error message");
break;
}
您可以使用交换机构造
switch $_GET['code']
{
case "001":
// your code
break;
case "002":
// your code
break;
case "003":
// your code
break;
default:
echo("Uh oh, you did not enter the correct code error message");
break;
}
也许是这样的
$pages = array(
'001' => 'http://stackoverflow.com/',
'002' => 'http://gaming.stackexchange.com/',
'003' => 'http://gamedev.stackexchange.com/'
);
$code = $_GET['code'];
if (in_array($code, $pages, true)) { // The true here makes in_array check for type as well.
header("Location: " . $pages[$code]);
} else {
echo("Uh oh, you did not enter the correct code error message");
}
我想你只是在找
编辑:
这种方法的优点(与使用开关或if/else构造相反)是维护起来更快、更容易,并且正确地表达了将代码映射到重定向URL的想法。如果您最终得到了大量这些代码,您可以从CSV文件或类似文件加载阵列,这意味着您甚至不必编辑您的源代码。可能是这样的吧
$pages = array(
'001' => 'http://stackoverflow.com/',
'002' => 'http://gaming.stackexchange.com/',
'003' => 'http://gamedev.stackexchange.com/'
);
$code = $_GET['code'];
if (in_array($code, $pages, true)) { // The true here makes in_array check for type as well.
header("Location: " . $pages[$code]);
} else {
echo("Uh oh, you did not enter the correct code error message");
}
我想你只是在找
编辑:
这种方法的优点(与使用开关或if/else构造相反)是维护起来更快、更容易,并且正确地表达了将代码映射到重定向URL的想法。如果您最终得到了大量这些代码,您可以从CSV文件或类似文件加载阵列,这意味着您甚至不必编辑源代码。尝试使用该函数。像这样:
<?php
if (!in_array($_GET['code'], $arr)) {
echo("Uh oh, you did not enter the correct code error message");
}
尝试使用该函数。像这样:
<?php
if (!in_array($_GET['code'], $arr)) {
echo("Uh oh, you did not enter the correct code error message");
}
页面始终显示错误,不需要提交操作,就好像它是页面上副本的一部分一样。并使数组值为stringsright…数组键必须为strings。编辑我的答案,尝试我的第二种方法!我想知道为什么它在标题行给了我一个语法错误。这是因为你没有检查公式是否被发送。我编辑了我的答案:添加了if(isset($\u GET['code']))
页面始终显示错误,不需要提交操作,就好像它是页面上副本的一部分一样。并使数组值字符串正确…数组键必须是字符串。编辑我的答案,尝试我的第二种方法!我想知道为什么它在标题行上给我一个语法错误。这是因为您没有检查公式是否正确已发送。我编辑了我的答案:添加了if(isset($\u GET['code']))
回音总是显示在页面上。这是我以前遇到的一个问题,我认为我做错了什么。它的行为好像没有等待事件。看起来就像页面上的副本。啊,这一个工作得很好!谢谢。我希望我离学习不太远。回音总是显示在页面上。这是我以前遇到的一个问题,我认为我做错了什么。它的行为好像它没有等待事件。看起来就像页面上的副本。啊,这一个工作得很好!谢谢。我希望我离学习不远。我无法让回音在用户单击之前离开页面。回音只停留在页面上。是$\u get['code']是否始终设置?如果未设置,则需要将我的If包装在If-isset($\u GET['code'])中
如果未设置该值,则执行其他操作。该值始终处于初始值。因此,如果get上的URL为空,它会认为这是一个错误吗?在用户单击之前,我无法使回显保持在页面之外。回显仅保留在页面上。是$\u get['code']是否始终设置?如果未设置,您将希望在If-isset($\u GET['code'])
中包装我的If,并在未设置值的情况下执行其他操作。它始终处于初始状态,输入上带有初始值。因此,如果get上的URL为空,它会认为这是一个错误吗?