私はクッキーを設定しようとしています。問題は、ブラウザでCookieのユーザー名を変更すると、パスワードなしで任意のユーザーとしてログインできることです。
login.php
<?php
if (empty($_POST) === false) {
$username = $_POST ['username'];
$password = $_POST ['password'];
if (empty($username) === true || empty ($password) === true) {
$errors [] = 'er1';
} else if (user_exists($username) === false) {
$errors [] = 'er2';
} else {
$login = login($username, $password);
if ($login === false) {
$errors [] = 'er3';
} else {
setcookie("username", $username, time()+3600*24*30);
$_SESSION['user_id'] = $login;
header('Location: logged_in.php');
exit();
}
}
}
if (empty($errors) === false) {
echo output_errors($errors);
}
?>
関数 user.php
function logged_in () {
return (isset($_SESSION['user_id']) || isset($_COOKIE['username'])) ? true : false;
}
function login($username, $password) {
user_id = user_id_from_username($username);
$username = sanitize ($username);
$password = md5($password);
$query = mysql_query("SELECT COUNT('user_id') FROM `users` WHERE username = '$username' AND password = '$password'");
return (mysql_result($query, 0) == 1) ? $user_id : false;
}
コアinit.php
<?php
ob_start();
session_set_cookie_params(3600*24*30, "/");
session_start();
//error_reporting(0);
require 'database/connect.php';
require 'functions/general.php';
require 'functions/users.php';
if (logged_in() === true) {
$session_user_id = $_SESSION['user_id'];
$user_data = user_data($session_user_id, 'user_id', 'password', 'username', 'email', 'age', 'gender', 'country', 'city', 'image_id');
}
$errors = array();
?>
誰かがクッキーを保護するのを手伝ってくれますか? ユーザーがブラウザで Cookie のユーザー名を変更した場合、ユーザーをインデックスにリダイレクトしてログアウトしますか?