我在尝试插入("用户名"我用作示例)时遇到问题我的mysql数据库..无论如何,只要我更新网站,我就会得到"成功"消息我设置,如果它按预期工作,并在我的数据库中插入一个空行。但是,当它在文本框中输入内容时(在我获得"成功"消息后)并按下提交,它也会正常工作,它也会插入到数据库中。但我的问题是第一个空白插页不应该存在,我不知道如何解决那个atm:/
我也在网站顶部收到通知,说"未定义索引:用户名",我不知道我做错了什么:/
这是我的代码btw:
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "pw";
$dbname = "dbname";
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if($conn->connect_error) {
die("Connection Failed: " . $conn->connect_error);
}
$user = $_POST["username"];
$sql = "INSERT INTO account (username) VALUES ('$user')";
if($conn->query($sql) === true) {
echo "Success!";
} else {
echo "Error: " . $sql . "<br />" . $conn->error;
}
$conn->close();
?>
<form method="POST" action="">
<input type="text" name="username" placeholder="Username" /><br /><br />
<input type="submit" name="submit" value="Go" />
</form>
先生。 :)
答案 0 :(得分:4)
1)您容易受到sql injection attacks的攻击。享受你的服务器pwn3d。
2)您的代码无条件地运行,每次加载页面。因此,当用户首次点击页面时,您运行代码。由于尚未提交任何表单,因此$ _POST [&#39;用户名&#39;]未定义,您最终会在数据库中插入一个空字符串。
至少应该有像
这样的东西if ($_SERVER['REQUEST_METHOD'] == 'POST') {
... db code here ...
}
以便它仅在执行POST时运行。