手动控制会话


Sessions controlled manually

我试图为每个用户创建一个唯一的会话来存储一些数据。这里的用户是来自IOS应用的http请求所以这里没有浏览器只是为了方便而使用http。因此不支持自动会话。每个客户端都是唯一标识的,所以我想使用该名称作为他们的会话密钥。目标是计算每个客户端向我们发送消息的次数。

session_name($sname."S");
session_start();
//If we have a stored server message index in the session we will use that instead of what
//we pulled from that database
if(isset($_SESSION['count']))
{
    $serverMessageIndex = $_SESSION['count'];
}
else
{
    $serverMessageIndex = $msgIndex - 1;
}
//Later
$_SESSION['count'] = $serverMessageIndex + 1;

这里的想法是来自客户端的消息不能以相同的数字发送两次,因为计数器一直在上升。然而,当我尝试发送一些请求时,每个请求的数字都比最后一个大,$serverMessageIndex的打印输出显示2,2,7,2,2,7,而我期望的是1,2,3,4,5,6,7

客户端如何发送的详细信息:一个ios应用生成一个只有1个参数的url请求。这是一个经过加密和base64编码的json变量。php从json中提取上述变量$sname。这个变量将在来自客户端的每个请求中可用。

要使会话工作,会话id必须'返回'到服务器。要么通过cookie,要么作为URL的一部分。因为没有浏览器,所以没有cookie。那么你应该使用基于URL的会话id。通读http://php.net/manual/en/session.idpassing.php

尽管你的尝试应该也能奏效。记得在php.ini

中关闭自动会话启动