关于这个问题的问题太多了,但我仍然不理解。
案例:
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
中捕获会话值。你能建议吗?
答案 0 :(得分:2)
在这里使用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使用,但没有必要在一个简单的例子中,例如这个。
答案 1 :(得分:1)
向某人发送请求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
?>
答案 2 :(得分:0)
你的javascript不是一个很好的解决方案,因为它可以轻松入侵。人们可以简单地将check
的值更改为任何人喜欢的值,即使没有登录,也可以访问图片的链接。
更好的实现可能是这样的:
<a href="checklogin.php"><img src="img.png" alt="" /></a>
然后$_SESSION
变量。如果经过验证,您可以使用header("Location: something.html");
重定向到您要带用户的位置。如果未登录,您可以改为重定向到登录页面:header("Location: login.php");
答案 3 :(得分:0)
@Sarah 你必须首先通过ajax调用php文件并将javascript变量设置为结果。由于javascript是客户端脚本语言,因此它无法读取服务器端PHP脚本。 因此,点击调用javascript函数
function someFunc(){
//Fire Ajax request
//Set check variable
//and perform the function you want to ...
}
答案 4 :(得分:0)
<?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
我使用两个文件完成了这项工作。您可能没有包含会话文件。它对我来说很好。