Php 拉威尔罐头';t从请求调用数组键
这是我的密码Php 拉威尔罐头';t从请求调用数组键,php,laravel,Php,Laravel,这是我的密码 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Symfony\Component\HttpFoundation\Response; class LoginController extends Controller { public function login(Request $request)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Symfony\Component\HttpFoundation\Response;
class LoginController extends Controller
{
public function login(Request $request) {
$response = $request->all();
print_r($response);
$email = '';
$password = '';
foreach($response as $item) {
$email = $item['email']
}
if($this->checkIfValid($email, $password) == true) {
$user = DB::Select('select * from user where email = ?', ['email' => $email]);
var_dump($user);
} else {
return response()->json(['error' => 'Cant validate email and/or password']);
}
}
private function checkIfValid($email, $password) {
if($email != '' && $password != '') {
echo('test');
if(filter_var($email, FILTER_VALIDATE_EMAIL) == True) {
echo('test2');
return true;
}
} else {
return false;
}
}
private function checkEmailExists($email, $dbemail) {
if($email == $dbemail) {
return true;
} else {
return false;
}
}
}
不需要循环$response。你可以这么做
$email = $response['name'];
或者直接请求实例
$email = $request->email;
您可以使用Laravels验证,而不是编写自定义验证逻辑。比如:
public function login(Request $request) {
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string'
]);
...
}
array:3 [▼
"_token" => "r3hr..."
"email" => "john.doe@gmail.com"
"password" => "1234"
]
或者只是检查请求中是否存在这些值
if ($request->has(['email', 'password'])) {
...
}
更新以回答评论中的作者问题
假设您dd($response)
得到如下结果:
public function login(Request $request) {
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string'
]);
...
}
array:3 [▼
"_token" => "r3hr..."
"email" => "john.doe@gmail.com"
"password" => "1234"
]
当你看到这个的时候
foreach($response as $item) {
// $item here is the value
$email = $item['email']; // you can't do this
$email = $item; // this you could do but it would overwrite each time
}
但是当我打印r($response)时,它会给出这个输出数组([0]=>{“email”:”cvsshred7@gmail.com,“密码”:“测试”})