使用PHP检测输入内容并重定向到特定页面

5

以下是我HTML中的代码:

<input type="text" name="code" />
<input type="submit" value="Submit" />

我想做的是,当用户输入12345时,将其重定向到page1.html,当用户输入56789时,将其重定向到page2.html。我该如何用PHP实现这个功能?我也可以使用JavaScript。
让我重新表述一下(以防万一)。我想在输入框中输入12345,然后点击提交按钮后,重定向到page1.html。同样的原理适用于56789page2.html
我找到了我的这段旧的jQuery代码,并进行了一些更改。我很高兴听到您的建议,以使其更加完善并实现我想要的功能。
$('input').keyup(function () {
    var val = $(this).val();

    var newVal = val.split('1234').join('HELLO');

    if (newVal !== val) {
        window.open("http://localhost:8000/page1.html");
    }
});

此外,这个(PHP)是正确的吗?(尚未尝试)
if ($_POST['code'] == '1234'){
  header("Location: redirect_to_me.php");
}

请原谅我,因为我在这个领域还是个新手。
谢谢。

只是一个小提示:在 JavaScript 中这样做是“危险”的,或者如果你想要一个清晰的想法,那么就不安全,因为用户总是能够检查你的 JavaScript 并获取目标 URL。 - briosheje
没错。除非我使用<script src="mycode.js"></script>并禁止热链接。 :) - Veo
3个回答

1

试试这个

$(document).ready(function(){
var pages = {
    "123456" : "page1.html",
    "56789" : "page2.html",
    "5252" : "page3.html"
}
$('input[type=submit]').click(function (e) {
e.preventDefault();
var val = $('input[name=code]').val();
var page = pages[val];

 window.location = page;

 });
 });

谢谢!这似乎完美地运作了。由于我不太懂JS / jQuery,我想问一下,当语句只有 ifelse 时,如何在字段中添加更多值? - Veo
你想在表单上添加更多的字段吗? - Sreelal P Mohan
不,只有值。page1.html 的值为 123456,page2.html 的值为 56789,page3.html 的值为 5252,等等。 :) - Veo
已更新答案以符合您的需求。 - Sreelal P Mohan
如果您觉得这篇文章有用,请接受答案。 - Sreelal P Mohan

1

检查您的表单提交(_POST或_GET),然后根据“text”的值进行重定向。请记住,只有在没有向浏览器发送任何输出时才能执行位置重定向..并且始终在之后“exit”。

if(isset($_POST)){

    if($_POST['text'] == '12345'){

        header ("Location: page1.html");
        exit;

   } elseif($_POST['text'] == '6789'){

        header ("Location: page2.html");
        exit;

   } 

}

1

在PHP中实现此操作:

<form action="file.php" method="POST">
    <input type="text" name="code" />
    <input type="submit" value="Submit" />
</form>

而你的file.php使用了一个switch语句;

switch($_POST['code']):

    case '123456':
        header('Location: page1.html');
    break;

    case '56789':
        header('Location: page1.html');
    break;

    case '5252':
        header('Location: page3.html');
    break;

    default:
        header('Location: codenotfound.html');

endswitch;

或者一种更优雅的解决方案;
$page = 'codenotfound.html';

$pages = array(
    '123456' => 'page1.html',
    '56789' =>'page2.html',
    '5252' => 'page3.html'
);

if(isset($pages[$_POST['code']])):
    $page = $pages[$_POST['code']];
endif;

header('Location: ' . $page);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接