嗨,我真的在编程生涯的开始。 我必须为我的学校项目编写一个小网站。 我确实在我的网站上实现了某种留言簿,并尝试保护从某些sql注入等发布到数据库中的变量。
主页上的输入表单guestbook.php:
< form action="post.php" method="post">
< strong>Name:< /strong><br/> < input type="text" name="name" /><br/>
< strong>Message:< /strong><br/> < textarea name="message" rows="5"
cols="25">< /textarea><br/>
< input type="submit" value="send">
</form>
我的帖子方法php:
< ?php
require_once 'config.php'; (db connect)
$fields = array("name", "message");
$isOkay = TRUE;
foreach ($fields as $field) {
if (empty($_POST[$field])) {
$isOkay = FALSE;
}
}
if ($isOkay) {
extract($_POST);
$now = time();
if (mysqli_query($db_link,"insert into comments (`name`,message,`timestamp` ) values ('{$name}','$message','{$now}')")) {
header("Location: guestbook.php");
} else {
echo "Can't connect to database.";
}
} else {
echo "One or more fields are empty.";
}
?>
一切正常,并发布到我的数据库,但如果我现在添加这样的东西到我的代码:
$safename = $_POST["name"];
$name = mysql_real_escape_string($safename)
$safemessage = $_POST["message"];
$message = mysql_real_escape_string($safemessage)
我尝试进入我的数据库的变量现在是空的... 可能是我某处的一个愚蠢的错误,但有人愿意在这里帮助我吗?
提前感谢:)
答案 0 :(得分:1)
我不知道是否还有其他错误,但mysql_real_escape_string
应为mysqli_real_escape_string
所以你的最后一个代码应该是这样的:
$safename = $_POST["name"];
$name = mysqli_real_escape_string($db_link, $safename)
$safemessage = $_POST["message"];
$message = mysqli_real_escape_string($db_link, $safemessage)
其他附注:
&lt;&lt;&lt;
< form
可以写成<form
,就像<br>
一样。
答案 1 :(得分:-1)
您可以尝试使用$ _REQUEST全局变量。仅当数据被“发布”时才填充$ _POST变量,并且仅在发送HTTP查询字符串时填充$ _GET。 $ _REQUEST由两种方法填充。