SQL更新/插入的POST数据导致403 Forbidden错误

时间:2013-08-20 20:39:20

标签: php sql

我将文本输入框或textarea放在这样的表单上:

?>
<form name="whateverName" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<?php
echo "<input type='text' name='l1' size='75' value='". $l1 ."'><input type='submit' name='chls' value='Update'></form>";

这样我就可以在单个php文件中的head / html部分之前处理post变量。在该部分中,我连接到sql数据库并使用insert或update命令。

$dbuser="";
$dbpass="";
$dbname="";
$chandle = mysql_connect("localhost", $dbuser, $dbpass) or die("Connection Failure to Database");
mysql_select_db($dbname, $chandle) or die ($dbname . " Database not found. " . $dbuser);

如果用户输入的内容如&lt; &GT; '; “`,进入输入或textarea并单击更新/插入按钮,它会抛出一个

403禁止页面显示: 您无权访问此服务器上的edit.php。 此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误。

edit.php恰好是此代码所在的文件。

我从一家托管公司搬到另一家托管公司,这仍然是同一个问题,我不明白我做错了什么。

我可以保留POST变量:

$sCv1 = $_POST[l1];

或者我可以将它们包装在mysql_real_escape_string:

$sCv1 = mysql_real_escape_string($_POST[l1]);

或者我可以将它们包装在htmlspecialchars中:

$sCv1 = htmlspecialchars($_POST[l1], ENT_QUOTES);

并且我尝试的任何东西似乎都阻止了403 Forbidden的显示。实际的插入/更新永远不会发生。托管公司告诉我他们无法帮助我,因为它与他们没有任何关系。

此外,我在其他托管公司的另一个客户端遇到类似的问题。我没有得到403 Forbidden,但用户似乎无法在我编码的文本框中插入类似的字符。上面列出的相同类型的字符。它会抛出某种错误。

所以对我而言,似乎有些事我现在还不知道有关编码的事情,也许那里的人可以刷新我的方式并清理我的问题。

//////更新: edit.php(644)位于名为ce-admin(755)的文件夹中,该文件夹位于public_html(750)中。这会回答你关于权限的问题吗?两个不同的托管公司告诉我这是我的脚本,并拒绝帮助我。这个php文件适用于所有其他帐户,只要这些特定的关键字符&lt; &GT; '; “`,不要输入,所有内容都在sql等中更新。

0 个答案:

没有答案