这是我的脚本:
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();
}
Run Code Online (Sandbox Code Playgroud)
测试2被回显,但用户名和密码不是通过POST发送的 - 在使用$ _POST后脚本中断了.你们看到我的错误在哪里?
使用[],而不是()从$ _POST数组中获取数据:
$username=$_POST['username'];
$password=$_POST['password'];
Run Code Online (Sandbox Code Playgroud)
另外,我可能会提到在mysql查询中使用它之前应该转义用户输入:
$username=mysql_escape_string($_POST['username']);
$password=mysql_escape_string($_POST['password']);
Run Code Online (Sandbox Code Playgroud)
如果你不这样做,任何人都可以插入这样的东西:
username=admin
password=blabbla' OR '1'='1
Run Code Online (Sandbox Code Playgroud)
并将以管理员身份登录而不知道密码:)