Php 将反斜杠双引号与双引号组合起来进行转义?(即""")
我有以下代码:Php 将反斜杠双引号与双引号组合起来进行转义?(即"""),php,mysql,regex,mysql-real-escape-string,Php,Mysql,Regex,Mysql Real Escape String,我有以下代码: <? $string="< input type=button value='Open' onclick='document.location.href=\"".format_URL("phpfolder",$sesion)."objects/construct.php?id_object=$id_object\"' >"; mysql_query( "insert into db (code) values ('$string')" ); ?&
<?
$string="< input type=button value='Open' onclick='document.location.href=\"".format_URL("phpfolder",$sesion)."objects/construct.php?id_object=$id_object\"' >";
mysql_query( "insert into db (code) values ('$string')" );
?>
应该是这样的:
$string=\"< input type=button value=\'Open\' onclick=\'document.location.href=\\\"\".format_URL(\"phpfolder\",$sesion).\"objects/construct.php?id_object=$id_object\\\"\' >\";
$string=\”\;
为什么mysql\u real\u escape\u string()无法识别它必须转义\\”
的第一个反斜杠才能将其转换为\\\”
这是PHP中的一个bug吗
我尝试过应用addslashes、html_entities、str_replace、preg_replace等函数。没有任何东西能像预期的那样工作,或者我用错了
方法是什么?不要使用mysql.*函数。只要使用准备好的语句,你就不会有这个问题。以下是PDO中的一个示例:
$stmt = $pdoObject->prepare('INSERT INTO MyTable (code) VALUES (:code)');
$stmt->bindParam(':code', $string, PDO::PARAM_STR);
if ($stmt->execute()) {
echo 'Success';
} else {
echo 'Failure';
}
就这么简单。更干净、更安全的代码
现在的主要问题是将整个html/js保存到表中。您的桌子将以非常快的速度变大。为什么不将基本ID或属性保存到表中&通过从表中检索来构建html
您应该只将
$session
和$id\u对象
保存到表中。使用这两个变量,您可以在之后构建html。反斜杠是在赋值给$string变量时转义双引号
<?php
$string = "< input type=button value='Open' onclick='document.location.href=\"".'url_output'."objects/construct.php?id_object=id_object\"' >";
echo $string;
我不明白
$string中的第一个反斜杠在哪里=\“
来自。这个引号不是字符串的一部分,它是PHP字符串周围的分隔符。我同意Barmar的观点:从您发布的代码中,我不明白为什么mysql\u real\u escape\u string
函数会添加反斜杠和双引号字符。基于第一个$string=“我的错误是,$字符串位于我正在处理的php代码编辑器项目的文本区域内。这就是我在这种情况下需要转义的原因。代码编辑器项目是为我们部门的开发人员提供的,因此他们不需要访问服务器来上传或下载代码脚本。这样我就可以强制执行安全问题并保存完整的代码版本。在封闭的环境中,所需的数据库数量没有问题。至于准备好的声明,我会研究一下。你有没有可以分享或参考的PHP示例?这是意料之中的事情。我还没有和PDO一起工作过,我会试着看看它的范围。
<?php
$string = "< input type=button value='Open' onclick='document.location.href=\"".'url_output'."objects/construct.php?id_object=id_object\"' >";
echo $string;
< input type=button value='Open' onclick='document.location.href="url_outputobjects/construct.php?id_object=id_object"' >
<?php
$string = "This is a \"string literal\"";
echo $string;
This is a "string literal"