我正在建立一个基于推荐的网站,只希望输入有效推荐代码的人访问它。登录页面只是一个简单的输入框和一个转到按钮。一旦他们键入了正确的代码,他们就会被重定向到某个URL,具体取决于他们键入的代码。否则他们会收到错误消息。
我已经使用HTML和PHP在一个页面中编写了代码。
它按计划工作除了一件事......不管输入什么,他们只是被重定向到主页。即使您没有输入任何内容,最终也会出现在主页上。
对于我做错了什么,或者更好的方式的任何建议将不胜感激。
<?php
/*
Template Name: landingpage1
*/
?>
<?php
if (isset($_POST['suche'])) {
if ($_POST['suche'] == ‘REFERRAL3’) {
echo '<script type="text/javascript">
window.location = “MY-URL-1”
</script>';
} elseif ($_POST['suche'] == ‘REFERRAL1’) {
echo '<script type="text/javascript">
window.location = “MY-URL-2”
</script>';
} elseif ($_POST['suche'] == ‘REFERRAL2’) {
echo '<script type="text/javascript">
window.location = “MY-URL-3”
</script>';
} else {
echo 'Error: You put in the wrong code.';
}
} else {
echo '';
}
?>
<div id="page" class="page">
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Enter referral code: <input name="suche" type="text"><br>
<input type="submit" value="Go">
</form>
</div>
答案 0 :(得分:3)
为什么不使用php的header()
函数进行重定向?它也是一个变种储蓄者。除此之外,只有在设置$_POST['suche']
时才会显示您的错误消息。您可以在if
之后移动它,因为header
会重定向。
if (isset($_POST['suche'])) {
if ($_POST['suche'] == "REFERRAL3") {
header("Location: MY-URL-1");
} elseif ($_POST['suche'] == "REFERRAL1") {
header("Location: MY-URL-2");
} elseif ($_POST['suche'] == "REFERRAL2") {
header("Location: MY-URL-3");
}
echo 'Error: You put in the wrong code.';
}
或使用switch
代替许多if
。最好维护。
if (isset($_POST['suche'])) {
switch( $_POST['suche'] ) {
case "REFERRAL1":
header("Location: MY-URL-1");
break;
case "REFERRAL2":
header("Location: MY-URL-2");
break;
case "REFERRAL3":
header("Location: MY-URL-3");
break;
default:
echo 'Error: You put in the wrong code.';
break;
}
}
答案 1 :(得分:0)
您可以在php中使用标题('位置:http://www.example.com/'); 进行重定向 就像这样
<p>list 2</p>
<select >
<option id="item" value="volvo">Volvo</option>
<option id="item" value="saab">Saab</option>
<option id="item" value="opel">Opel</option>
<option id="item" value="audi">Audi</option>
</select>
答案 2 :(得分:0)
在您的代码<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>
中将返回index.php,您的表单未提交到同一模板文件。它被提交到index.php。
要在提交时保持同一页面,只需在表单标记中填写action=""
即可。
更改
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
到
<form method="post" action="">