由于某种原因,当我点击登录时它不起作用给我一个错误,它是与表单相关的按钮点击事件。我有一个网址。 单击登录时,您可以登录但不起作用。 我使用这个级别的PHP非常新,所以任何帮助都会很精彩/
http://stuweb.cms.gre.ac.uk/~ob219/logsystem/
密码是密码 和用户发出哔声
索引代码
<?php
session_start();
$errorMessage = '';
if (!empty($_POST['user_name']) && !empty($_POST['user_password']){
include 'library/connect.php';
$user_name = $_POST['user_name'];
$user_password = $_POST['user_password'];
$sql = "SELECT user_id FROM Login WHERE user_name = '$user_name' AND user_password = '$user_password'";
$result = mysql_query($sql) or die('Query failed. ' . mysql_error());
$row = mysql_fetch_array($result);
if (mysql_num_rows($result) == 1) {
$_SESSION['user_logged_in'] = true;
$_SESSION['id'] = "$row[user_id]";
header("Location: user.php");
}
else {
$errorMessage = 'Sorry, wrong username / password';
}
include 'library/close.php';
}
?>
<html>
<head>
<title>login</title>
</head>
<body>
<?php
if ($errorMessage != '') {
?>
<p align="center"><strong><font color="998000"><?php echo $errorMessage; ?></font></strong></p>
<?php
}
?>
<p align="center"><b>Passwords and user names stored in database with personalised message</b></p>
<form name="formLogin" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table width="400" border="1" align="center" cellpadding="2" cellspacing="2">
<tr>
<td width="150">User name</td>
<td><input name="user_name" type="text" id="user_name"></td>
</tr>
<tr>
<td width="150">Password</td>
<td><input name="user_password" type="password" id="user_password"></td>
</tr>
<tr>
<td width="150"></td>
<td><input name="btnLogin" type="submit" id="btnLogin" value="Login"></td>
</tr>
</table>
</form>
</body>
</html>
答案 0 :(得分:3)
您要发布的字符串字面意思是:
<?php echo $_SERVER['PHP_SELF']; ?>
如果您只想发布到同一页面,则可以忽略表单中的action
元素。 (Is it a good practice to use an empty URL for a HTML form's action attribute? (action=""))
答案 1 :(得分:2)
您的PHP未经处理。它只是与HTML一起打印。既然你有 打开和关闭php语句,我的猜测是你可能将这个文件保存为index.html,并且没有将Apache设置为将PHP解析为PHP。
查看您的页面来源以进行确认。
尝试将文件另存为index.php。您可能还需要将其添加到同一文件夹中的.htaccess文件中:
DirectoryIndex index.php
答案 2 :(得分:2)
几乎没有更正:
首先,正如@Advocation所说,如果你想在同一页面发帖,请将行动元素留空。
if
声明中缺少括号。
改变这个:
if (!empty($_POST['user_name']) && !empty($_POST['user_password']){
要:
if ((!empty($_POST['user_name']) && !empty($_POST['user_password'])){
答案 3 :(得分:2)
您正在使用
http://stuweb.cms.gre.ac.uk/~ob219/logsystem/index.html
您需要将文件更改为(.php)
http://stuweb.cms.gre.ac.uk/~ob219/logsystem/index.php
也是的,你确实安装了apache! See here
答案 4 :(得分:2)
使用php isset()
函数检查变量是否已设置,并使用htmlspecialchars($_SERVER["PHP_SELF"])
来阻止$ _SERVER [“PHP_SELF”]利用。
除了防止sql注入外,你应该使用PDO或Mysqli,你可以使用session_id()
函数并绑定IP地址以防止会话劫持。
$ip = getenv ( "REMOTE_ADDR" );
答案 5 :(得分:1)
就像quasivivo所说,你的服务器没有处理你的php,我发布了一张图片来告诉你发生了什么。你确定你安装了apache吗?而不是ASP?
如您所见,您的服务器不会处理您的所有脚本!这是一个主要问题,请确保您没有任何密码变量,因为任何人都可以看到它们。例如:
$db_password = 'ilovelamp';
答案 6 :(得分:1)
它正在我的服务器中修正线条 if(!empty($ _ POST ['user_name'])&amp;&amp;!empty($ _ POST ['user_password'])) 你忘了关闭条件“)”