Попробуйте следующий сценарий входа в систему, измените определения по мере необходимости, но, пожалуйста, посмотрите подготовленные операторы PDO / MySQLi, как указано, чтобы предотвратить внедрение SQL, а также встроенную функцию password_hash
, чтобы злоумышленники не увидели действительный пароль в база данных - https://www.php.net/manual/en/function.password-hash.php
<?php
define('DB_HOST', 'host');
define('DB_USER', 'pass');
define('DB_PASS', '');
define('DB_NAME', 'dbname');
function redirect_to($location){
header("Location: $location");
exit;
}
if (isset($_POST['login'])) {
$customerid = $_POST['customerid'];
$password = $_POST['password'];
// processing remember me option and setting cookie with long expiry date
if (isset($_POST['remember'])) {
session_set_cookie_params('604800'); //one week (value in seconds)
session_regenerate_id(true);
}
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
# check connection
if ($mysqli->connect_errno) {
echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
exit();
}
$sql = "SELECT * from users WHERE customer_id ='$customerid' AND password = '$password' LIMIT 1";
$result = $mysqli->query($sql);
if (!$result) {
die($mysqli->error);
}
if ($result->num_rows != 1) {
echo '<script type="text/javascript">';
echo 'alert("Wrong Customer ID or Password!")';
echo '</script>';
echo "<div><h6 align='center' style='color: red;'>Wrong Customer ID or Password!</h6></div>";
} else {
// Authenticated, set session variables
$user = $result->fetch_array();
$_SESSION['user_id'] = $user['customer_id'];
$_SESSION['email'] = $user['email'];
// update status to online
$sql = "UPDATE users SET log_status= '$timestamp' WHERE customer_id={$_SESSION['user_id']}";
$result = $mysqli->query($sql);
redirect_to("dashboard.php?id={$_SESSION['user_id']}");
// do stuffs
}
}
?>
<form method="POST">
Username<input name="customerid"></input>
Password<input type="password" name="password"></input>
<input name="login" type="submit" value="Login" />
</form>