首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stripslashes和mysql_escape_string没有删除所有的斜杠

stripslashes和mysql_escape_string没有删除所有的斜杠
EN

Stack Overflow用户
提问于 2013-03-23 05:14:42
回答 2查看 1K关注 0票数 1

我对斜杠有点问题。我无法将我的Javascript代码转到json_decode,因为我认为斜杠是侵入性的。

这就是我所拥有的:

代码语言:javascript
复制
      $str = stripslashes ($_POST['setImage']); 
  $setImage = mysql_escape_string($str);
  if(json_decode($str) == NULL)
    {
        echo("not valid json!");

    }else{
        $imageUrls = json_decode($setImage);

    }

从这里抓取信息:

代码语言:javascript
复制
<img src="<?php echo $photo['picurl']; ?>" onclick='javascript: setCoverForSet(
                {"photo_id": "<?php echo $photo['photo_id']; ?>", 
                 "original": "<?php echo $photo['piclink']; ?>", 
                 "thumbnail": "<?php echo $photo['picurl']; ?>"});'/>

                <input type="text" value='{"photo_id": <?php echo $photo['photo_id']; ?>, "original": <?php echo $photo['piclink']; ?>, "thumbnail": <?php echo $photo['picurl']; ?>}' name="photos[]" />

下面是我打印时输出的内容

代码语言:javascript
复制
{\"photo_id\": \"2\", \"original\": \"content/employees/1/1363556600bsmiles.jpg\", \"thumbnail\": \"content/employees/thumbs/1/thumb_1363556600bsmiles.jpg\"}

引号必须在输入中,否则将无法正常工作。

谢谢你的帮助。

更新时间7:58东部标准时间03/22

我最终会将其发送到数据库中的一个表中。

下面是完整的语句:

代码语言:javascript
复制
$str = stripslashes ($_POST['setImage']); 
  $setImage = mysql_escape_string($str);
  if(json_decode($str) == NULL)
    {
        echo("not valid json!");

    }else{
        $imageUrls = json_decode($setImage);

    }

  $photos = mysql_escape_string($_POST[photos]);
  $piclink = print $imageUrls->{'thumbnail'};
  $piclurl = print $imageUrls->{'original'};
  $title = mysql_escape_string($_POST[title]);
  $firstname = mysql_escape_string($_POST[firstname]);
  $lastname = mysql_escape_string($_POST[lastname]);
  $todaysdate = date("Y-m-d");


  mysql_query("UPDATE staff SET title = '".$title."', staff_firstname = '".$firstname."', 
                           staff_lastname = '".$lastname."', 
                           piclink = '".$piclink."', 
                           picurl = '".$picurl."', 
                           last_update = '".$todaysdate."' WHERE staff_id = $EID") or die(mysql_error());

我唯一能想到的就是额外的斜杠干扰了json_decode。我只放入echo语句,这样我就可以看到在post之后传递了什么。

当我像这样做mysql_escape_string的时候,我确实尝试过去掉斜杠:

代码语言:javascript
复制
$setImage = mysql_escape_string(stripslashes ($_POST['setImage']));

但得到的结果是一样的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-23 22:22:21

我搞清楚了,以防有人感兴趣。

我去掉了mysql_escape_string,去掉了斜杠。但仍然使用了条形斜杠。

我还从解码区删除了print语句。现在一切都正常了,它将字符串返回到数据库中它应该在的位置。

下面是新的代码:

代码语言:javascript
复制
      $setImage = stripslashes ($_POST['setImage']); 

  if(json_decode($setImage) == NULL)
    {
        echo("not valid json!");

    }else{
        $imageUrls = json_decode($setImage);

    }

  $photos = mysql_escape_string($_POST[photos]);
  $piclink = $imageUrls->{'thumbnail'};

  $picurl = $imageUrls->{'original'};

  $title = mysql_escape_string($_POST[title]);
  $firstname = mysql_escape_string($_POST[firstname]);
  $lastname = mysql_escape_string($_POST[lastname]);
  $todaysdate = date("Y-m-d");


  mysql_query("UPDATE staff SET title = '".$title."', staff_firstname = '".$firstname."', 
                           staff_lastname = '".$lastname."', 
                           piclink = '".$piclink."', 
                           picurl = '".$picurl."', 
                           last_update = '".$todaysdate."' WHERE staff_id = $EID") or die(mysql_error());


     echo "<b><font color='#999999'> Staff edit succeeded</font></b><br />";
票数 0
EN

Stack Overflow用户

发布于 2013-03-23 05:18:22

简单地使用正则表达式并删除所有不需要的符号对你来说更有效,

http://php.net/manual/en/function.preg-match.php上阅读

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

https://stackoverflow.com/questions/15579955

复制
相关文章

相似问题

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