php和MySQL登录系统

时间:2013-12-06 17:21:07

标签: php html mysql

由于某种原因,当我点击登录时它不起作用给我一个错误,它是与表单相关的按钮点击事件。我有一个网址。 单击登录时,您可以登录但不起作用。 我使用这个级别的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>

7 个答案:

答案 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';

Everything is in here

答案 6 :(得分:1)

它正在我的服务器中修正线条 if(!empty($ _ POST ['user_name'])&amp;&amp;!empty($ _ POST ['user_password'])) 你忘了关闭条件“)”