我正在尝试使用Laravel中的会话创建一个简单的管理面板。我不打算使用Laravel身份验证。我遇到错误了。我意识到它的发生是由于web.php文件中的get方法,我什至将其更改为post,但仍然无法正常工作。请帮忙,我收到以下错误。 -
RouteCollection.php第251行 RouteCollection-> methodNotAllowed(array('GET','HEAD'))在 RouteCollection.php第238行
Login.blade.php -
@php
session_start();
echo isset($_SESSION['login']);
if(isset($_SESSION['login'])) {
header('LOCATION:dashboard'); die();
}
@endphp
<html>
<body>
<h3>Login</h3>
@php
if(isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
if($username === 'admin' && $password === 'password')
{
$_SESSION['login'] = true; header('LOCATION:dashboard'); die();
} else {
echo "Username and Password do not match";
}
}
@endphp
<form action="" method="post">
Username:
<input type="text" id="username" name="username" required>
Password:
<input type="password" id="pwd" name="password" required>
<button type="submit" name="submit">Login</button>
</form>
</body>
</html>
Web.php-
Route::get('/admin', function () {
return view('admin.login');
});
Route::get('/dashboard', function () {
return view('admin.dash');
});
Dash.blade.php -
@php
session_start();
if(!isset($_SESSION['login'])) {
header('LOCATION:admin'); die();
}
@endphp
<!DOCTYPE html>
<html>
<body>
<h3>Dashboard</h3>
</body>
</html>
答案 0 :(得分:0)
看起来您正在尝试将视图用于初始获取以及表单提交中的帖子。通常这是一种不好的做法,并且您还在框架之外使用了很多普通的php,不建议这样做。
不过,您可以尝试执行以下操作:
Route::match(['get', 'post'], function () {
return view('admin.login');
});
答案 1 :(得分:0)
您仅在那儿编写了git方法。您需要添加post方法以及在同一页面上执行这两项操作。
Route::post('/admin', function () {
return view('admin.login');
});
此外,不建议您执行上述操作,因为您正在Laravel刀片文件中编写代码,但它类似于Core PHP。我建议为此使用控制器。因此,您可以创建另一条路由,并将该数据传递给路由访问控制器,然后在那儿执行操作。
<form action="/admin" method="post">
//your form
</form>
然后在您的路由文件中,将您的路由定向到控制器
Route::post('/admin', 'yourController@yourMethod');
答案 2 :(得分:0)
在Laravel中,使用post方法时必须通过 csrf_token 。 请参阅有关csrf令牌https://laravel.com/docs/5.7/csrf的链接。 在您的视图文件中添加以下代码。
/////In your view file///////
<form action="/admin" method="post">
//your form
{{ csrf_field() }} ///add the csrf_token field
</form>
/////////////////////
并在Web.php中添加代码
Route::post('/admin', function () {
return view('admin.login');
});