前端登录:重定向到用户创建的帖子


Front end login: Redirect to user created post

是否可以将前端登录的用户重定向到他们创建的帖子?如果是,怎么办?

我在前端有下面的表格,它可以很好地让人们登录,但不能完全实现我想要的。

我创建了一个前端注册流程,创建一个新用户和一个帖子,并在帖子中填写某些细节。在这个过程完成后,他们会被发送到他们刚刚创建的帖子,然后允许他们在前端编辑所有细节。这对第一次注册的人来说非常有效,但对于已经注册并想登录的人来说,我无法完全实现我想要的。

当他们在下面的表格上填写详细信息时,我希望它重定向到他们注册时创建的帖子,这可能吗?

用户只能创建ONE帖子。。。其充当轮廓。所以我希望他们能够登录并重定向到他们的个人资料。

如果有帮助的话,用户名与帖子标题相同(用户名是个人公司名称,也是帖子的名称)。E.g username=我的公司。职务=我的公司。

            <?php if (!(current_user_can('level_0'))){ ?>   
                <form action="<?php echo get_option('home'); ?>/wp-login.php" method="post" id="login-form">
                    <p style="color:black!IMPORTANT;">Please login.</p>
                    <!--[if !(IE)]><!-->
                        <input type="text" placeholder="Username" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" />
                    <!--<![endif]-->
                    <!--[if (gte IE 6)]>
                        <input type="text" name="log" id="log" value="Username" />
                    <![endif]-->
                    <!--[if !(IE)]><!-->
                        <input type="password" placeholder="Password" name="pwd" id="pwd" />
                    <!--<![endif]-->
                    <!--[if (gte IE 6)]>
                        <input type="password" value="Password" name="pwd" id="pwd" />
                    <![endif]-->    
                    <p style="clear:both;width:115px;font-size:14px!IMPORTANT;float:left;">
                        <input style="width:14%!IMPORTANT;" name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me
                    </p>

                    <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
                    <p style="float:right;">
                        <a style="font-size:14px!IMPORTANT;" href="<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword">Recover password</a>
                    </p>                                
                    <input style="margin-left:80px;float:left;" type="submit" name="submit" value="LOGIN" class="login-button" />                               
                </form>
                <div class="clear"></div>
            <?php } else { ?>
                <p>
                    You are currently logged in, would you like to <a href="<?php echo wp_logout_url($_SERVER['REQUEST_URI']); ?>">logout</a>?
                </p>
            <?php } ?>  

我猜如下。。。

我需要对用户名(在上面的表格中输入)做些什么,然后将其与任何帖子的作者匹配,如果匹配,则将其发送到该页面。。。在提交上述表格之前。这需要在隐藏字段之前完成,这样它就可以将用户名字段输入到隐藏的输入值中。

由于用户只能发布ONE帖子,因此您肯定有一个链接或方法来检测它,例如存储在数据库中的内容。您可以做的是在测试凭据是否正确时,找到链接,然后覆盖重定向。你不需要知道链接并在用户登录之前隐藏它,这是不可能的。

示例:

<?php
   ...get variables...;
   if( isValidUser()){
      $var = db->getUserPostId();
      $redirect = "posts.php?pid=".$var;
      header("Location: $redirect");
   else
      .. show error and go back..
?>

编辑:javascript示例

<script>
    function onSubmit(){
        document.forms["login"]["redirect_to"].value = document.forms["login"]["log"].value;
    }
</script>
<form name="login" action="test.php" method="post" onsubmit="onSubmit()">
    <input type="text" name="log">
    <input type="password" placeholder="Password" name="pwd" id="pwd" />
    <input type="hidden" name="redirect_to" value="start">
    <input type="submit" name="submit" value="Login">
</form>

此示例将在提交表单之前更改隐藏字段的值。您可以根据自己的意愿构建链接,示例仅使用用户名。

当然这是可能的。您可以使用php的$_SERVER方法获取当前页面的url。这里有一个教程-PHP:如何获取当前页面的URL

然后,您可以使用GET方法将这些数据传递到登录表单页面,以便登录页面(包含登录表单)可以捕获此url。然后,您可以将此url数据作为隐藏字段或作为操作的目标php文件(如<form method="post" action="target.php?targeturl=someurl.com/somepage")的一部分包含在登录表单中,表单的目标脚本文件可以在其中读取此url。然后在处理登录数据后,处理脚本可以将浏览器重定向到目标url。

解决问题的简单方法是,一旦用户重定向到特定页面,例如编辑文章页面或编辑配置文件页面。您需要按会话保存页面的URL。

$_SESSION['refpage'] = getPageUrl(); // this is your function that will return a current page url.

用户登录后,检查会话$_session['repage']是否存在,如果找到,则重定向他,例如重定向("location:".$_session['repage'])