没有Cookies的PHP会话| Codeigniter


PHP Session without Cookies | Codeigniter

场景

我正在开发一种特殊的API,它使用短信进行调用。
这里的用户发送短信喜欢
<APP NAME> <PARAMETERS>
到网关,比如9888888888。现在网关服务器以这种格式联系应用程序的API(在本例中是我的应用程序)
http://myapi.com/myapp/api.php?mobileNo=912345678&userInput=<PARAMETERS>

问题

当用户是新用户时,我会向他显示欢迎信息,并询问他的选项,如1>注册2>Help 3>Something。假设他回复123。网关会向我发送一个请求,比如
http://myapi.com/myapp/api.php?mobileNo=912345678&userInput=1
现在这意味着用户想要注册,但我该如何告诉服务器。这里很简单,只需对注册页面进行编码,即可在每次$_GET['userInput']==1时显示,依此类推。但当你使用应用程序的其他部分时,问题就出现了。比如,如果用户想做某项工作,我会要求他回复1。在这种情况下,服务器将如何判断注册或执行该工作?

当我只有一个参数传递给我时,我该如何判断用户想要什么。例如,我有两个页面,一个页面上用户在他想插入东西的地方回复1,另一个页面中用户在他想要联系我的时候回复1。

使用基于数据库的会话来跟踪用户在流程中的位置。例如,考虑以下表格:

CREATE TABLE `mobile_session` (
`mobile_number` VARCHAR(10) NOT NULL PRIMARY KEY,
`stage` TINYINT(2) NOT NULL
);

来自用户的每一组可能的输入都被分配了一个内部标识符,例如,您的注册页面可以是1,联系人页面可以是2等。每当用户与您联系时,请使用他们的手机号码和他们期望返回的输入组更新数据库。例如,如果1是您的注册页面。

REPLACE INTO `mobile_session` VALUES ([[users phone number]], '1');

然后当你收到这样的请求时:

http://myapi.com/myapp/api.php?mobileNo=912345678&userInput=1

您可以在表中查找该电话号码,以查看用户正在回复的输入组,在这种情况下,您将知道用户正在回复注册页面。