Php 登录表单上没有输出
这是登录php脚本,我没有收到任何错误或回声,所以我不知道发生了什么。“*”是我审查的信息。如果您想查看live页面,请访问Php 登录表单上没有输出,php,mysql,Php,Mysql,这是登录php脚本,我没有收到任何错误或回声,所以我不知道发生了什么。“*”是我审查的信息。如果您想查看live页面,请访问 脚本中存在一些php语法错误 您在下面的行中缺少分号,请更新代码并打开“显示错误”,以查看是否存在其他错误 $username = $_POST['username']; $password = $_POST['password']; 唯一不会回显任何内容且不会给您错误的方法是如果用户名存在且密码不匹配,则它将通过: if($numrows != 0){ } 尝试放
脚本中存在一些php语法错误
您在下面的行中缺少分号,请更新代码并打开“显示错误”,以查看是否存在其他错误
$username = $_POST['username'];
$password = $_POST['password'];
唯一不会回显任何内容且不会给您错误的方法是如果用户名存在且密码不匹配,则它将通过:
if($numrows != 0){
}
尝试放置一个var_dump('test')在IF语句中编写>并查看它是否显示了某些内容
您也没有代码>在
$username = $_POST['username']
$password = $_POST['password']
将其更改为:
$username = $_POST['username'];
$password = $_POST['password'];
一些额外注意事项:
您可能需要一个else
环绕:die(“不要将用户名和/或密码字段留空”)代码>
不要使用mysql。从PHP5.5.0开始,它将被弃用,并将在将来被删除
您对MYSQL注入非常开放
编辑:
如果您填写用户名和密码,并且它们都不匹配,那么它也不会显示错误或回显,因为您的代码有一些语法和逻辑错误
1)您缺少代码>变量赋值时
$username = $_POST['username'];
$password = $_POST['password'];
2)在if()
语句中没有使用&&
,而是使用了两个$
if ($username == $dbusername && $password == $dbpassword) {
3)您在$\u会话中使用的是比较(=
),而不是作业(=
)
笔记
- 检查密码是否与数据库中查询本身的密码匹配(加密后)
- 根据您当前的逻辑,它建议您以纯文本形式存储密码。这是一个大禁忌
- 您对SQL注入非常开放
顺便说一句,我用用户名“test”和密码“testpw”设置了一个示例用户,如果这对任何人都有帮助的话。警告:您使用的是一个不推荐使用的数据库API。考虑使用或。您还为任何人提供了执行SQL注入的能力。了解mysql_*函数已弃用。考虑切换到或关注你的脚本,如果出现错误,你有几个错误消息,如果你没有任何动作,脚本很可能不会进入你的主要IF子句。尝试在if($username&&$password)
@Phate01执行此操作后添加一个echo'something'
,但没有任何结果。@carstorm:正如我所期待的,将您的if替换为if(!empty($username)&!empty($password))
,以检查它们是否为空。我甚至没有注意到这一点,这是OP犯下的一个非常奇怪的错误。我还没有增强代码,但知道sql注入。通过使用所需的html5属性,我确保它们不是空的。我将研究另一个框架,没有意识到它正在被淘汰。@carstorm这些要点有没有让你更进一步?你现在可能有什么错误吗?也请阅读hd他的回答,我正在使用PHP5.4.33。现在我正在试着让它工作,稍后我会做sha2和盐以及消毒。即使在修复了2个语法错误(添加“;”并将“$$”更改为“&&&”之后,仍然没有得到任何不同的输出。我现在正在查看MySQLi。@carstormvar\u dump('test')怎么样
还有其他一些问题吗?没什么,我想可能是php本身不起作用。编辑:这是因为我在网站的其他地方使用php,所有这些东西都起作用了。
$username = $_POST['username'];
$password = $_POST['password'];
if ($username == $dbusername && $password == $dbpassword) {
$_SESSION['username'] = $dbusername;