【发布时间】:2017-03-24 14:22:29
【问题描述】:
我的网站上有这个脚本:
<?php
$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);
if($db_found) {
$SQL = "INSERT INTO users (user, address)
VALUES('".$_GET['username']."','".$_GET['password']."')";
$result = mysql_query($SQL);
mysql_close($db_handle);
print "Records added to the database";
}
else {
print "Database NOT found";
mysql_close($db_handle);
}
?>
然后我在浏览器中打开这个网址:
http://ringkapps.altervista.org/addToDatabase.php?user=ringk&address=test
但不是在表中插入“ringk”和“test”,而是插入:
不明白为什么,任何帮助将不胜感激。
【问题讨论】:
-
你能在插入前做 var_dump($_REQUEST)、var_dump($_GET) 和 var_dump($_POST) 吗?并发布结果
-
user!=username,并且 GET 中没有密码(也不应该是密码,使用 POST!) - 你应该散列你的密码!! -
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?了解prepared statements,并使用PDO 或MySQLi - this article 可以帮助您决定哪个。 -
不要以纯文本形式存储您的密码!这一点都不安全! PHP 有内置函数,您应该使用这些函数来处理密码的存储,请参阅更安全的
password_hash()函数! -
您的
$_GET索引键是user和address而不是username和password