如果我在我的 PHP API 脚本中设置 $_SESSION 变量,它们是不是由 AFNetworking 2 自动存储

Posted

技术标签:

【中文标题】如果我在我的 PHP API 脚本中设置 $_SESSION 变量,它们是不是由 AFNetworking 2 自动存储【英文标题】:If I set $_SESSION variables in my PHP API Script, are they automatically stored by AFNetworking 2如果我在我的 PHP API 脚本中设置 $_SESSION 变量,它们是否由 AFNetworking 2 自动存储 【发布时间】:2014-03-19 05:44:32 【问题描述】:

我需要有关 AFNetworking 和为用户设置数据的帮助。我有一个用户将用来访问数据的 ios 应用程序。我已使用 AFNetworking 2.2 成功登录,但我想使用 php 登录脚本中的数据 $_SESSION 数据来填充其他视图的查询。

例如,如果 Joe Bloggs 登录到应用程序,我将 SQL 查询中的 $_SESSION 变量设置为:

$_SESSION['id'] = $row['id'];
$_SESSION['user'] = $row['username'];
$_SESSION['name'] = $row['name']; 

我想做的是在我将数据返回到我的应用程序时存储这些变量,以便我可以使用这些值将其 POST 回另一个端点并从数据库中查询相关的用户数据。

根据我的阅读,AFNetworking 会自动保存 cookie,但是否也存储了 SESSION 数据?如果没有,我将如何存储这些值?或者,如果这些值无法存储,我可以使用 cookie 中的数据在返回下一个端点后检索 $_SESSION 变量中的值吗?

对不起,我有点迷路了。我希望这是有道理的。


<?php
session_start();
header('Content-type: application/json');

require_once('DbConnector.php');

$connector = new DbConnector();

$username=htmlspecialchars($_POST['username'],ENT_QUOTES);
$password=md5($_POST['password']);

$sql="SELECT id, username, password, name FROM users WHERE username='".$username."' AND enabled = '1'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);

//if username exists
if(mysql_num_rows($result)>0)

    //compare the password
    if(strcmp($row['password'],$password)==0)
    

        $_SESSION['id'] = $row['id'];
        $_SESSION['user'] = $row['username'];
        $_SESSION['name'] = $row['name'];       
        $userSession = json_encode ($_SESSION['name']['user']['id']);

        echo '"success":1';

        //echo '"custid":$custid, "username":"$username", "name":"$name"';
  else 
    echo '"success":0,"error_message":"Username and/or password is invalid."';



else     echo '"success":0,"error_message":"Username and/or password is invalid."'; 



?>

【问题讨论】:

旁注,$_SESSION 全部大写 是的,抱歉,这是一个错字,哈哈。它在脚本中全部大写 你的脚本顶部有session_start();,在任何其他输出之前,是吗? 是的,我已编辑问题以显示整个 PHP 登录脚本 【参考方案1】:

好的,所以在尝试使其正常工作一周后,我发现我只需要设置 $_SESSION 变量,然后成功后,这些变量必须可以根据标题中设置的信息进行访问。

未来的查询可以用 $_SESSION 变量填充,因为您已经在您计划使用的所有 PHP 脚本中正确启动了会话。

我最初确实遇到了一些错误,因为我试图将 JSON 写入标头(检查我脚本中的 $userSession 变量),一旦我将有问题的行注释掉,效果很好!!

【讨论】:

以上是关于如果我在我的 PHP API 脚本中设置 $_SESSION 变量,它们是不是由 AFNetworking 2 自动存储的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 中的 Google Adwords API 中设置多个 ClientCustomerId?

如何在我的 Jest 配置中设置时区?

Set-Cookie 未在我的浏览器中设置 cookie (React + Sanctum)

无法在 PHP 中设置默认时区

如何使用另一个 API 的用户群在 laravel 中设置身份验证?

我可以在 Android 谷歌地图 API 中设置折线不透明度吗