我想检查表单的变量。在这里我希望“a”和“b”是5和99之间的数字。如果这是真的,我想自动重定向到下一页,如果不是留在这个页面。
让我通过展示我所制作的代码来解释: (我很抱歉,但我花了15分钟来理解如何在这里编写代码,我不明白所以我会在需要时使用空格)
<input type="text" name="a"><br>
<input type="text" name="b"><br>
<input type="submit" value="GO!">
<?php
if (is_numeric($_POST["a"]) && is_numeric($_POST["b"]) &&
$_POST["a"]<100 && $_POST["a"]>4 && $_POST["b"]<100 && $_POST["b"]>4) {
echo "corect";
//here i want to go to the next page like registration_complete.php
}
else {
//here i want to remain to this page and show the errors to the user
}
?>
我很抱歉这可能是一个简单的问题,但我在谷歌上找到了愚蠢的答案。
答案 0 :(得分:2)
首先,你必须先检查一下,然后再回复一下。然后使用header("Location: mylogin_page.php");
。
当你有机会看不到它时,有什么要回应的东西?然后使用标题BEFORE html输出。
答案 1 :(得分:1)
由于您已经在屏幕上输出内容,因此无法使用header('Location: mypage.php')
。如果您不能或不想这样做,另一种方法是使用javascript重定向:
echo "<script>document.location.replace = 'mypage.php';</script>";
答案 2 :(得分:1)
首先,在向浏览器发送任何html代码后,您无法使用header
,因此您的php代码应该在另一个文件中,因此您应该拥有:
first-step.php
包含:
<?php
session_start();
?>
<html>
<head>
</head>
<body>
<?php
if(isset($_SESSSION['error'])) {
echo $_SESSION['error'];
unset($_SESSION['error']);
}
?>
<form action="actions.php?step=1" method="POST">
<input type="text" name="a"><br>
<input type="text" name="b"><br>
<input type="submit" value="GO!">
</form>
</body>
</html>
actions.php
<?php
session_start();
switch($_GET['step']) {
case 1:
if(is_numeric($_POST["a"]) && is_numeric($_POST["b"]) && $_POST["a"]<100 && $_POST["a"]>4 && $_POST["b"]<100 && $_POST["b"]>4)
{
header('Location: second-step.php');
exit;
}
else
{
$_SESSION['error'] = 'my error';
header('Location: first-step.php');
}
break;
}
?>
答案 3 :(得分:0)
<?php
if (is_numeric($_POST["a"]) && is_numeric($_POST["b"]) && $_POST["a"]<100 && $_POST["a"]>4 && $_POST["b"]<100 && $_POST["b"]>4)
{
header('location:correctpage.php');
}
else
{
foreach($POST as $key=>$post)
{
if(empty($post))
{
$error [] ="$key is empty required";//do your custom error handling this is just a demo
}
print_r($error);
//here i want to remain to this page and show the errors to the user
}
答案 4 :(得分:0)
<input type="text" name="a"><br/>
<input type="text" name="b"><br/>
<input type="submit" value="GO!">
<?php
if (is_numeric($_POST["a"]) && is_numeric($_POST["b"]) &&
$_POST["a"]<100 && $_POST["a"]>4 && $_POST["b"]<100 && $_POST["b"]>4) {
//echo "corect"; //why 'echo' then redirect?
echo "<script>";
echo "top.location = 'registration_complete.php';";
echo "</script>";
exit();
}
else {
//here i want to remain to this page and show the errors to the user
//(if you want so, just stay executing this page)
}
?>