php重定向表单和网址

时间:2014-08-30 12:37:01

标签: php forms

我创建了一个表单,如果用户没有填写所有字段,目的是刷新当前页面的页面。问题在于第七行。

刷新页面并更改网址。代码将%20添加到URL中。有没有办法阻止这个?

表单汇总后,我还想将用户重定向到'thankyou页',以防止他们使用刷新按钮或浏览器后退按钮多次重新提交表单。这是可能的,也是最安全的方式吗? header()函数似乎不起作用

非常感谢,我非常感谢人们的努力

    <h2>post a comment</h2>

     <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">


    <table width "600" bgcolor="99CCCC">


        <tr>
            <td>Your Name:</td>
            <td><input type="text" name="comment_name"/></td>
        </tr>

         <tr>
            <td>Your email:</td>
            <td><input type="text" name="comment_email"/></td>
        </tr>

         <tr>
            <td>Your Comment:</td>
            <td><textarea name="comment" cols="35" rows="16"/></textarea></td>
        </tr>

          <tr>
            <td><input type="submit" name="submit" value="postcom"/></td>
        </tr>
    </table>
</form> 


 <?php                               


    $errors = [];

    if(isset($_POST['submit'] )) {

     // php scheck if comment is set 

    $comment_name = $_POST['comment_name'];
    $comment_email = $_POST['comment_email'];
    $comment = $_POST['comment'];
    $status ="unapprove";  // This is a variable called status

   if($comment_name=='' OR $comment_email=='' OR $comment=='') {   

   $errors[] = 'field is empty!';

  // echo "<script>window.open('post_details.php?post=$post_id')</script>";

    } else {


   header('Location: www.google.com');
    exit; // prevents rest of code execute

    }

}

 if(count($errors) > 0) {
    foreach ($errors as $error) {
         echo $error . '<br>';
    }
 }

&GT;

1 个答案:

答案 0 :(得分:0)

你想要达到这样的目标吗?

<?php 

$errors = [];

if(isset($_POST['submit'])) {

    $foobar = $_POST['foobar'];

    if(empty($foobar)) {
        $errors[] = 'Foobar field is empty!';
    } else {
        // Do some stuff
        header('Location: thankyoupage.php');
        exit;
    }

}

if(count($errors) > 0) {
    foreach($errors as $error) {
        echo $error . '<br>';
    }
}

?>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="foobar">
    <input type="submit" name="submit">
</form>

exit调用之后,您应该始终调用header()构造,以防止进一步执行脚本。 此外,%20是空间代码。如果你想摆脱它,不要在你的网址中使用空格。