1

ユーザーがコメントを投稿できるページがあります。ユーザー エンゲージメントを高めるために、ログイン/登録していなくてもコメントを入力できるようにし、送信後にのみログインできるようにしたいと考えています。

これを達成するための最良/標準的な方法は何ですか?

現在、ログイン専用ページにアクセスするときは、Yii のloginRequiredメソッドを使用しています。Redirects the user browser to the login page. Before the redirection, the current URL (if it's not an AJAX url) will be kept in {@link returnUrl} so that the user browser may be redirected back to the current page after successful login.

ただし、これは URL のみを保存し、POST データは保存しません。

ちなみに、私はYii-Rightsを使用しています。

4

2 に答える 2

0

ログインしていない訪問者ごとにGUIDを作成します。GUID を一時的なユーザー ID として使用して、コメントを保存します。$_SESSION私はおそらくAJAX経由で保存を行い、コールバックでそれらをログイン/登録ページに送信します。の GUID を使用して、$_SESSIONログイン/登録前に作成されたコメントを、新しい/既存のユーザー ID を持つ完全修飾コメントに変換します。

表示面では、IDを持つユーザーと登録していないユーザーの両方からのコメントを簡単に並べて表示できます。「ユーザー」テーブルと「コメント」テーブルが少し複雑になりますが、完全に実行可能だと思います。

于 2012-12-21T09:03:05.050 に答える
0

これを行う組み込みの方法については聞いたことがありません。しかし、リンクをクリックすると、なんらかのコメント保存 URL にアクセスしたと仮定して、これはログイン ページにリダイレクトされますか?

最初に実際にアクション関数をヒットしたいので、Yii にアクセス ルールなどでリダイレクトさせるのではなく、関数へのゲスト アクセスを許可してから手動でリダイレクトする必要があります。

独自の関数に入ったら、そのデータを何らかの方法でその訪問者に結び付けたいと思うでしょう。通常の方法では入りますが$_SESSION、ログインすると再生成されます。他のオプションは Cookie データです。

コメント データを 1 つまたは 2 つの Cookie に設定し、Cookie 保存関数の戻り URL を使用してログイン ページにリダイレクトできます。おそらく、POST ではなく COOKIE をチェックインするように指示するフラグを使用することもできます。そして、そこから続けます。

それが役立つことを願っていますか、それとも要点を完全に逃しましたか?

テスト後に OK を更新
すると、SESSION データはセッション ID の再生成後も保持されているようです。したがって、単にセッションに保存できます。

私は Ian Atkins の方法が好きですが、これにはスパム ボットの懸念が伴います。これには、ある種のキャプチャまたはその他の方法で対処する必要があります。セッションに保存すると、ユーザーがログインまたは登録するまで、実際にはデータベースに何も書き込まれません。

それは本当にあなた次第です.あなたのサイトがどれだけ大きくなるか(スパムボットにとって魅力的です)と、ユーザーを認証する前に複数のコメントを表示するために必要な柔軟性に依存します.

于 2012-12-21T08:52:33.983 に答える