0

我不知道是否有更好的方法来做到这一点,但我使用这种方式(告诉我我是否错了)我想制作一些 JavaScript 以在用户登录时显示某些内容,如果用户未登录则隐藏该内容登录。但是进行登录凭据检查的函数是用 PHP 编写的:

function login()
{
    $username = $_POST['username'];
    $password = md5($_POST['password']);
    $url = $_POST['url'];
    $users = $GLOBALS['db']->query("SELECT * FROM users WHERE username='$username' AND password='$password'") or $GLOBALS['db']->raise_error(); // Leaving 'raise_error()' blank will create an error message with the SQL
    $users_number = $GLOBALS['db']->num_rows($users);
    if(!empty($users_number))
    {
        $_SESSION['username'] = $username;
        $_SESSION['password'] = $password;
            $_SESSION['is_logged'] = 'yes';
        header('Location:?'.$url);
    }

}

我正在尝试在 JavaScript 中获取并检查 $_SESSION['is_logged'] 的这个值,但我无法从 jquery 或 javaScript 传递或读取这个值

.js 文件:

$(".link_to_comment a").live('click',function(){
                //if you are not logged in you will see a log in box (with a link to register if you are not)
                if(session == 'no')
                {
                    $("#forum").html("<form name='login_form' action='?page=functions.php&fun=login' method='post'><table><tr><td>Username:</td><td><input type='text' name='username'></td><td>error</td></tr><tr><td>Password:</td><td><input type='password' name='password'></td><td>error</td></tr><tr><td></td><td><input type='submit'></td><td>error</td></tr><tr><td></td><td><input type='hidden' name='url' value="+url+"></td><td></td></tr></table>");
                }
                //if you are logged in you will add your comment here
                else if(session == 'yes')
                {
                    $("#forum").find(".make_a_comment").show();
                    $("#forum").find(".link_to_comment").hide();
                }
            });

js 文件中的会话变量应该包含 $_SESSION['is_logged'] 但这是我的问题????

4

4 回答 4

3

<script>您可以在页面本身的全局范围内将变量作为 a 输出。这将使任何外部 Javascript 文件都可以访问该变量:

<script>
    var loggedIn = <?php echo isset($_SESSION['is_logged']) && $_SESSION['is_logged'] == 'yes' ? 'true' : 'false'; ?>;
</script>

这将输出var loggedIn = true;var loggedIn = false;取决于会话变量。

现在在任何其他 Javascript 中,您可以检查变量:

            if(loggedIn == false)
            {
                $("#forum").html("<form name='login_form' action='?page=functions.php&fun=login' method='post'><table><tr><td>Username:</td><td><input type='text' name='username'></td><td>error</td></tr><tr><td>Password:</td><td><input type='password' name='password'></td><td>error</td></tr><tr><td></td><td><input type='submit'></td><td>error</td></tr><tr><td></td><td><input type='hidden' name='url' value="+url+"></td><td></td></tr></table>");
            }

请记住,您需要在任何其他 Javascript 之前输出该变量,否则在其他脚本尝试访问它之前该变量可能不存在。

于 2013-06-26T07:05:16.253 回答
2

是的,您可以在脚本标记中为全局变量赋值,然后您可以在带有变量名的 jquery 函数中使用

var isUserLoggedIn = <?php echo ($_SESSION['is_logged']) ? "true" : "false"; ?>

让我知道我是否可以为您提供更多帮助。

于 2013-06-26T07:07:52.693 回答
2

你的js代码:

session = "<?php echo  $_SESSION['logged_in']; ?>"; 

由于我没有使用过 var,所以这意味着它在所有js文件中都是全局可用的。

alert(session); //will return you the value of S_SESSION
于 2013-06-26T07:08:53.277 回答
0

您可以通过 PHP 创建动态 Javascript 代码,即:

var isLogged = <?php echo (isset($_SESSION['is_logged']) && $_SESSION['is_logged']) ? "true" : "false"; ?>

通过这种方式,您可以动态创建isLogged可在 Javascript 代码中使用的 Javascript 变量

于 2013-06-26T07:05:27.990 回答