验证PHP GET表单到数组?

时间:2011-07-15 17:13:09

标签: php validation

我正在和我学习。我正在编写一个代码,我确信它非常简单,但由于某些原因我遇到了麻烦。似乎把它写出来是合乎逻辑的。如果$ _GET!= $ arr然后返回false并显示错误。

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

我想要做的是,如果他们输入正确的代码然后很好地重定向他们,如果他们没有输入任何东西他们会得到一个错误,说明抱歉你必须输入你的代码。如果他们输入错误,则表示检查您的代码并再试一次或拨打此号码寻求帮助。

错误是我无法创建的地方。如果你能帮我弄清楚如何验证$ _GET表单到数组,如果出现错误则弹出错误。

   <?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>

7 个答案:

答案 0 :(得分:1)

尝试:

if (!in_array($_GET['code'], $arr)) {

捕获无效代码。

但是,我认为使用switch语句可以更好地编写这部分代码,前提是代码不会经常更改。

答案 1 :(得分:1)

我认为你的意思是:

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';
}

答案 2 :(得分:1)

<?php
if(isset($_GET['code'])){
    $arr = array('001', '002', '003');

    if(in_array($_GET['code'], $arr, true)){
        if($_GET['code'] === '001'){
            header("Location: http://stackoverflow.com/");
        } elseif($_GET['code'] === '002') {
            header("Location: http://gaming.stackexchange.com/");
        } elseif($_GET['code'] === '003'){
            header("Location: http://gamedev.stackexchange.com/");
        }
    } 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>

答案 3 :(得分:1)

您可以使用开关构造

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;
}

答案 4 :(得分:1)

也许是这样的事情?

$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");
}

我认为你只是在寻找the in_array() function

编辑: 这种方法的优点(与使用switch或if / else构造相反)是它更快更容易维护,并且正确地表达了您将代码映射到重定向URL的想法。如果你最终得到很多这些代码,你可以从CSV文件或类似的东西加载数组,这意味着你甚至不必编辑你的源代码。

答案 5 :(得分:1)

尝试使用in_array功能。像这样:

<?php 

if (!in_array($_GET['code'], $arr)) {
    echo("Uh oh, you did not enter the correct code error message");
}

您还可以使用php switch/case语句而不是多个if语句。在这种情况下,您不需要单独进行错误检查,您可以使用switch / case的默认值来捕获错误。 像这样 -

<?php 

switch($_GET['code']) {
    case '001':
        header("http://location1");
        break;
    case '002':
        header("http://location2");
        break;
    case '003': 
        header("http://location3");
        break;
    default:
        echo("Uh oh, you did not enter the correct code error message");
} 

答案 6 :(得分:0)

我认为这可能是你想要的

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";
    } 

否则您正在寻找in_array

if (!in_array($_GET['code'], $arr))
    // error stuff here