Php 我如何使我的假登录页面显示;“已授予访问权限”;成功登录后没有其他内容?
我有一个任务,需要我创建一个简单的登录页面,要求输入用户名和密码。一旦输入,它会检查一个文本文件,如果用户名和密码与文件上的匹配,它应该显示“已授予访问权限”字样,页面上没有其他内容 如何使我的表单在加载时正常显示,然后当尝试登录失败时,它会在同一页面上显示“拒绝访问”,但当尝试登录成功时,会显示“授予访问权限”,而不会显示其他内容 这是我的密码:Php 我如何使我的假登录页面显示;“已授予访问权限”;成功登录后没有其他内容?,php,html,forms,authentication,Php,Html,Forms,Authentication,我有一个任务,需要我创建一个简单的登录页面,要求输入用户名和密码。一旦输入,它会检查一个文本文件,如果用户名和密码与文件上的匹配,它应该显示“已授予访问权限”字样,页面上没有其他内容 如何使我的表单在加载时正常显示,然后当尝试登录失败时,它会在同一页面上显示“拒绝访问”,但当尝试登录成功时,会显示“授予访问权限”,而不会显示其他内容 这是我的密码: <?php $fs = fopen('includes/users.txt', 'r'); $contents = fread
<?php
$fs = fopen('includes/users.txt', 'r');
$contents = fread($fs, filesize('includes/users.txt'));
$words = explode('||>><<||', $contents);
$msg = "";
if(isset($_POST['Submit']))
{
foreach($words as $word)
{
$names = explode(",", $word);
for($x = 0; $x < sizeof($names); $x++)
{
if($x == 0)
{
$username = $names[$x];
}
else
{
$password = $names[$x];
}
}
if($_POST['user'] == $username && $_POST['pass'] == $password)
{
$msg = "<p>Access Granted!</p>";
break;
}
else
{
$msg = "<p>Access Denied!</p>";
break;
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Insecure</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div>
<form method="post">
<input placeholder="Username" type="text" name="user"><br>
<input placeholder="Password" type="password" name="pass"><br><br>
<input type="submit" value="Log In" name="Submit">
<input type="reset">
</form><br><br>
</div>
<?php echo $msg; ?>
</body>
</html>
不安全的
您可以使用Die(“”);或退出(“”)
像这样:
Die("Access granted");
骰子会杀死整个页面,您可以设置一条消息
为了获得更好的结果:
die("<div class='YOUR CLASSES'>Your message</div>");
die(“你的信息”);
退出真的是死哈哈
exit("MESSAGE");
exit("<div class='YOUR CLASSES'>Your message</div>");
退出(“消息”);
退出(“您的邮件”);
您可以使用Die(“”);或退出(“”)
像这样:
Die("Access granted");
骰子会杀死整个页面,您可以设置一条消息
为了获得更好的结果:
die("<div class='YOUR CLASSES'>Your message</div>");
die(“你的信息”);
退出真的是死哈哈
exit("MESSAGE");
exit("<div class='YOUR CLASSES'>Your message</div>");
退出(“消息”);
退出(“您的邮件”);
在if和else语句中声明$msg变量时,立即回显该变量,而不是在表单之后
为了确保$msg回音后屏幕上不会打印其他内容,一种简单的方法是使用“die()”
这样,表单就不会显示,因为脚本在if或else语句中回显$msg后被终止
<?php
$fs = fopen('includes/users.txt', 'r');
$contents = fread($fs, filesize('includes/users.txt'));
$words = explode('||>><<||', $contents);
$msg = "";
if(isset($_POST['Submit']))
{
foreach($words as $word)
{
$names = explode(",", $word);
for($x = 0; $x < sizeof($names); $x++)
{
if($x == 0)
{
$username = $names[$x];
}
else
{
$password = $names[$x];
}
}
if($_POST['user'] == $username && $_POST['pass'] == $password)
{
$msg = "<p>Access Granted!</p>";
break;
}
else
{
$msg = "<p>Access Denied!</p>";
break;
}
//Print the $msg variable and kill the script
die($msg);
}
}
您的HTML变成:
<form method="post">
<input placeholder="Username" type="text" name="user"><br>
<input placeholder="Password" type="password" name="pass"><br><br>
<input type="submit" value="Log In" name="Submit">
<input type="reset">
</form>
在if和else语句中声明$msg变量时,立即回显该变量,而不是在表单之后
为了确保$msg回音后屏幕上不会打印其他内容,一种简单的方法是使用“die()”
这样,表单就不会显示,因为脚本在if或else语句中回显$msg后被终止
<?php
$fs = fopen('includes/users.txt', 'r');
$contents = fread($fs, filesize('includes/users.txt'));
$words = explode('||>><<||', $contents);
$msg = "";
if(isset($_POST['Submit']))
{
foreach($words as $word)
{
$names = explode(",", $word);
for($x = 0; $x < sizeof($names); $x++)
{
if($x == 0)
{
$username = $names[$x];
}
else
{
$password = $names[$x];
}
}
if($_POST['user'] == $username && $_POST['pass'] == $password)
{
$msg = "<p>Access Granted!</p>";
break;
}
else
{
$msg = "<p>Access Denied!</p>";
break;
}
//Print the $msg variable and kill the script
die($msg);
}
}
您的HTML变成:
<form method="post">
<input placeholder="Username" type="text" name="user"><br>
<input placeholder="Password" type="password" name="pass"><br><br>
<input type="submit" value="Log In" name="Submit">
<input type="reset">
</form>