【问题标题】:session not working correctly in yii会话在 yii 中无法正常工作
【发布时间】:2014-01-04 08:01:07
【问题描述】:

我在什么时候使用会话 用户控制器 操作登录

             $userid=User::model()->fetch($username,$password);
            //  var_dump($userid);
             Yii::app()->SESSION['srid']=$userid;

在我的用户模型中

 public function fetch($username,$password)
{

    $sql="select id FROM user where ( username='".$username. "' AND password='".$password."')";
    $connection=Yii::app()->db;
    $command=$connection->createCommand($sql);
    $resuserid=$command->queryAll();
    //var_dump($resuserid);
    $result=array();
    foreach($resuserid as $key=>$val)
    {$result[]=$val;}
    return $result;
    }

当我在其他控制器中访问它时

个人控制者

我需要保存

$model->personid=Yii::app()->SESSION['srid'];

结果

var_dump($model->personid);

某事

  array
0 => 
array
  'id' => string '24' (length=2)

确切的 id 是 '24' 但它显示为字符串 '24'

错误是

  personid must be a number.

问题是会话将它存储为字符串,但我需要它作为整数,因为 personid 是整数............

我也想知道我们是否在 config/main 中配置会话......我需要一个数据库吗

请帮我解决这个问题

【问题讨论】:

  • 试试这个代码$model->personid = (int) Yii::app()->SESSION['srid'];
  • 对于上述 cde,personid 始终为 1
  • 试试intval(Yii::app()->SESSION['srid']);
  • 这非常容易受到 SQL 注入的攻击。我不建议你这样做
  • a) 使用它来设置会话 stackoverflow.com/questions/14197462/…

标签: session yii


【解决方案1】:

试试这个

public function fetch($username,$password)
{

    $sql="select id FROM user where ( username='".$username. "' AND password='".$password."')";
    $connection=Yii::app()->db;
    $command=$connection->createCommand($sql);
    // use queryColumn if you have to fetch only a single column
    $resuserid=$command->queryColumn();
    //var_dump($resuserid);
    $result=array();
    foreach($resuserid as $val)
    {
         // you can cast each value as integer like this
        $result=(int) $val;

    }
    return $result;
    }

注意:- Session 仅将整数存储为整数。问题是您将它存储为字符串。
如果您的查询只返回一个值,那么您应该使用 queryScalar()。

【讨论】:

  • 所以你的问题终于解决了。哈哈??永远不要对任何事情失去理智:p
  • 有时会发生 :) 继续编码 :)
【解决方案2】:

从您的代码中,$result 是一个数组,不是字符串或整数。

{$result[]=$val;}

应该是

{$result=$val;}

查看yii-user's implementation of UserIdentity 了解处理登录的更好方法。

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多