Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保存<;脚本></脚本>;用php在mysql数据库中的应用_Php_Mysql_Database - Fatal编程技术网

保存<;脚本></脚本>;用php在mysql数据库中的应用

保存<;脚本></脚本>;用php在mysql数据库中的应用,php,mysql,database,Php,Mysql,Database,我有一个cms,我正在为一个客户工作,他想添加一个代码文本框,这样他就可以一页一页地粘贴页面的特殊代码。因此,我需要能够为用户提供一种将javascript标记输入到他们正在编辑的页面中的方法。加载该页面时,java代码将显示并运行 例如,Facebook代码——它将被粘贴到这个代码文本区域并保存在mysql数据库中 注意-该站点仍在使用mysql\u查询,尚未转换,客户已被告知,但他们对更新不感兴趣,因此需要在mysql\u查询中完成示例 <script type="text/java

我有一个cms,我正在为一个客户工作,他想添加一个代码文本框,这样他就可以一页一页地粘贴页面的特殊代码。因此,我需要能够为用户提供一种将javascript标记输入到他们正在编辑的页面中的方法。加载该页面时,java代码将显示并运行

例如,Facebook代码——它将被粘贴到这个代码文本区域并保存在mysql数据库中

注意-该站点仍在使用mysql\u查询,尚未转换,客户已被告知,但他们对更新不感兴趣,因此需要在mysql\u查询中完成示例

 <script type="text/javascript">(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
    fjs.parentNode.insertBefore(js, fjs);
 }(document, 'script', 'facebook-jssdk'));</script>
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/all.js#xfbml=1”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
如何在不破坏javascript的情况下安全地将其保存到数据库中


谢谢

如果您使用
mysql\u real\u escape\u string
您应该能够转义任何会干扰查询的字符

$jsData = $_POST['jsData'];
"Insert into yourTable (someColumn) VAlUES('" . mysql_real_escape_string($jsData) . "')";

在与@ BASIC聊了一会之后,我将向大家指出,我强烈建议您考虑切换到这两个类,或者因为这两个类将为您提供更安全的查询数据库的方式,甚至可能会有更快的方式来执行。

不要使用<代码> MySQL LIALL RESUPEEL字符串 这是朝着正确方向迈出的一步,但事实并非如此。你需要使用

例如

$stmt=$dbh->prepare(“插入到代码段(url,代码段)值(:url,:代码段)”);
$stmt->bindParam(':url',$url);
$stmt->bindParam(':snippet',$snippet);
//插入一行
$url='/path/to/page';
$snippet=“/*您的Javascript位于此处*/”;
//或
$snippet=$_请求['snippet'];
$stmt->execute();

可能重复:“加载该页面时,java代码将显示并运行”。这样做(即重新显示HTML、CSS或JavaScript而不转义)意味着XSS漏洞。你应该非常小心。如果
$jsData
1),你就错过了单引号;删除表格yourTable--
你会让他们破坏Db@Basic谢谢,我已经更新了。我想这就是唐沃泰特被杀的原因。虽然我仍然认为
mysql\u real\u escape\u string
是不够的:)@Basic我100%同意你的观点,但对我来说,试图向用户解释为什么/如何使用mysqli等都是浪费时间。我觉得如果用户想学习,他们会在自己的时间学习。在我和你之间,我完全同意mysql\u real\u escape\u string不是一个好办法。
$stmt = $dbh->prepare("INSERT INTO snippets (url, snippet) VALUES (:url, :snippet)");
$stmt->bindParam(':url', $url);
$stmt->bindParam(':snippet', $snippet);

// insert one row
$url = '/path/to/page';

$snippet = "<script type=\"text/javascript\">/*Your Javascript goes here*/</script>";
// OR
$snippet = $_REQUEST['Snippet'];

$stmt->execute();