【发布时间】:2014-05-07 18:06:38
【问题描述】:
我正在开发一个网络服务(cakephp 2.4.7),我在用户模型上使用 findById 方法。
我拥有的是:
$user = $this->User->findById($userid);
if (!$user) {
throw new NotFoundException(__('Invalid User'));
}
问题是,如果$userid == 2 我得到了 ID 为 2 的用户。到目前为止一切都很好。但是如果(例如)$userid == 2as 我也得到了 id 为2 的用户。
我认为问题在于,$userid 是一个字符串,而2as 变成了2。
我该如何解决这个问题?
【问题讨论】:
-
我不确定,试试
=== -
使用 is_int() 验证 $userid in2.php.net/manual/en/function.is-int.php
-
问题是
2也是一个字符串,如果我检查 is_int($userid) 结果总是假的。 -
将其称为“功能”就完成了 :-) 更严重的是,
is_int()检查类型,is_numeric()接受十进制数字,因此它们不适合这项工作。但是您可以使用像这样的简单正则表达式 stackoverflow.com/questions/4100022/php-validate-integer -
问题是我有一个功能,我通过比较
$this->Auth->User('id')和$userid来检查用户是否访问了他自己的个人资料,这会返回false..暂时我用$userid = intval($userid);解决了这个问题控制器中每个动作的顶部。
标签: php cakephp cakephp-2.4.7