Write a form, login.html, which asks the user
for a username and password. Then write a script, login.php,
that will look in the file passwd.txt to see if the user's password matches.
Each username/password pair will be stored on its own line in the form username:password.
If the password entered matches the password stored in the file for that user, login.php
should display a message with a class of granted. Otherwise, it should display a message
with a class of denied.
If the user checks "I'm a new user", then you should add the provided username and
password to passwd.txt.
→
<!DOCTYPE html> <html> <head> <title>Login</title> <link href="http://webster.cs.washington.edu/cse154/sections/4/login/login.css" type="text/css" rel="stylesheet" /> </head> <body> <h1>Login</h1> <form action="login.php" method="post"> <dl> <dt>Username:</dt> <dd><input type="text" name="username" /></dd> <dt>Password:</dt> <dd><input type="password" name="password" /></dd> </dl> <p><label><input type="checkbox" name="new" /> I am a new user.</label></p> <p><input type="submit" value="Log in" /></p> </form> </body> </html>
<?php
$user = $_POST["username"];
$passwd = $_POST["password"];
$new = isset($_POST["new"]);
if ($new) {
file_put_contents("passwd.txt", "$user:$passwd\n", FILE_APPEND);
} else {
$granted = false;
$passwords = explode("\n", file_get_contents("passwd.txt"));
foreach ($passwords as $line) {
list($stored_user, $stored_pass) = explode(":", $line);
if ($entered_user == $stored_user
&& $entered_pass == $stored_pass) {
$granted = true;
break;
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<link rel="stylesheet" type="text/css"
href="http://webster.cs.washington.edu/cse154/sections/4/login/login.css" />
</head>
<body>
<?php if ($new) { ?>
<h1 class="granted">Welcome, <?= $entered_user ?>!</h1>
<?php } else if ($granted) { ?>
<h1 class="granted">Access granted</h1>
<?php } else { ?>
<h1 class="denied">Access denied!</h1>
<?php } ?>
</body>
</html>