我将文本输入框或文本区域放在这样的表单上:
?>
<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 数据库并使用插入或更新命令。
$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);
如果用户放了< > ' 之类的东西;" ` ,进入输入或文本区域并单击更新/插入按钮,它会抛出一个
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 文件适用于所有其他帐户,只要那些特定的关键字符 < > ' ; " ` ,不要进入,一切都在 sql 等中更新。