0

我有一个用户发布表单的页面。它在php

如果用户已经登录,则不会显示该表单。如果用户未登录,则显示该表单。

现在,当用户第一次访问该站点时,会显示该表单。然后他填写表格并将submits其作为POST。成功登录后,他将被重定向到同一页面。

问题是,在被重定向到同一页面后,表单仍然可见。但是,如果我刷新它,表格就会消失。

如何更改/修改以实现我想要的。

我不知道提供我的代码是否会有所帮助。不过,根据 SO,我附上了我的基本代码:

    if(!isset($_SESSION['id'])){
    //show form
    <form action="" method="post">
        <br><button class="lfloat" type="submit" id="submit" value="register0" name="submit">Register</button><br><br>
    </form>
    <?php if(isset($_POST['submit'])&&$_POST['submit']=='register0'){
        //do all the insertion of data into database here only.
        ....
        ....
        echo "Success!!";
    }
}
if(isset($_SESSION['id'])){
    //don't show form

}
4

3 回答 3

0

This is how I'd do it:

<?php $hideForm = isset($_SESSION['id']); ?>

<form action="" method="post" style="<?= $hideForm ? 'display:none;' : '' ?>" >
...

or even more concisely:

<form action="" method="post" style="<?= isset($_SESSION['id']) ? 'display:none;' : '' ?>" >
于 2013-02-22T17:42:23.483 回答
0

就像是

 if(isset($_POST['submit'])&&$_POST['submit']=='register0'){
        //do all the insertion of data into database here only.
        ....
        ....
        echo "Success!!";
$_SESSION['id'] = 'some value';
header(Location: 'yourForm.php');
exit;

    }

应该为你工作......也不要忘记写

session_start();

在 form.php 的顶部

于 2013-02-22T17:37:41.467 回答
0

嗯,确实你把ID存到数据库里了,但是我没看到你重新加载页面,所以SESSION保存ID后它就没有了。

您可以在<form action="pageURL.php?action=save">保存新信息后执行此操作,但随后可能需要进行切换并通过查询字符串传递一个操作,以便帖子不会在刷新时重新提交。我们的想法是使用这种模式:Post/Redirect/Get。然后您的页面将如下所示:

$action = filter_input(INPUT_GET, 'action', FILTER_SANITIZE_STRING);

switch ($action) {
    case 'save':
        //Do your the registration and then
        header('Location:YourPagePath.php?action=saved');
        break;
    case 'save':
        /*FALL TRHOUGH*/
    default:
        //The rest of the page code
        break;
}

此外,在成功登录后,快速但不是那么好的解决方案将是:

echo '<script>
    alert("Save successful");
    location.href="YourPagePath.php"
</script>';
exit;
于 2016-10-24T10:04:19.180 回答