此脚本允许用户在数据库中存储单词:
submit.php 脚本:
<html>
<body>
<form action="welcome.php" method="post">
Sentance: <input type="text" name="name"><br>
<input type="submit">
</form>
</body>
</html>
welcome.php 脚本:
<html>
<body>
<?php
echo $_POST["word"];
mysql_connect("xxxx","xxxx","xxxx");
mysql_select_db("xxxx");
$word1 = $_POST['word'];
mysql_query("INSERT INTO words VALUES ('$word1');");
?>
<br>
</body>
</html>
问题在于,如果用户提交了包含撇号的单词,则不会将其存储在数据库中。
例如word:
hello'world
没有存储,因为它包含撇号..
如何解决此问题?
答案 0 :(得分:2)
答案 1 :(得分:2)
你的代码对sql注入是开放的。首先,我强烈建议您停止使用mysql_
系列函数,不推荐使用它们。如果必须,那么make以逃避用户输入。不过,我强烈建议您使用PDO
:
$dbh = new PDO('mysql:host=localhost,port=3306,username=user,password=pass', 'user', 'pass');
$stmt = $dbh->prepare("INSERT INTO words VALUES (:word)");
$stmt->bindParam(':word', $word);
$word = $_POST['word'];
$stmt->execute();