我正在和我学习。我正在编写一个代码,我确信它非常简单,但由于某些原因我遇到了麻烦。似乎把它写出来是合乎逻辑的。如果$ _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>
答案 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