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

时间:2013-02-21 15:53:12

标签: php jquery wordpress forms

是否可以将前端登录用户重定向到他们创建的帖子?如果是这样的话?

我在前端有下面的表格,可以很好地记录下来,但是并没有达到我想要的效果。

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

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

用户只能创建 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 } ?>  

我猜是以下......

我需要使用用户名(在上面的表单中输入)进行操作,然后将其与任何帖子的作者匹配,如果匹配则将其发送到该页面...所有在提交上述表单之前。这需要在隐藏字段之前完成,因此它可以将用户名字段输入隐藏的输入值。

3 个答案:

答案 0 :(得分:2)

由于用户只能发布 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>

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

答案 1 :(得分:0)

当然这是可能的。您可以使用php的$_SERVER方法获取当前页面的网址。这是一个教程 - PHP: How to Get the Current Page URL

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

答案 2 :(得分:0)

解决问题的简便方法是,一旦用户重定向到特定页面,例如编辑帖子页面或编辑个人资料页面。您需要按会话保存页面的URL。

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

用户登录后,检查会话$ _SESSION [&#39; refpage&#39;]是否存在,如果找到则重定向,例如重定向(&#34;位置:&#34;。$ _SESSION [&#39; refpage&#39;])

相关问题