php - stripslashes 和 mysql_escape_string 没有删除所有斜杠

标签 php javascript mysql

我在使用 stripslashes 时遇到问题。我无法将我的 Javascript 代码获取到 json_decode,因为我认为斜线是侵入性的。

这是我所拥有的:

      $str = stripslashes ($_POST['setImage']); 
  $setImage = mysql_escape_string($str);
  if(json_decode($str) == NULL)
    {
        echo("not valid json!");

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

    }

从这里获取信息:

<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[]" />

这是我打印时输出的内容

{\"photo_id\": \"2\", \"original\": \"content/employees/1/1363556600bsmiles.jpg\", \"thumbnail\": \"content/employees/thumbs/1/thumb_1363556600bsmiles.jpg\"}

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

感谢您的帮助。

更新于美国东部时间 03 月 22 日 7:58

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

声明全文如下:

$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 语句放在里面,这样我就可以看到在帖子之后传递了什么。

我确实在像这样执行 mysql_escape_string 时尝试去除斜线:

$setImage = mysql_escape_string(stripslashes ($_POST['setImage']));

但是给出了同样的结果。

最佳答案

我想出了这个以防有人感兴趣。

我摆脱了 mysql_escape_string 并消除了斜杠。仍然使用带状斜线。

我还删除了解码区的打印语句。现在一切正常,它将字符串转移到数据库中它应该在的位置。

这是新代码:

      $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 />";

关于php - stripslashes 和 mysql_escape_string 没有删除所有斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579955/

相关文章:

javascript - Rubaxa-Sortable 无法在 'matches' : 'Element' is not a valid selector 上执行 '>*'

javascript - 提交表单时旋转器 angularjs

php、MySql选取当年、月份范围内的记录

mysql - 迷你世界作为关系数据库中的表?

php - Controller 路由在 silverstripe 3.1 中无法正常工作

php - 在laravel中使用 "store function"中的外键将数据存储到多个表

php - Nginx 作为长轮询时的反向代理

php - 如何将数据从 cron 传递到 Controller laravel php

javascript - 在输入字段 AngularJS 中添加 Required

php - 如何输入表 $_POST[name$i] 变量名作为变量