如何在JavaScript中从php文件读取会话变量

如何在JavaScript中从php文件读取会话变量,javascript,php,jquery,session,usersession,Javascript,Php,Jquery,Session,Usersession,关于这个问题有太多的问题,但我还是不明白 案例: 超链接图像 单击映像:检查会话是否存在 如果存在会话,请打开链接 如果会话不存在,则显示登录表单 onclick正在调用JavaScript函数: var my_global_link = ''; var check = '<?php echo $_SESSION["logged_in"]; ?>'; function show_login( link ) { if(check == 1) {

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

案例:

  • 超链接图像
  • 单击映像:检查会话是否存在
  • 如果存在会话,请打开链接
  • 如果会话不存在,则显示登录表单
  • 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); 
         }
    
    }
    
    var my\u global\u link='';
    var检查=“”;
    功能显示\u登录(链接){
    如果(检查==1)
    {
    window.location=链接;
    }
    其他的
    {
    我的全球链接=链接;
    //…然后显示使用“js/whitepaper login.js”的登录模式
    document.getElementById('light').style.display='block';
    document.getElementById('fade').style.display='block';
    document.getElementById('fade').scrollIntoView(true);
    }
    }
    

    全局变量正在另一个php文件中保存为:

    $\u会话['logged\u in']=1


    我无法在
    var检查中捕获会话值。你能提出建议吗?

    你的javascript不是一个很好的解决方案,因为它很容易被黑客攻击。您只需将
    check
    的值更改为自己喜欢的任何值,即使没有登录,也可以访问图片的链接

    更好的实施方式可能是:

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

    然后checklogin.php将验证
    $\u会话
    变量。如果经过验证,您可以使用
    标题(“Location:something.html”)
    重定向到要将用户带到的位置。如果未登录,则可以重定向到登录页面:
    标题(“Location:login.php”)

    向某人发出请求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
    ?>
    
    
    
    @Sarah
    您必须首先通过ajax调用php文件,并将javascript变量设置为结果。由于javascript是客户端脚本语言,因此无法读取服务器端PHP脚本。
    因此,点击调用javascript函数

    function someFunc(){
        //Fire Ajax request 
        //Set check variable 
        //and perform the function you want to ...
    }
    
    
    var my_global_link='testr.com';
    var检查=“”;
    功能显示\u登录(链接){
    如果(检查==1)
    {
    window.location=链接;
    }
    其他的
    {
    我的全球链接=链接;
    document.getElementById('light').style.display='block';
    document.getElementById('fade').style.display='block';
    document.getElementById('fade').scrollIntoView(true);
    }
    }
    
    file1.php

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


    我用两个文件完成了这项工作。我想您可能没有包括会话文件。这对我来说很好。

    使用jQuery这里是一个简单的示例,说明如何将PHP
    $\u会话
    导入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)

    
    $(函数(){
    $('a')。单击(函数(事件){//使用而不是onclick()
    event.preventDefault();//阻止默认的单击操作
    //我们不需要复杂的AJAX,因为我们只是获取一些数据
    $.get('session.php',函数(sessionData){
    console.log(sessionData);//会话数据将为'foo'
    });
    });
    });
    

    如果成功,您将看到数据,并可以通过适当地传递数据在其他JavaScript函数中使用它。我经常发现使用
    json\u encode()
    会话数据很方便,返回json供JavaScript使用,但是在像这样一个简单的例子中没有必要这样做。

    要在JavaScript中使用PHP会话变量,您必须使用AJAX调用一些PHP,这些PHP将在会话启动后和PHP输出页面之前返回变量或设置JS变量
    var check=@JayBlanchard您能详细说明如何通过AJAX设置变量吗?我在@SarahTypo中添加了一个简单的示例:change
    logged=>
    “logged”=>
    Thx进行更正:)您的会话变量将未定义。全局变量保存在另一个php文件中,格式为:$\u session['logged\u in']=1;我根据
    sess.php
    文件中的条件编写此cod?我创建了一个文件sess.php,在其中启动会话并设置会话变量$\u session['logged\u in']。我在代码所在的主文件中包含了这个文件。
    session.php
    对于我来说是一个在最初单击登录并通过ajax发布数据时调用的文件。在本例中,我直接调用session.php,这实际上就是设置session变量的原因。如果变量尚未设置,该怎么办?调用
    session.php
    是否设置变量?我必须查看会话的代码。php@Sarah您是否将该文件包括在上面显示的文件中?
    <?php
        session_start();
        $_SESSION['foo'] = 'foo';
        echo $_SESSION['foo']; // this will be echoed when the AJAX request comes in
    ?>
    
    <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>