繁体   English   中英

简单的PHP登录不起作用

[英]Simple PHP Login does not work

这是我的脚本:

session_start();
include "../inc/conn.php";
if ($_GET['login']=="yes") { 
 echo 'test2';
$username=$_POST('username');
$password=$_POST('password');
echo $username.' '.$password;
$userq=mysql_query("SELECT * FROM members WHERE username='$username' AND password='$password'") or die(mysql_error());
if (mysql_num_rows($userq)=="1") { $_SESSION['chkuser']="confirmed"; $_SESSION['username']=$user; }
else { echo 'Потребителското име и/или паролата са грешни. Моля опитайте отново.'; }
}
echo $user.' '.$pass;
if ($_SESSION['chkuser'] <> "confirmed") {
echo '<div align="center"><strong>Моля въведете име и парола</strong>:<br/><br/><br/>';
?>
<form name="form1" method="post" action="?login=yes">
  Потребител: <input type="text" name="username"  />
Парола: <input type="password" name="password" /><br/><br/>
    <p><input type="submit" name="Submit" value="Вход" /></p>
  </div>
</form>
<?
exit();
}

回显了测试2,但用户名和密码未通过POST发送-使用$ _POST后脚本中断。你们看到我的错误在哪里吗?

使用[],而不是()从$ _POST数组获取数据:

$username=$_POST['username'];
$password=$_POST['password'];

另外,我可能提到在mysql查询中使用用户输入之前,应先对其进行转义:

$username=mysql_escape_string($_POST['username']);
$password=mysql_escape_string($_POST['password']);

如果您不这样做,那么任何人都可以插入以下内容:

username=admin
password=blabbla' OR '1'='1

并将以管理员身份登录,而无需知道密码:)

这不应该:

$username=$_POST('username');
$password=$_POST('password');

$username=$_POST['username'];
$password=$_POST['password'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM