<?php
session_start();
include("connection.php");
if (mysqli_connect_error()) {
die("Could not connect to database");
if ($_POST['submit'] == "Login") {
$query = "SELECT * FROM EmployeeTable WHERE name='"
. mysqli_real_escape_string($link, $_POST['name'])
. "'AND password='"
. md5(md5($_POST['name']) . $_POST['password'])
. "'LIMIT 1";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result);
if ($row) {
$_SESSION['id'] = $row['id'];
header("Location: http://www.ccm.net/forum/");
} else {
$error = "We could not find a user with that email and password. Please try again.";
}
}
?>
我上面的代码只是为了登录用户。我有一个用户名和密码的表。我不想创建一个注册按钮,只是一个登录按钮,因为密码将是他们的'id'本身。我能够连接到db。
请帮助我,因为登录后我被带到一个空白页面。
答案 0 :(得分:1)
首先关闭所有:您使用此代码容易受到SQL注入攻击。请使用参数化查询,这样您就不会忘记转义在查询中使用的值。
$mysqli = new Mysqli($host, $username, $password, $database);
$mysqli->prepare('SELECT * FROM EmployeeTable WHERE name = ? AND password = ? LIMIT 1');
$mysqli->bind_param('ss', $name, $password);
$mysqli->execute();
$result = $mysqli->fetch_array();
您也不应该使用md5
进行密码哈希。使用内置的password_*
函数。
password_hash
可用于散列密码,如下所示:
$hash = password_hash($password, PASSWORD_DEFAULT);
这也适用于所谓的salt来加强对字典攻击的哈希。
如果要验证密码,可以使用password_verify
来验证存储哈希的密码,如下所示:
$is_correct = password_verify($password, $hash);
使用这些方法你不太可能弄乱任何东西。
您问题的直接答案可以是:if ($_POST['submit'] == "Login")
或if($row)
。我会使用count()
检查找到的结果数量:if(count($row) > 0)
。
答案 1 :(得分:0)
在没有看到HTML的其余部分的猜测中,它可能不满足if $ _POST [&#34;提交&#34;]声明:
if ($_POST['submit'] == "Login") {
并且只是结束脚本,因为没有其他选项。也许检查你的表单是POST,按钮名称实际上是&#34;提交&#34;它的价值是&#34;登录&#34;