<?php
session_start();
error_reporting(E_ALL);
$servername="localhost";
$susername="root";
$spassword="";
$dbname="testdb";
$unerr=$pserr=$derror="";
$_username=$_password=$_repassword=$_email="";
$username=$password="";
if($_SERVER["REQUEST_METHOD"]=="POST"){
if(empty($_POST["username"]))
{
$unerr="Username Required";
}
else{
$username=$_POST["username"];
}
if(empty($_POST["password"]))
{
$pserr="password Required";
}
else{
$password=$_POST["password"];
$hashed_password=crypt($password);
}
$conn = mysqli_connect($servername, $susername, $spassword, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
else{
$query1=mysqli_query($conn,"SELECT * FROM user WHERE username='$username' AND password='$_password'");
$numrows=mysqli_fetch_array($query1);
if($numrows['username']=$username && $numrows['password']=$hashed_password)
{
$_SESSION['userlogin'] = $username;
$_SESSION['userpassword']=$password;
header('Location: homepage.php');
}
else{
$derror="Invalid Username or Password";
}
}
mysqli_close($conn);
}
?>
Проблема в том, что всякий раз, когда я ввожу некоторые случайные данные, пользователь все еще может войти в систему. пока я не укажу имя пользователя, которое не находится внутри таблицы. Как я могу проверить? если пользователь не существует в таблице db?Войдите в систему после авторизации
, если пользователь не существует в таблице db ?: да, это было бы хорошим началом :) – beerwin
Вы используете назначения в своей контрольной точке вместо проверки равенства. То есть '=' вместо '=='/'==='. –
Как @JonStirling это должно быть '$ numrows ['username'] === $ username && $ numrows ['password'] === $ hashed_password' – Thamilan