Php stripslashes和mysql_escape_字符串未删除所有斜杠

Php stripslashes和mysql_escape_字符串未删除所有斜杠,php,javascript,mysql,Php,Javascript,Mysql,我对斜杠有意见。我无法让我的Javascript代码进行json_解码,因为我相信斜杠是入侵的 以下是我所拥有的: $str = stripslashes ($_POST['setImage']); $setImage = mysql_escape_string($str); if(json_decode($str) == NULL) { echo("not valid json!"); }else{ $imageUrls

我对斜杠有意见。我无法让我的Javascript代码进行json_解码,因为我相信斜杠是入侵的

以下是我所拥有的:

      $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[]" />
引号必须在输入中,否则将无法正常工作

谢谢你的帮助

更新时间:美国东部时间7:58 03/22

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

以下是全部声明:

$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_解码。 我只是把echo语句放进去,这样我就可以看到帖子后面传递的内容

在执行mysql\u escape\u字符串时,我确实尝试过删除斜杠,如下所示:

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

但是给出了同样的结果

简单使用regex并删除所有不需要的符号对您来说效率更高


继续读下去,我想好了,以防有人感兴趣

我去掉了mysql\u escape\u字符串,消除了斜杠。不过还是用了条纹斜线

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

以下是新代码:

      $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 />";
$setImage=stripslashes($\u POST['setImage']);
if(json_decode($setImage)==NULL)
{
echo(“无效的json!”);
}否则{
$imageUrls=json_decode($setImage);
}
$photos=mysql_escape_字符串($_POST[photos]);
$piclink=$imageUrls->{'thumbnail'};
$picurl=$imageUrls->{'original'};
$title=mysql_escape_字符串($_POST[title]);
$firstname=mysql\u escape\u字符串($\u POST[firstname]);
$lastname=mysql\u escape\u字符串($\u POST[lastname]);
$todaysdate=日期(“Y-m-d”);
mysql_query(“更新人员集标题=””“$title.”,人员_firstname=”“$firstname.”,
staff_lastname=“$lastname.”,
piclink='“$piclink.”,
picurl='“$picurl.”,
last_update='“$todaysdate.”“WHERE staff_id=$EID”)或die(mysql_error());
echo“员工编辑成功
”;
stripslashes
撤销
magic\u quotes
损坏(请仔细阅读!),但您正在使用
mysql\u escape\u 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 />";