1

ユーザーが作成した投稿にフロント エンド ログインでユーザーをリダイレクトすることは可能ですか? もしそうなら、どのように?

私はフロントエンドに以下のフォームを持っていますが、これは人々をログインさせるのにうまく機能しますが、私が望むものを完全には達成していません.

新しいユーザーと投稿を作成し、その投稿に特定の詳細を入力するフロントエンド登録プロセスを作成しました。そのプロセスが完了すると、作成したばかりの投稿に送信され、すべての詳細をフロントエンドで編集できるようになります。これは初めての登録者には完全に機能しますが、すでに登録してログインしたい人には、私が望むことを完全に達成することはできません.

以下のフォームに詳細を入力すると、登録時に作成した投稿にリダイレクトされるようにしたいのですが、可能ですか?

ユーザーは、プロファイルとして機能する 1 つの投稿しか作成できません。そのため、ログインしてプロファイルにリダイレクトできるようにしたいと考えています。

それが役立つ場合、ユーザー名は投稿のタイトルと同じです(ユーザー名は投稿の名前でもある人の会社名です)。例: ユーザー名 = 私の会社。投稿タイトル = 私の会社.

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

推測ですが、以下の...

ユーザー名(上記のフォームに入力)で何かをする必要があり、それを投稿の作成者と照合し、一致する場合はそのページに送信します...すべて上記のフォームを送信する前に。これは隠しフィールドの前に行う必要があるため、ユーザー名フィールドを隠し入力値に入力できます。

4

3 に答える 3

2

ユーザーは1つの投稿しか持てないため、データベースに保存されているものなど、それを検出するためのリンクまたはメソッドがあることは確かです。できることは、資格情報が正しいかどうかをテストし、リンクを見つけてリダイレクトをオーバーライドすることです。ユーザーがログインする前に、リンクを知って非表示にする必要はありません。それは不可能です。

例:

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

この例では、フォームが送信される前に隠しフィールドの値を変更します。必要に応じてリンクを作成できます。例ではユーザー名のみを使用します。

于 2013-02-21T16:04:43.143 に答える
0

もちろん、これは可能です。現在のページの URL は、php の$_SERVERメソッドを使用して取得できます。ここにチュートリアルがあります - PHP: 現在のページの URL を取得する方法

次に、メソッドを使用してこのデータをログイン フォーム ページに渡しGET、ログイン ページ (ログイン フォームを含む) がこの URL をキャッチできるようにします。次に、隠しフィールドとして、または<form method="post" action="target.php?targeturl=someurl.com/somepage"フォームのターゲット スクリプト ファイルがこの URL を読み取ることができるアクションのターゲット php ファイル (のような) の一部として、この URL データをログイン フォームに含めることができます。次に、ログイン データを処理した後、処理スクリプトはブラウザをターゲット URL にリダイレクトできます。

于 2013-02-21T16:02:24.470 に答える
0

問題を解決する簡単な方法は、ユーザーが特定のページ (投稿ページの編集、プロフィール ページの編集など) にリダイレクトされたことです。ページの URL をセッションごとに保存する必要があります。

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

ユーザーがログインした後、セッション $_SESSION['refpage'] が存在するかどうかを確認し、見つかった場合はリダイレクトします。たとえば、redirect("location:".$_SESSION['refpage'])

于 2013-02-21T16:17:03.790 に答える