Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
验证PHP GET表单到数组?_Php_Validation - Fatal编程技术网

验证PHP GET表单到数组?

验证PHP GET表单到数组?,php,validation,Php,Validation,我正在写一个代码,我相信这是非常简单的,但由于某种原因,我有麻烦。现在写出来似乎是合乎逻辑的。如果$\u得到!=$然后,arr返回false并返回错误 情况是我们给两个不同的组一个代码,一共有三个代码。第三个代码是一个catch-all,它将它们带到一个未修改的表单,因此它是一个初始值或将被修改。另外两个将它们转换为分配给每个代码的两种不同形式 我想做的是,如果他们输入的代码正确,然后罚款,它会重定向他们,如果他们不输入任何内容,他们会收到一个错误,说抱歉,你必须输入你的代码。如果他们输入错误,

我正在写一个代码,我相信这是非常简单的,但由于某种原因,我有麻烦。现在写出来似乎是合乎逻辑的。如果$\u得到!=$然后,arr返回false并返回错误

情况是我们给两个不同的组一个代码,一共有三个代码。第三个代码是一个catch-all,它将它们带到一个未修改的表单,因此它是一个初始值或将被修改。另外两个将它们转换为分配给每个代码的两种不同形式

我想做的是,如果他们输入的代码正确,然后罚款,它会重定向他们,如果他们不输入任何内容,他们会收到一个错误,说抱歉,你必须输入你的代码。如果他们输入错误,则会出现一个错误,提示检查您的代码并重试,或者拨打此号码寻求帮助

错误是我在创建时遇到的问题。如果你能帮我弄清楚如何验证数组中的$\u GET表单,如果结果为false,就会弹出错误

   <?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为空,它会认为这是一个错误吗?