我是编码的新手,并且为我的登录功能(使用数据库)使用了一些模板和教程,效果很好。我几乎为注册功能使用了相同的代码。但这是行不通的。在这种情况下,安全性并不重要,请忽略它。
该按钮似乎未提交任何内容。也没有错误或出现任何东西。 login.php已包含在源代码中(未包含在下面的代码中)
应如何工作:
登录(工作):输入电子邮件和密码时,系统检查是否在数据库(用户)中保存了相同的组合(电子邮件和密码),如果数据正确,则将我重定向到下一个站点(不安全,我知道)。否则,它会显示一条错误消息。
注册(不工作):输入电子邮件和密码时,系统检查数据库中是否存在相同的电子邮件。如果存在,则会显示一条消息。否则,电子邮件和密码将保存在数据库中。
<?php
$link = mysqli_connect("localhost", "root");
if (!$link)
{
die("Connection not possible: " . mysqli_error());
}
$datenbank = mysqli_select_db("dbname", $link);
if (!$datenbank)
{
echo "Cannot use database: " . mysqli_error();
mysqli_close($link);
exit;
}
if (!empty($_POST["login"]))
{
$_loginEmail = mysqli_real_escape_string($link, $_POST["uname"]);
$_loginPasswort = mysqli_real_escape_string($link, $_POST["psw"]);
$_sql = "SELECT * FROM user WHERE
email='$_loginEmail' AND
passwort='$_loginPasswort'
LIMIT 1";
$_res = mysqli_query($link, $_sql);
$_counter = @mysqli_num_rows($_res);
if ($_counter> 0)
{
echo "Logged in";
header("Location: xxxxxxx.php");
}
else
{
echo "Wrong login<br>";
}
}
if (!empty($_POST["register"]))
{
$_registerEmail = mysqli_real_escape_string($link, $_POST["email"]);
$_registerPasswort = mysqli_real_escape_string($link, $_POST["psw1"]);
$_sql = "SELECT * FROM user WHERE
email='$_registerEmail'
LIMIT 1";
$_res = mysqli_query($link, $_sql);
$_anzahl = @mysql_num_rows($_res);
if ($_coujnter> 0)
{
echo "email exists";
}
else
{
$_sql = "INSERT INTO user (email, passwort) VALUES('$_registerEmail', '$_registerPasswort')";
$_res = mysqli_query($link, $_sql);
}
}
mysqli_close($link);
答案 0 :(得分:1)
您在注册时遇到的问题是缺乏一致性
例如,您首先说;
$link = mysql_connect("localhost", "root");
然后对注册进行插入查询;
$_res = mysqli_query($_sql, $link);
除了后者具有错误方式的参数(链接然后是sql)外,您还使用2种单独的方法尝试完成相同的工作,mysqli函数无法与mysql函数配合使用,请坚持使用一个或其他,并按照您的问题的评论所述;
使用mysqli函数,因为这些函数更安全并允许准备语句
主要原因是自(我认为)PHP v5.5 mysql函数已弃用,并已在PHP v7中完全删除
此question and its answers将帮助您提高查询的安全性
NB ;以下内容可以在php.net mysql_connect页面上找到,该页面通过有用的链接解释了我在上面所说的内容;
警告 此扩展在PHP 5.5.0中已弃用,在PHP 7.0.0中已删除。而是应使用MySQLi或PDO_MySQL扩展名。另请参见MySQL:选择API指南和related FAQ了解更多信息。此功能的替代方法包括:
mysqli_connect()
PDO::__construct()