根据输入

时间:2016-09-26 09:12:22

标签: php

我正在建立一个基于推荐的网站,只希望输入有效推荐代码的人访问它。登录页面只是一个简单的输入框和一个转到按钮。一旦他们键入了正确的代码,他们就会被重定向到某个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>

3 个答案:

答案 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="">