【问题标题】:how to set php session with jquery/ajax?如何使用 jquery/ajax 设置 php 会话?
【发布时间】:2012-04-27 16:58:32
【问题描述】:

我想用 ajax 设置 php 会话。 session.php中有我设置会话的功能。

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

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

编辑 16.4.2012 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";
?>

我在浏览器中运行 a.php

【问题讨论】:

  • 你在给 $_SESSION 赋值之前写过 session_start 吗?
  • @user1336101:当您说“在浏览器中运行”和“在我的 PC 上不执行任何操作”之类的话时,我的第一个想法是您可能没有启用 PHP 的 Web 服务器?您使用的是什么本地 Web 服务器,PHP 是否可以在该 Web 服务器上运行?
  • 另外,如果 PHP 工作,你能在类似 Firebug 的东西中调试这个请求吗?这样你就可以看到响应是什么。 (因为它看起来不会在 UI 中给出任何响应的指示,因为在 AJAX 调用成功时您没有做任何事情。)

标签: php ajax session


【解决方案1】:

你可以有一个简单的 PHP 页面,它只是设置值(使用你已有的代码),然后让 jQuery 调用那个页面:

$.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 代码只是像调用任何其他页面一样调用该页面。

当然,值得注意的是,如果用户愿意,他们可以手动调用此页面。因此,不要将其用作会话值的任何“安全性”。如果用户访问 URL:

setsessionvalue.php?key=someKey&value=someValue

然后他们将能够手动设置会话值。甚至覆盖您已经设置的值(他们可以在 JavaScript 代码中看到)。我不会特别愿意将会话值的结构(尤其是它们的键)暴露给这样的客户端代码。似乎距离您的网站存在一些安全漏洞不远了。

【讨论】:

    猜你喜欢
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2018-04-04
    • 2015-04-07
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多