我在laravel中创建了一个登录名,实际上是laravel的新用户,该网站已经在laravel中创建,我尝试在其中添加登录名并进行注册,welcome.blade.php中的登录名如下所示:
<?php
$username = "";
$errors = array();
$db = mysqli_connect('localhost', 'root', 'root', 'test');
$user_check_query = "SELECT * FROM registers WHERE username='$username' LIMIT 1";
$result = mysqli_query($db, $user_check_query);
$user = mysqli_fetch_assoc($result);
if ($user) { // if user exists
if ($user['username'] === $username) {
array_push($errors, "Username already exists");
}}
?>
<form method="get" action="">
<div style="width: 300px;">
<input type="text" name="username" class="form-control" placeholder="Username" >
</div>
<br>
<div style="width: 300px;">
<input type="password" name="password" class="form-control" placeholder="Password" >
</div>
<br>
<button type="submit" class="btn" name="login_user">Login</button>
</form>
<?php if (isset($_GET['login_user'])) {
$username = mysqli_real_escape_string($db, $_GET['username']);
$password = mysqli_real_escape_string($db, $_GET['password']);
if (empty($username)) {
array_push($errors, "Username is required");
}
if (empty($password)) {
array_push($errors, "Password is required");
}
if (count($errors) == 0) {
$query = "SELECT * FROM registers WHERE username='$username' AND password='$password'";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: index.php');
}else {
array_push($errors, "Wrong username/password combination");
}
}
}?>
每当我尝试登录时,它都不会登录,而是重新加载同一页面,并在URL中显示输入的密码和用户名,如下所示
http://demo.website/teia/members/?username=test&password=testing&login_user=
谁能告诉我我的代码有什么问题
您在表单中使用了错误的方法。GET
方法始终使用输入数据生成URI,这在处理诸如用户个人信息之类的数据时确实是一个巨大的漏洞。GET用于从指定资源请求数据,查询字符串在GET请求的URL中发送。
有关GET请求的其他注意事项:
为防止这种情况发生,请使用POST方法。POST用于将数据发送到服务器。通过POST发送到服务器的数据存储在HTTP请求的请求正文中,而不是存储在URI中,这更加安全。
有关POST请求的其他注意事项:
将表格更改为此:
<form method="POST" action="">
参考:w3schools。
编辑:别忘了将您的路由也更改为POST。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句