Я не могу понять, почему следующий PHP не будет работать должным образом:
<?php
//Authenticate user credentials
function authenticate($name, $password) {
$sql = "SELECT *
FROM users
WHERE username = '$name'
AND password = '" . md5($password) . "'";
$result = mysql_query($sql);
if ($row = mysql_fetch_array($result)) {
//Successful login
echo "Welcome back, " . $row['username'] . "!";
return true;
} else {
//Failed login
echo "Invalid username or password";
return false;
}
}
function addUser($name, $password) {
$sql = "INSERT
INTO users (username, role, password)
VALUES ('$name', 'CHAIR', '". md5($password) . "');";
mysql_query($sql);
}
function createTables() {
$sql = "CREATE TABLE Users (
Create table Users(
username varchar(50) NOT NULL,
role ENUM('CHAIR', 'FACULTY', 'STAFF') NOT NULL,
password varchar(255) NOT NULL,
email varchar(50) NOT NULL PRIMARY KEY,
applicant_client_id varchar(50) NOT NULL,
countries varchar(50),
research_area varchar(255),
numAssignedReviews TINYINT UNSIGNED,
available varchar(50),
workload FLOAT UNSIGNED
);"
;
mysql_query($sql);
}
session_start();
if (isset($_SESSION['loggedIn'])) {
echo '<script> alert("LoggedIn is set") </script>';
$con = mysql_connect("localhost", "ttony21_Tony", "cse308");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("ttony21_GARS", $con);
$name = $_POST["name"];
$password = $_POST["password"];
if (authenticate($name, $password)) {
$_SESSION['loggedIn'] = true;
}
mysql_close($con);
} else {
$_SESSION['loggedIn'] = false;
echo '<script> alert("LoggedIn is not set") </script>';
}
?>
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>GARS</title>
<style type="text/css">
body {
text-align: center;
min-width: 600px;
}
#wrapper {
margin: 0 auto;
width: 600px;
text-align: left;
}
</style>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<div class = "wrapper">
<?php
if ($_SESSION['loggedIn']) {
echo '
<div class = "upload">
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</div>
';
} else {
echo '
<div class = "login">
<form action = "/" id = "loginForm" method = "post">
<p>
Username: <input type = "text" name = "name" />
<br />
Password: <input type = "password" name = "password" />
<br />
<input type = "submit" id= "submit"/>
</p>
</form>
</div>
';
}
?>
</div>
</body>
</html>
Есть форма: <form action = "/" id = "loginForm" method = "post">
Когда я либо отправляю форму, либо обновляю страницу, она должна предупредить меня с сообщением "Вход в систему установлен" правильно? Но я получаю только сообщение «Вход в систему не установлен».
Я знаю, что сеанс начинается, и loggedIn установлен правильно, но, похоже, я теряю переменную при обновлении страницы или использовании формы, что не должно происходить, потому что это переменная сеанса, верно?
Я новичок в их использовании, поэтому любая помощь будет оценена.