我正在创建一个表单,用户应该可以输入任何文本(用于更改网站上的文章),Html,JavaScript或字面上允许输入和发布任何内容,到目前为止一切正常。但是今天我突然发现了这个奇怪的错误。
当我尝试将带有Html的文本保存到MySQL数据库时,如下所示:
<a href="http://www.google.com/">google</a>
什么都不会出错,但是当我这样尝试时:
<img src="http://www.google.com/" />
页面未加载(禁止错误)且数据库不包含任何应包含的文本(Html)。
相反,该页面显示以下错误:
禁止
您无权访问此文档。
当我尝试发布以下数据时,会出现同样的问题:
src="http:
当帖子包含特定文本时,为什么会出现禁止错误,这里有什么问题?
我正在使用的代码:
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服务器上尝试了完整的应用程序并且没有显示错误,但在我的托管服务器上,我在受密码保护的地图中使用该脚本。这可能是问题吗?无论如何,我要联系我的托管公司。
答案 0 :(得分:4)
听起来有点像mod_security,打开并处于最具侵略性的模式,它认为你正试图破解该网站。我之所以这么说只是因为 bit 就是因为没有人应该通常配置它来检查POST数据,因为这会导致太多的误报。但检查错误日志,因为它可能会在那里列出。如果是这样,您需要在托管设置中将其关闭,或者让主机唠叨来执行此操作。
还要尝试一个简单的最小脚本:<?php var_dump($GLOBALS); ?>
来查看数据是否完全达到PHP。
答案 1 :(得分:0)
尝试:
if($_POST && !empty($_POST['save'])){
$text = mysql_real_escape_string(htmlentities($_POST['textarea']));
$title = mysql_real_escape_string(htmlentities($_POST['title']));
答案 2 :(得分:-1)
将其发送到您的数据库
<a href=www.google.com>Google</a>
或
从db
调用时echo "http://".$row_TabelName['RowName'];
它应该可以解决您的问题。
答案 3 :(得分:-2)
如果您想使用以下
base64encode()
并在阅读base64decode()