***问题已得到解答。这是解决方案:使用PHP进行登录时遇到问题需要输入
好的,所以我需要解决一些事情之前,回答问题。首先,数据库意味着有许多安全缺陷。这是一个安全类,我试图故意破解它。然后,我入侵后,我应该阻止自己的攻击。
我想清楚的第二件事是,这是一个本地数据库,除了我自己,同学和老师以外,任何人都不会使用它。
现在回答:我做错的第一件事是代码应该从本地主机网页登录。我试图从login.php文件登录。
第二件事,是我混合了我的mysql *和mysqli *方法。代码中不能有多个版本的相同方法。
感谢所有发布的人和快速回复。
该问题的简要说明: 我一直在编码一个学校项目的数据库。根据教师的评论,我已经正确设置了学校数据库。我拥有的代码应该是用户输入的内容,请使用“已注册”的学生列表对其进行检查,并将学生ID和密码与已存在的列表进行比较。 检查完成后,代码将根据正在注册的学生开始会话。如果学生没有注册,它会再次将他们重定向到登录页面。
我遇到的麻烦是代码根本无法工作。我收到一个错误,说我的login.php文件的第35行有问题。这里是我的代码:
<?php
//Connect to DB
$con=mysql_connect("localhost","root","cravenreach","univ");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{
echo "Succeed to connect to MySQL. ";
}
//Session setup
session_start();
if(isset($_POST['sid']) && isset($_POST['password']))
{
$checklogin = mysql_query($con, "SELECT * FROM students WHERE sid=".$_POST['sid']." AND password=".$_POST['password']);
echo $count1 = mysql_num_rows($checklogin);
if($count1==1)
{
// auth okay, setup session
$_SESSION['sid'] = $_POST['sid'];
// redirect to required page
header("Location: main.php");
}
else {
// didn't auth go back to login
header("Location: login.php");
}
}
else {
// username and password not given so go back to login
//header("Location: login.php");
//This code is broken, causes a redirect loop.
echo "failure to start";
//header("location: .php");
}
?>
这里是index.php的代码:
<html>
<body>
<form action="login.php" method="post">
<p><label>Student ID: <input type="text" name="sid"></label></p>
<p><label> Password: <input type="password" name="password"></label></p>
<input type="submit">
<input type="reset" value="Clear">
</form>
</body>
</html>
我收到的错误是这样的:“成功连接到MySQL失败的开始。” 我知道代码并没有将登录评估为true,而是直接跳到最后一条else语句。我只是不明白为什么。
回顾:我的代码实际上不会接受正确的学生输入(或对此不正确),并且不允许用户登录。它只是抛出一个错误。我的问题是:我的代码有什么问题?我的查询是错误的,还是执行会话?
你可以在你的login.php代码中尝试'var_dump($ _ POST)'吗?它会告诉你你的领域是否成功发送。 – andrewsi
第一:你的学校项目是非常错误的,并有非常大的安全“漏洞”。最原始的安全事物在这里被打破了。即使我可以在10秒内接管你的服务器。你的教授/老师应该真正开展一些开发课程! – Sliq
首先,你将'mysql_'与'mysqli_'函数混合在一起,这样会阻碍事物的发展。 –