首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >if语句php?

问if语句php?
EN

Stack Overflow用户
提问于 2011-08-18 21:39:44
回答 6查看 122关注 0票数 0

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

我正在工作的Ajax发送,我已经发送了一个值到PHP脚本,它解析的值,并存储在一个php变量的值。现在:

代码语言:javascript
复制
$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.When我删除了if语句并直接将数据放到我的数据库中,它正在工作。

我是新来的,请忍耐一下。我希望有人能指出我的错误是什么。

谢谢!

EN

回答 6

Stack Overflow用户

发布于 2011-08-18 21:50:56

亲爱的上帝啊!我不敢相信,到目前为止,没有一个答案指出了原始代码中庞大的SQL注入向量;老实说,为了数据库的安全性,if块没有像您最初预期的那样工作!

您必须清理、转义和清理来自用户的所有数据;如果做不到这一点,您的数据库将很容易受到SQL injection攻击。如果这对你来说是新的,那么我建议你阅读some articles,并可能投资a book on the subject。

PHP包含一个名为mysql_real_escape_string()的函数,它将为您整理值,您应该将您的SQL语句修改为:

代码语言:javascript
复制
$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')";

为了避免记住这样的事情,我建议您研究一下数据库抽象层,它将为您处理这一问题;尽管有很多其他包,如doctrine,但MDB2是一个流行的包。

票数 2
EN

Stack Overflow用户

发布于 2011-08-18 21:42:03

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

代码语言:javascript
复制
if($check == true){ 

或者更好的是,只要:

代码语言:javascript
复制
if ($check) {
票数 1
EN

Stack Overflow用户

发布于 2011-08-18 21:42:30

我认为您可能希望检查true,而不是'true' -您要查找的是碰巧拼写为true的文本字符串,而不是布尔值true/false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7108343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档