0

ユーザーがログインする必要があるボタン/リンクをクリックしたときに、JS によって処理される一種のログイン ポップアップを表示したいと考えています。このポップアップ。

これは、サーバーの応答に基づいてポップアップを表示できる ajax 呼び出しではありません。

これを行う方法はありますか?たぶん、ステータスコードなどをチェックすることで?

課題は、ユーザーがログインすると特定のアクションでユーザーが別のページに移動することですが、ユーザーがログインしていない場合はこれを抑制し、代わりに同じページにログイン ポップアップを表示したいと考えています。

4

2 に答える 2

2

クロムでも、ページを右クリックして要素を検査>リソース> JavaScriptを直接編集し、チェックをバイパスして変更を入力するだけで、JavaScriptを直接編集できます。ユーザーエクスペリエンスを向上させるためだけに使用することに注意してください。ただし、phpまたはサーバー側のスクリプトが有効なセッションをチェックしていることを確認してください。

したがって、ボタン/リンクに次のようにクラスを追加すると、それを処理していると仮定します。

<a href="go_to_post.php" class="requires_login">Post Comment</a>
<form><input type="submit" class="requires_login" value="Post Comment" /></form>

たとえば、javascript または jquery を使用できます。

$(document).ready(function(){
  var valid_session='<?php echo (isset($_SESSION['id']) ? 'true':'false'); ?>';
  $('.requires_login').on('click',function(event){
    if (valid_session=='false'){
      event.preventDefault();
      alert('open popup instead');
      //for instancce, $('#my_popup').show(); if you have:
      //<div id="my_popup">You must be logged in first!</div>
    }
  });
});

それが役立つことを願っています!

于 2012-10-23T11:49:29.443 に答える
1

最も簡単な方法は、ログインが必要なページにリダイレクトすることです。$this->response->redirect('auth/login');

本当に js ポップアップが必要な場合は、AJAX を使用するか、ビューに次のように記述します。

<script language="javascript">
var loggedIn = <?= Auth::instance()->logged_in() ? "true" : "false" ?>
</script>

リダイレクトする前に、ユーザーがログインしている場合は、各アクションを確認する必要があります。また、このアプローチの問題は、セッション タイムアウトを処理しないことです。

于 2012-10-23T11:53:19.030 に答える