我将文本输入框或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等中更新。