如何在JavaScript中从一个PHP文件中读取会话变量[复制](How to read a se

2019-10-21 19:56发布

这个问题已经在这里有一个答案:

  • 如何传递变量和数据从PHP到JavaScript的? 19个回答

已经有关于这个问题有太多的问题,但我还是不明白。

案件:

  1. 超链接图片
  2. 图像的OnClick:检查是否存在会话
  3. 如果会话存在,打开链接
  4. 如果会议不存在,显示登录表单

onclick被调用JavaScript函数:

var my_global_link = '';
var check = '<?php echo $_SESSION["logged_in"]; ?>';

function show_login( link ) {

     if(check == 1)
     {
         window.location = link;
     }
     else
     {
         my_global_link = link;  
            // .. then show login modal that uses 'js/whitepaper-login.js'
            document.getElementById('light').style.display='block';
            document.getElementById('fade').style.display='block';
            document.getElementById('fade').scrollIntoView(true); 
     }

}

全局变量被保存在另一个PHP文件为:

$_SESSION['logged_in'] = 1;

我无法捕捉到会话值var check 。 你可以建议?

Answer 1:

使用jQuery这里是如何让一个PHP一个简单的例子$_SESSION到你的JavaScript:

session.php文件

<?php
    session_start();
    $_SESSION['foo'] = 'foo';
    echo $_SESSION['foo']; // this will be echoed when the AJAX request comes in
?>

get_session.html(假定jQuery的已被列入)

<script>
    $(function() {
        $('a').click(function(event){ // use instead of onclick()
            event.preventDefault(); // prevents the default click action

            // we don't need complex AJAX because we're just getting some data
            $.get('session.php', function(sessionData) {
                console.log( sessionData ); // session data will be 'foo'
            });
        });
    });
</script>

<a href="session.php">click</a>

如果成功,你会看到的数据,并可以通过适当地传递数据使用在其他JavaScript函数。 我经常发现它很方便的json_encode()会话数据,返回JSON由JavaScript的使用,但没有必要在一个简单的例子,如这一个。



Answer 2:

提出请求的人file.php

$( document ).ready(function(){//run when DOM is loaded
  $.post("file.php",  //make request method POST to file.php
     function(data){  //callback of request is data
      var arr = jQuery.parseJSON(data); //make json decoding
      if(arr.logged == 1)   //arr.logged is value needs
       #do 
     })
 })

file.php

<?php
 session_start(); //start session for my dear friend Jay Blanchard
 $_SESSION['logged_id'] = 1; //init value for example
 $array = array('logged' => $_SESSION['logged_id']);//creat array for encoding
 echo json_encode($array); //make json encoding for call back
?>


Answer 3:

JavaScript是不是一个很好的解决方案,因为它可以很容易地砍死。 人们可以简单地改变的值check到任何人喜欢,甚至没有登录一个将能够访问图片的链接。

更好的实现可能会是这样的:

<a href="checklogin.php"><img src="img.png" alt="" /></a>

然后checklogin.php将验证$_SESSION变量。 如果验证,您可以使用header("Location: something.html"); 重定向到要带给用户。 如果没有登录,您可以改为重定向到登录页面: header("Location: login.php");



Answer 4:

@Sarah你必须首先调用通过ajax php文件,并设置JavaScript变量作为结果。 由于JavaScript是一种客户端脚本语言,因此它无法读取服务器端PHP脚本。 因此,在点击调用javascript函数

function someFunc(){
    //Fire Ajax request 
    //Set check variable 
    //and perform the function you want to ...
}


Answer 5:

<?php include "sess.php"; ?>
<script type="text/javascript">
var my_global_link = 'testr.com';
var check = '<?php echo $_SESSION["logged_in"]; ?>';

function show_login( link ) {

 if(check == 1)
 {
     window.location = link;
 }
 else
 {
     my_global_link = link;  

        document.getElementById('light').style.display='block';
        document.getElementById('fade').style.display='block';
        document.getElementById('fade').scrollIntoView(true); 
     }

    }

     </script> 
    <a href="#" onclick="show_login('test')" >test</a>

file1.php

   <?php 
   session_start();
   $_SESSION["logged_in"] = 1;
   ?> 

sess.php

我已经使用两个文件来完成这一点。 您可能还没有列入会议文件,我猜。 它的工作对我罚款。



文章来源: How to read a session variable from a php file in JavaScript [duplicate]