如何设置php会话与jquery/ajax?

问题描述:

我想用ajax设置php会话。 我的功能是在session.php中设置会话。如何设置php会话与jquery/ajax?

public static function set($key, $value) { 
    $_SESSION[$key] = $value; 
} 

和我已经确认javascript警报,如果我点击是,我想设置会话。 我怎样才能简单地设置会话?

编辑 2012年4月16日15:31 GMT:+1

大卫:谢谢你的回答,看起来清晰。我试了一下,但没有在我的电脑上做任何事情。所以,我有:a.php只会

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<p>I would like to say: </p> 
<script> 
    $("p").append("<strong>Hello</strong>"); //check jquery is working 
    $.get('a.php', function(data) { 
     // do something on success? 
    }); 
</script> 

b.php(在同一文件夹)

<script type="text/javascript"> 
    alert('aaa'); 
</script> 
<?php 
echo "print by b.php"; 
?> 

,我在浏览器

+1

在您将值赋给$ _SESSION之前,您是否写过session_start? – 2012-04-16 11:01:52

+0

@ user1336101:当你说诸如“在浏览器中运行”和“在我的电脑上不做任何事情”时,我的第一个想法是,也许你没有一个支持PHP的Web服务器?你使用的是什么本地网络服务器,PHP根本就在那个网络服务器上工作? – David 2012-04-16 13:35:32

+0

另外,如果PHP _is_工作,你可以在Firebug之类的东西中调试这个请求吗?这样你就可以看到回应是什么。 (因为它看起来不会在UI中给出任何迹象表明有回应,因为你在AJAX调用中没有做任何成功的事情。) – David 2012-04-16 14:13:57

运行a.php只会你可以有一个简单的PHP网页,其中不无非就是设置的值(使用您已有的代码),然后让jQuery的调用页面:如果你想为exp

$.get('setsessionvalue.php', function(data) { 
    // do something on success? 
}); 

而且,可以使通话更一般通过在查询字符串中传递值:

$.get('setsessionvalue.php?key=someKey&value=someValue', function(data) { 
    // do something on success? 
}); 

然后你拉从$_GET收集的查询字符串值在服务器上,就像任何其他页面。

从服务器端代码的角度来看,它与任何其他页面都没有区别。你只需要渲染一个UI(如果你愿意,可以渲染数据,可能最容易使用JSON格式)。 JavaScript代码就像调用其他页面一样调用该页面。

当然,值得注意的是,如果用户愿意,用户可以手动调用此页面。所以不要将它用作会话值的任何“安全性”。如果用户转到网址:

setsessionvalue.php?key=someKey&value=someValue 

然后他们将能够手动设置其会话值。甚至覆盖你已经设置的值(他们可以在JavaScript代码中看到)。我不会特别乐于将会话值(特别是它们的键)的结构暴露给客户端代码。它似乎离你的网站有一些安全漏洞很近。

+0

哦,你好,我的坏。抱歉... – DaveRandom 2012-04-16 11:23:52