2013-02-21 65 views
1

是否可以將前端登錄用戶重定向到他們創建的帖子?如果是這樣如何?前端登錄:重定向到用戶創建的帖子

我在下面的表格中有很好的日誌記錄功能,但並不完全符合我的要求。

我創建了一個前端註冊過程,創建一個新用戶和一個帖子,並在該帖子中填入某些細節。完成該過程後,他們將被髮送到他們剛剛創建的帖子,然後允許他們前端編輯所有細節。這對第一次註冊人來說非常合適,但我無法完成我想要註冊並希望登錄的人的內容。

當他們在下面的表格中填寫他們的詳細信息時,我希望它重定向到他們在註冊時創建的帖子,這可能嗎?

用戶只能創建ONE後...作爲配置文件。所以我希望他們能夠登錄並重定向到他們的個人資料。

如果有幫助,用戶名與帖子標題相同(用戶名是用戶公司名稱,也是帖子的名稱)。例如,用戶名=我的公司。帖子標題=我的公司。

  <?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 } ?> 

我猜下面...

我需要做的用戶名(在上面的表格中輸入)的東西,然後匹配任何文章的作者,如果匹配,則發送他們到那個頁面...所有提交上面的表格之前。這需要在隱藏字段之前完成,因此它可以將用戶名字段輸入到隱藏的輸入值中。

+2

我討厭這個問題「可能嗎?」作爲一名程序員,你會發現任何一臺計算機都是可能的,唯一的問題是,「我有時間去做嗎?」 – Nick 2013-02-21 15:55:51

+0

成功登錄後,在「wp-login.php」中重新路由用戶有什麼問題?你可以用['header(..)'](http://php.net/manual/en/function.header.php)做一個php重定向。 – 2013-02-21 16:02:06

+0

@Garreh隱藏的字段實際上是重定向的部分。目前它只記錄該人並重新加載相同的頁面。 – Rob 2013-02-21 16:08:30

回答

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> 

提交表單之前的例子將改變隱藏字段的值。您可以根據需要構建鏈接,該示例僅使用用戶名。

+0

我有一個兩步表單,如果公司名稱是唯一的,則只允許用戶進入第二步 - 這意味着每個帖子都有一個唯一的名稱。在問題的形式 - 隱藏的領域是重定向用戶。它需要將動作設置爲Wordpress在背景中執行的某些操作,而我並不想觸及它。 – Rob 2013-02-21 16:07:09

+1

你想要的問題是你將不得不深入登錄代碼。在他們這樣做之前無法知道誰將要登錄,因此無法準備好鏈接。你可以找到方法來「猜測」,但沒有建議。 – UnholyRanger 2013-02-21 16:16:50

+0

是否沒有辦法接受他們輸入的用戶名,並通過jquery將其置於隱藏輸入值的末尾?由於用戶名與帖子鏈接相同(因爲它是標題)。 – Rob 2013-02-21 16:20:49

0

當然這是可能的。您可以使用php的$_SERVER方法獲取當前頁面的URL。這裏是一個教程 - PHP: How to Get the Current Page URL

那麼你可以通過這個數據到使用GET方法登錄表單頁面,以便登錄頁面(包含登錄表單)可以趕上這個網址。然後,您可以將這些網址數據作爲隱藏字段包含在登錄表單中,或作爲動作目標php文件(如<form method="post" action="target.php?targeturl=someurl.com/somepage")的一部分,其中表單的目標腳本文件可以讀取此網址。然後在處理登錄數據後,處理腳本可以將瀏覽器重定向到目標url。

0

解決您的問題的簡單方法是,一旦用戶重定向到特定頁面,例如編輯帖子頁面或編輯個人資料頁面。您需要按會話保存頁面的URL。

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

用戶登錄後,檢查會話$ _SESSION [ 'refpage']是存在的,如果發現然後重定向他如重定向( 「位置:」。$ _ SESSION [ 'refpage'])