【发布时间】:2021-05-07 16:55:19
【问题描述】:
我一直在谷歌搜索并浏览 Laravel 文档,但没有找到解决方案。
我想通过使用表数据设置会话,然后在视图中显示它。以前,当我使用原生 PHP 时,我是这样做的:
<?php
session_start();
$query = mysqli_query($conn, "SELECT username, full_name from tbl_user WHERE username = 'john01'");
$row = mysqli_fetch_assoc($query);
$_SESSION['full_name'] = $row['full_name'];
?>
<?php echo $_SESSION['full_name'] ?>
但是在 Laravel 中,我失败了。这是我的代码:
身份验证控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Validator;
use Session;
use App\User;
class Login extends Controller
{
public function auth(Request $r) {
$data = [
'username' => $r->input('txt_username'), //my username text_field
'password' => $r->input('txt_password') // my password text_field
];
Auth::attempt($data);
if(Auth::check()) {
$data2 = DB::table('tbl_user')
->select('user_id','username', 'full_name')
->where('username', '=', $data->$r->input('txt_username'))
->limit(1)
->get();
foreach($data2 as $a) {
Session::put('full_name', $a->full_name);
}
return redirect('home', ['data' => $data2]);
}else{
return redirect('login');
}
}
?>
如果我输入错误的用户名或密码,页面将重定向到“登录”并且无法访问“主页”,但是当我点击“登录”时,我会收到此错误:
TypeError
Symfony\Component\HttpFoundation\RedirectResponse::__construct(): Argument #2 ($status) must be of type int, array given
感谢您的建议和帮助
【问题讨论】:
-
你的意思是当你输入正确的用户名和密码时,而不是成功验证,你得到了上面提到的错误?
-
@AhmadKarimi 是的,正确。如果我注释掉查询生成器部分并在 Auth 之后键入 return redirect('home'),它将直接返回主页。但我无法在主页上回显会话。我需要为我的表(tbl_user)上的某些字段设置会话