简单的PHP登录不工作
我对PHP非常陌生,我正在尝试构建一个带有登录页面的网页。我想我理解它,但我的登录页面不工作,即使它非常基本 这是我目前的文件结构: 这是idx(索引):简单的PHP登录不工作,php,login,xampp,Php,Login,Xampp,我对PHP非常陌生,我正在尝试构建一个带有登录页面的网页。我想我理解它,但我的登录页面不工作,即使它非常基本 这是我目前的文件结构: 这是idx(索引): 这是login.php模板: <?php $out = "<form method='POST' action='idx.php'> <p>Login:</p> <label>Username:</label><input type=
这是login.php模板:
<?php
$out = "<form method='POST' action='idx.php'>
<p>Login:</p>
<label>Username:</label><input type='text' name ='username' required />
<label>Password:</label><input type='password' name'password' required />
<input type='submit' value='submit' name=submit'/>
</form>";
echo $out;
确保在要获取或设置会话变量的每个页面上启动会话
session\u start()
它应该是这么简单,它扔了我一个循环相当长一段时间
您是否考虑过使用MVC框架?它们对保持所有的东西整洁和有序,以及提供一个有用的函数和类库都非常有帮助。CodeIgniter是一个非常好用的超轻量级框架。Laravel的参与度更高,更适合大型项目 更改此项:
<input type='password' name'password' required />
不要忘记在页面顶部添加session\u start()
。我将与您分享我的PHP登录页面设置示例。
它有3个页面,索引,管理,注销
php:创建一个询问用户名和密码的表单,一旦给出正确的用户名和密码(这里是admin,password),它将创建一个新的会话“login”。登录后,它将重定向到admin.php$validuser,以确保以前的登录是否正确
<?php
session_start();
$errorMsg = "";
$validUser = $_SESSION["login"] === true;
if (isset($_POST["sub"]))
{
$validUser = $_POST["username"] == "admin" && $_POST["password"] == "password";
if (!$validUser) $errorMsg = "Invalid username or password.";
else $_SESSION["login"] = true;
}
if ($validUser)
{
header("Location: /admin.php");
die();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Login</title>
</head>
<body>
<center>
<h1>Login</h1>
<table>
<form name="input" action="" method="post">
<tr>
<th>
<label for="username">Username</label>
</th>
<th>
<input type="text" value="" id="username" name="username" />
</th>
</tr>
<tr>
<th>
<label for="password">Password</label>
</th>
<th>
<input type="password" value="" id="password" name="password" />
</th>
</tr>
<tr>
<th></th>
<th>
<input type="submit" value="Login" name="sub" />
</th>
</tr>
</form>
</table>
</center>
</body>
</html>
登录
登录
用户名
暗语
php:检查会话“login”,如果设置了会话,那么它将继续进行,否则它将转到login.php
<?php
session_start();
if (!isset($_SESSION['login']))
{
header('LOCATION:login.php');
die();
}
?>
<html>
<head>
<title>Admin Page</title>
</head>
<body>
<center>
<h1>Succesfully logged in</h1>
<input type="button" value="Logout" onclick='window.open("/logout.php","_self")'/>
</center>
</body>
</html>
<?php
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name() , '', 0, '/');
session_regenerate_id(true);
header("Location: /index.php");
die();
?>
管理页面
成功登录
logout.php:清除会话、cookies并关闭它们,然后返回login.php
<?php
session_start();
if (!isset($_SESSION['login']))
{
header('LOCATION:login.php');
die();
}
?>
<html>
<head>
<title>Admin Page</title>
</head>
<body>
<center>
<h1>Succesfully logged in</h1>
<input type="button" value="Logout" onclick='window.open("/logout.php","_self")'/>
</center>
</body>
</html>
<?php
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name() , '', 0, '/');
session_regenerate_id(true);
header("Location: /index.php");
die();
?>
把它们放在同一个文件夹中,这样就行了。这是你的实际代码吗?如果你告诉我们出了什么问题,那会有帮助的。请告诉我们,如果你真的存在,结果会不好。纯文本密码会让你陷入更深的困境。我不认为这是造成你当前问题的原因,但如果满足正确的条件,idx.php似乎会包括它自己。这里有很多问题需要解决。这只是在本地主机上,我希望能添加一些解释。。。很多解释。。。对于此代码,请仅回答。
<?php
session_start();
if (!isset($_SESSION['login']))
{
header('LOCATION:login.php');
die();
}
?>
<html>
<head>
<title>Admin Page</title>
</head>
<body>
<center>
<h1>Succesfully logged in</h1>
<input type="button" value="Logout" onclick='window.open("/logout.php","_self")'/>
</center>
</body>
</html>
<?php
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name() , '', 0, '/');
session_regenerate_id(true);
header("Location: /index.php");
die();
?>