所以,我有一个从HTML表单输入的基本小脚本,是PHP的进程,然后以CSS的形式将其写入文本文件。我已经有一些jerkwad试图在服务器上删除表(没有SQL,但我想让人们不要尝试)这是我到目前为止的代码,有人可以帮助我通过htmlentities或其他东西来阻止潜在的错误输入?
HTML表单
<html><body>
<h4>Codes Form</h4>
<form action="codes.php" method="post">
Username: <input name="Username" type="text" />
Usercode: <input name="Usercode" type="text" />
<input type="submit" value="Post It!" />
</form>
</body></html>
PHP
<html><body>
<?php
$Friendcode = $_POST['Usercode'];
$Username = $_POST['Username'];
echo "You have recorded the following information on the server ". $Username . " " . $Usercode . ".<br />"; echo "Thanks for contributing!";
$output = ".author[href\$=\"$Username\"]:after { \n"
."content: \" ($Usercode)\" !important\n"
."}";
}
$fp = fopen('file.txt', 'a');
fwrite($fp, $output);
fwrite($fp, "\n");
fclose($fp);
?>
</body></html>
答案 0 :(得分:2)
您可以使用htmlentities将html标记转换为其html标识。 &LT;或者您可以使用strp_tags来删除所有html标签。如果你使用sql使用mysql_real_escape_string来使sql查询更安全
答案 1 :(得分:2)
每当您在 HTML代码中包含用户输入的数据时,首先对数据进行编码始终是一个好主意,方法是将其传递到htmlspecialchars()
。
将其视为去污室。这将确保任何HTML特殊字符,例如“&lt;”和“&gt;” (致命的病毒)被正确转义(杀死)并且不会在您的页面中显示为“真正的”HTML标记(不会使您的网页生病)。
同样,在 SQL查询中包含用户输入时,您还必须对其进行编码。您为此目的使用的功能取决于您使用的数据库。由于PHP的动态特性,如果您在SQL查询中包含数值,则必须首先检查以确保变量包含使用is_numeric()
和ctype_digit()
等函数的数字。 / p>
答案 2 :(得分:0)
我认为阻止HTML的最佳方法是只允许您认为用户名或用户代码可能包含的字符。
例如,将输入限制为字母,数字和下划线,并修剪字符串开头和结尾的空格。只要提供HTML代码作为输入,此验证就会失败。
答案 3 :(得分:0)
我建议在客户端和服务器端使用正则表达式执行此操作。可以在此处找到客户端示例:jQuery remove all HTML tags EXCEPT Anchors
答案 4 :(得分:0)
如果有人直接在浏览器中输入code.php
的网址,会发生什么情况。他们将获得未定义偏移的通知。
如果$_POST
不为空,您至少应该检查一下。
if(isset($_POST['submit']) && !empty($_POST))
{
//do operation
}
验证特殊字符的用户名和用户代码以及允许他们使用PHP服务器端输入的内容
答案 5 :(得分:0)
@ Zer0mod:我使用strip_tags删除HTML和mysql_real_escape_string来处理任何可能的SQL注入。
答案 6 :(得分:0)
使用PHP将每个符号转换为HTML数字!关于这样做的详细信息,请转到htmlentities()。