如何使用'if'重定向

时间:2012-10-26 10:07:42

标签: php html

我想检查表单的变量。在这里我希望“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
}
?>

我很抱歉这可能是一个简单的问题,但我在谷歌上找到了愚蠢的答案。

5 个答案:

答案 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)
}    
?>