我不知道是否有更好的方法可以做到这一点但我使用这种方式(告诉我,如果我错了)我想制作一些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 file:
$(".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文件中的会话varibale应该包含$ _SESSION ['is_logged']但是这是我的问题????
答案 0 :(得分:3)
您可以在全局范围内将变量输出为页面本身内的<script>
。这将使任何外部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之前输出变量,否则在其他脚本尝试访问变量之前该变量可能不存在。
答案 1 :(得分:2)
是的,您可以在脚本标记中为全局变量赋值,然后可以在带有变量名的jquery函数中使用
var isUserLoggedIn = <?php echo ($_SESSION['is_logged']) ? "true" : "false"; ?>
请告诉我是否可以为您提供更多帮助。
答案 2 :(得分:2)
你的js代码:
session = "<?php echo $_SESSION['logged_in']; ?>";
因为我没有使用var
所以这意味着它在所有 js 文件中全局可用。
alert(session); //will return you the value of S_SESSION
答案 3 :(得分:0)
您可以通过PHP创建动态Javascript代码,即:
var isLogged = <?php echo (isset($_SESSION['is_logged']) && $_SESSION['is_logged']) ? "true" : "false"; ?>
这样,您可以动态创建可在Javascript代码中使用的Javascript变量isLogged