Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 POST can';t手柄<;img src=”等;http://_Php_Mysql_Html_Insert - Fatal编程技术网

php POST can';t手柄<;img src=”等;http://

php POST can';t手柄<;img src=”等;http://,php,mysql,html,insert,Php,Mysql,Html,Insert,我正在创建一个表单,用户应该能够输入任何文本(用于更改网站上的文章)、Html、JavaScript或任何允许输入和发布的内容,到目前为止,一切正常。但今天我突然犯了一个奇怪的错误 当我尝试使用Html将文本保存到MySQL数据库时,如下所示: <a href="http://www.google.com/">google</a> <img src="http://www.google.com/" /> 为什么我会在帖子中出现一个禁止的错误,这是怎么回事

我正在创建一个表单,用户应该能够输入任何文本(用于更改网站上的文章)、Html、JavaScript或任何允许输入和发布的内容,到目前为止,一切正常。但今天我突然犯了一个奇怪的错误

当我尝试使用Html将文本保存到MySQL数据库时,如下所示:

<a href="http://www.google.com/">google</a>
<img src="http://www.google.com/" />
为什么我会在帖子中出现一个禁止的错误,这是怎么回事

我正在使用的代码:

if($_SERVER['REQUEST_METHOD']=="POST" && !empty($_POST['save'])){
    $text = mysql_real_escape_string($_POST['textarea']);
    $title = mysql_real_escape_string($_POST['title']);
    $query = "INSERT INTO articles (text, title) VALUES ('".$text."','".$title."')";
当我删除MySQL查询时,仍然会出现错误,因此它与数据库无关。PHP安全模式开启,这会有什么不同吗

如何解决这个问题

编辑:在我的xampp服务器上尝试了完整的应用程序,但没有显示错误,但在我的托管服务器上,我在受密码保护的映射中使用了该脚本。这可能是问题所在吗?无论如何,我要联系我的主机公司。

听起来有点像,打开了,处于最具攻击性的模式,它认为你在试图入侵该网站。我之所以说它听起来有点像,是因为通常没有人应该将它配置为检查POST数据,因为这会导致太多的误报。但是检查错误日志,因为如果是这样的话,它可能会列在那里。如果是这样的话,你需要在主机设置中关闭它,或者让你的主机去做


还可以尝试一个简单的脚本:
查看数据是否到达PHP。

如果您希望使用以下脚本

base64encode()

<a href=www.google.com>Google</a>
它应该可以解决您的问题。

试试:

if($_POST && !empty($_POST['save'])){
$text = mysql_real_escape_string(htmlentities($_POST['textarea']));
$title = mysql_real_escape_string(htmlentities($_POST['title']));

谢谢,我尝试了var_转储,并删除了所有其他php代码。仍然会得到相同的错误。我应该联系我的托管公司。或者先在我的家庭服务器上试试。是的,这是modsecurity;(您可能不应该像这样损坏原始数据来解决这个非常重要的问题(或者永远都不应该)。您要
base64encode()吗
在应用程序的剩余生命周期中,所有查询参数都可以使用,这样你就可以在
的WHERE
中执行简单的
操作,比如
?此外,OP注意到
当我删除MySQL查询时,仍然会出现错误,因此它与数据库无关
。这是一个有趣的想法,但实际上非常糟糕。我知道我已经失败了在这里投票选出了答案,但我完全搞不懂这一点。再一次,破坏或更改原始数据只是一个糟糕的解决方案。
http://
?如果该字段只包含img标记,则可能是一个不错的选择,但它确实包含更多的html。出现错误的原因是“”。删除它,它应该可以正常工作,它的编码问题不是sql错误。它不是破坏或更改原始数据,而是预测用户输入。如果用户使用“”那么?Jean,想象一下,数据是一个字符串,而不是HTML,类似于
引号是“必需的”有时
,然后呢?或者,如OP所说,大量的HTML呢?此外,有时需要引号来消除HTML中的歧义,例如:
…是
class=“myclass selected”
还是
class=“myclass”selected
echo "http://".$row_TabelName['RowName'];
if($_POST && !empty($_POST['save'])){
$text = mysql_real_escape_string(htmlentities($_POST['textarea']));
$title = mysql_real_escape_string(htmlentities($_POST['title']));