php从session取数据乱码,php – 从$_SESSION获取数据

我正在尝试创建简单的服务器端验证,这是我的方法

public function create() {

$name = $_POST['name'];

session_start();

unset($_SESSION['errors']);

$count = $this->model->checkIfUserExists($name);

if($count > 0) {

$_SESSION['errors'] = array(

'message' => 'User Already Exists',

'variables' => array(

'name' => $_POST['name'],

'password' => $_POST['password'],

),

);

header('location: ' . URL . 'user/registration');

exit;

}

$data = array();

$data['name'] = $_POST['name'];

$data['password'] = $_POST['password'];

$this->model->create($data);

header('location: ' . URL);

}

以及来自registration.php的代码

if (isset($_SESSION['errors']) && count($_SESSION['errors']) > 0) {

echo '

  • ';

foreach ($_SESSION['errors'] as $error) {

echo '

' . $error['message'] . '';

}

echo '

';

unset($_SESSION['errors']);

}

?>

但我得到了错误

Warning: Illegal string offset 'message' in C:\xampp\htdocs\test\views\user\registration.php on line 6

Notice: Undefined index: message in C:\xampp\htdocs\test\views\user\registration.php on line 6

怎么解决?

解决方法:

通常,警告:非法字符串偏移…表示您尝试以字符串形式访问字符串.

目前,您将$_SESSION [‘errors’]设置为具有两个元素(消息和变量)的关联数组.我相信你想要实现的是创建一个包含多个错误的数组,每个错误都有一个消息和变量.

像这样设置应该做:

...

$_SESSION['errors'] = array();

if ($count > 0) {

$_SESSION['errors'][] = array(

'message' = > 'User Already Exists',

'variables' = > array(

'name' = > $_POST['name'],

'password' = > $_POST['password'],

),

);

header('location: '.URL.'user/registration');

exit;

}

...

空方括号向数组添加一个新元素:

$myArray[] = $myNewElement;

这样,您可以轻松地向列表中添加其他错误:

$_SESSION['errors'][] = array(

'message' = > 'Error two',

'variables' = > array(...),

);

$_SESSION['errors'][] = array(

'message' = > 'Error three',

'variables' = > array(...),

);

标签:php,session

来源: https://codeday.me/bug/20190608/1201510.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值