Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示验证所需操作的登录JS弹出窗口_Php_Javascript_Html_Ajax_Kohana - Fatal编程技术网

Php 显示验证所需操作的登录JS弹出窗口

Php 显示验证所需操作的登录JS弹出窗口,php,javascript,html,ajax,kohana,Php,Javascript,Html,Ajax,Kohana,我想显示一个登录弹出窗口,当用户点击任何需要用户登录的按钮/链接时,JS会处理这种覆盖。 例如:如果用户试图在未登录的情况下发表评论,点击帖子我必须显示这个弹出窗口 这不是ajax调用,我可以根据服务器响应显示弹出窗口 有办法做到这一点吗?也许通过检查状态码之类的 挑战是,当用户登录时,特定的操作会将用户带到另一个页面,但当用户未登录时,我想取消此操作,而是在同一页面中显示登录弹出窗口。小心,即使在chrome中,您也可以通过右键单击页面>检查元素>资源>javascript直接编辑javasc

我想显示一个登录弹出窗口,当用户点击任何需要用户登录的按钮/链接时,JS会处理这种覆盖。 例如:如果用户试图在未登录的情况下发表评论,点击帖子我必须显示这个弹出窗口

这不是ajax调用,我可以根据服务器响应显示弹出窗口

有办法做到这一点吗?也许通过检查状态码之类的


挑战是,当用户登录时,特定的操作会将用户带到另一个页面,但当用户未登录时,我想取消此操作,而是在同一页面中显示登录弹出窗口。

小心,即使在chrome中,您也可以通过右键单击页面>检查元素>资源>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>
    }
  });
});
$(文档).ready(函数(){
var valid_session='';
$('.需要登录。)。在('单击')上,函数(事件){
if(有效会话=='false'){
event.preventDefault();
警报(“改为打开弹出窗口”);
//对于InstanceC,$(“#我的弹出窗口”).show();如果您有:
//您必须先登录!
}
});
});

希望有帮助

小心,即使在chrome中,您也可以直接编辑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>
    }
  });
});
$(文档).ready(函数(){
var valid_session='';
$('.需要登录。)。在('单击')上,函数(事件){
if(有效会话=='false'){
event.preventDefault();
警报(“改为打开弹出窗口”);
//对于InstanceC,$(“#我的弹出窗口”).show();如果您有:
//您必须先登录!
}
});
});

希望有帮助

最简单的方法是在需要登录的页面上重定向,您可以使用
$this->response->redirect('auth/login')

如果您真的坚持使用js弹出窗口,您要么必须使用AJAX,要么可以在视图中编写以下内容:

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

变量loggedIn=
如果用户在重定向之前已登录,则必须检查每个操作。
这种方法的另一个问题是它不能处理会话超时。

最简单的方法是在需要登录的页面上重定向,您可以使用
$this->response->redirect('auth/login')

如果您真的坚持使用js弹出窗口,您要么必须使用AJAX,要么可以在视图中编写以下内容:

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

变量loggedIn=
如果用户在重定向之前已登录,则必须检查每个操作。 这种方法的另一个问题是它不能处理会话超时