if语句php?

时间:2011-08-18 13:39:44

标签: php mysql

我不知道为什么但这不起作用:

我正在进行Ajax发送,我已经向PHP脚本发送了一个值,该脚本解析值并将值存储在php变量中。 现在:

$id = $_GET['id'];
$url = $_GET['url'];
$check = $_GET['check'];
$filid = mysql_real_escape_string($id);
$filurl = mysql_real_escape_string($url);



if($check == 'true'){
    $insert  = "INSERT INTO tab (id,url) VALUES ('$filid','$filurl')";
    mysql_query($insert) or die(mysql_error());
}

我确认我的Ajax代码正在运行,我不确定php。当我删除if语句并直接将数据放入我的数据库时,它正在工作。

我很新,所以请容忍。 我希望有人可以指出我的错误。

谢谢!

6 个答案:

答案 0 :(得分:2)

亲爱的上帝!我无法相信到目前为止没有一个答案指出原始代码中的大量 SQL注入向量;说实话,对于数据库的安全性来说,if块不能按照你原来的意图工作更好!

必须进行sanatize,转义并清理来自用户的所有数据;如果不这样做,将使您的数据库对SQL injection攻击敞开大门。如果这对您来说是新手,那么我建议您阅读some articles并可能投资a book on the subject

PHP包含一个函数,它会为你调用值mysql_real_escape_string()的值,你应该修改你的SQL语句来读取:

$clean_id = mysql_real_escape_string($id);
$clean_url = mysql_real_escape_string($url);

$insert  = "INSERT INTO tab (id,url) VALUES ('$clean_id','$clean_url')";

为了避免记住这些事情,我建议您查看数据库抽象层,它们将为您处理; MDB2是一个受欢迎的软件包,尽管还有很多其他软件包,例如doctrine

答案 1 :(得分:1)

如果$ check是布尔值(或在比较中计算为布尔值):

if($check == true){ 

或更好,只是:

if ($check) {

答案 2 :(得分:1)

我想你可能想检查true,而不是'true' - 你正在寻找一串拼写为true的文本,而不是布尔值true / false。

答案 3 :(得分:0)

我们需要知道$ check包含哪些内容..请提供更多信息。 在一般中,它将起作用:

if (!empty($check)) {
    $insert  = "INSERT INTO tab (id,url) VALUES ('$id','$url')";
    mysql_query($insert) or die(mysql_error());
}

如果 $ check 是布尔值,请执行以下操作:

if ( $check ) {
    $insert  = "INSERT INTO tab (id,url) VALUES ('$id','$url')";
    mysql_query($insert) or die(mysql_error());
}

和perheps它的工作原理:

if ( $check == TRUE ) {

答案 4 :(得分:0)

尝试将if语句更改为:

if ($check) {

您要做的是将其评估为布尔值,因此您需要将其视为一个布尔值。这里的关键点是$check可能具有的值,因为它来自客户端 - 最好的做法是让客户端使用1表示true,0表示false。 / p>

你可能值得一读this。请注意,几乎任何字符串值(您将从$_GET$_POST获得的内容)将评估为true - 您可以轻松地将此处捕获的位置'false'评估为true

答案 5 :(得分:0)

您从浏览器获得的任何内容都是iffy。有讨厌的人,

清理输入。