我正在尝试创建一个登录表单,但它无效。
这是login.php文件的代码
<?php
session_start();
if(isset($_SESSION['user'])) {
header('location: index.php');
}
?>
<html>
<head>
<title>Basic CMS - Login Area</title>
</head>
<body>
<form action="dologin.php" method="post">
<table>
<tr>
<td><span>Username:</span></td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td><span>Password:</span></td>
<td><input type="password" name="password" /></td>
</tr>
<?php
if (isset($message)) {
echo "<tr><td colspan='2'>" . $message . "</td></tr>";
}
?>
<tr>
<td colspan="2" align='right'><input type="submit" name="login"
value="login" /></td>
</tr>
</table>
</form>
</body>
</html>
这是dologin.php文件的代码
<?php
include('includes/functions.php');
session_start();
if (isset($_POST['login'])) {
if (isset($_POST['username']) {
if (isset($_POST['password'])) {
$username = $_POST['username'];
$query = mysql_query("SELECT * FROM users WHERE Username = '$username'") or die(mysql_error());
$user = mysql_fetch_array($query);
if (md5($_POST['password']) == $user['Password'] {
$message = "Login succesful";
$_SESSION['user'] = $user['Username'];
header('location: index.php');
}
else {
$message = "Please check your login details";
include('login.php');
}
}
else {
$message = "Please check your password!";
include('login.php');
}
}
else {
$message = "Please check your username!";
include('login.php');
}
}
else {
$message = "Please check that you filled out the login form!";
include('login.php');
}
?>
当我在login.php上提交表单时,它会重定向到dologin.php,但是没有任何内容显示,没有错误或表单本身。只是一个空白页面,我在表单中填写的内容并不重要。
请提供帮助。
答案 0 :(得分:3)
嗯,你没有在这一行上正确地关闭你的括号:
if (isset($_POST['username']) {
将来,请在此处发布问题之前检查您的错误日志。或者更好的是,将error_reporting(E_ALL);
置于所有脚本的顶部,直到您对他们正常工作感到满意为止。
只是重申@Quentin的评论 - 你绝对不应该再使用旧的mysql
命令了,并且将用户提供的数据直接放入数据库查询中确实是在寻找麻烦。
答案 1 :(得分:1)
你需要关闭php标签或回复它。这是一个例子:
<?php
if (isset($message)) {
echo '<tr><td colspan="2">'. $message .'</td></tr>';
}
?>
答案 2 :(得分:1)
你在这里也有错误:
if (md5($_POST['password']) == $user['Password'] {
你错过了一个结束括号。它应该是这样的:
if (md5($_POST['password']) == $user['Password']) {