php POST无法处理

时间:2011-11-17 21:27:08

标签: php mysql html insert

我正在创建一个表单,用户应该可以输入任何文本(用于更改网站上的文章),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服务器上尝试了完整的应用程序并且没有显示错误,但在我的托管服务器上,我在受密码保护的地图中使用该脚本。这可能是问题吗?无论如何,我要联系我的托管公司。

4 个答案:

答案 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()

后插入