小编pau*_*aul的帖子

什么是API令牌

我正在尝试找出处理我的移动应用程序(iOS和Android)和API(PHP)的用户身份验证的最佳方法.

根据我的研究,选项包括:

HTTPS上的基本身份验证 - 检查每个请求的用户的用户名/密码.

会话 - 发送每个请求的会话ID; 服务器维护状态.因此,应用程序会在后续请求中为登录用户发送用户名/密码和服务器检查,就像我的网站一样.

API令牌 - 移动应用程序发送用户名/密码并接收令牌,然后将其附加到后续请求.令牌存储在DB中并检查每个请求.

我猜我对API令牌的解释是不正确的,因为它们似乎与会话相同,因为我将会话ID存储在数据库中.

  1. 我可以纠正我对API令牌的解释.它们适用于什么?它们与会话ID有何不同?
  2. API令牌有哪些优点?
  3. oAuth(如果我们简化其用途)只是一个用于创建"API令牌"的协议吗?

php authentication api android ios

27
推荐指数
1
解决办法
6万
查看次数

如何从PHP方法返回错误?

我的User类中有一个save方法.

如果save方法遇到验证错误,它将返回我向用户显示的错误数组.但是这意味着在我的代码中我必须写:

if (!$user->save()) {
   //display success to user
}
Run Code Online (Sandbox Code Playgroud)

当然,我的保存方法应该在成功时返回true.但是在这种情况下如何处理错误呢?

php oop methods return

3
推荐指数
1
解决办法
3068
查看次数

PHP DateTime信用卡到期

我正在尝试使用DateTime检查信用卡到期日期是否已过期,但我有点迷失.

我只想比较mm/yy日期.

到目前为止,这是我的代码

$expmonth = $_POST['expMonth']; //e.g 08
$expyear = $_POST['expYear']; //e.g 15

$rawExpiry = $expmonth . $expyear;

$expiryDateTime = \DateTime::createFromFormat('my', $rawExpiry);
$expiryDate = $expiryDateTime->format('m y');

$currentDateTime = new \DateTime();
$currentDate = $currentDateTime->format('m y');

if ($expiryDate < $currentDate) {
    echo 'Expired';
} else {
    echo 'Valid';
}
Run Code Online (Sandbox Code Playgroud)

我觉得我差不多了,但if语句产生的结果不正确.任何帮助,将不胜感激.

php validation datetime date credit-card

3
推荐指数
3
解决办法
5820
查看次数

将数据库ID混淆为面向客户的号码

我正在使用mysql数据库自动增量作为订单ID.当我向用户显示订单ID时,我想以某种方式掩盖/混淆它.

为什么?

  • 所以乍一看,管理员用户显而易见的是这个数字所指的是什么(订单从10开始,客户从20开始等)
  • 乍一看,这只是我的第四顺序.

基于这个答案,我希望屏蔽/混淆的订单ID为:

  • 只是数字
  • 一致的长度(如果可能)
  • 不会造成碰撞
  • 是可逆的,所以我可以解码它并获得原始ID

我将如何在PHP中实现这一目标?它不一定非常复杂,乍一看它并不明显.

php mysql obfuscation

3
推荐指数
2
解决办法
3280
查看次数