是否可以将前端登录的用户重定向到他们创建的帖子?如果是,怎么办?
我在前端有下面的表格,它可以很好地让人们登录,但不能完全实现我想要的。
我创建了一个前端注册流程,创建一个新用户和一个帖子,并在帖子中填写某些细节。在这个过程完成后,他们会被发送到他们刚刚创建的帖子,然后允许他们在前端编辑所有细节。这对第一次注册的人来说非常有效,但对于已经注册并想登录的人来说,我无法完全实现我想要的。
当他们在下面的表格上填写详细信息时,我希望它重定向到他们注册时创建的帖子,这可能吗?
用户只能创建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'])