作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 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/
我是一名优秀的程序员,十分优秀!