如何清理PHP中包含“; Echo”的字符串? (我有充分的理由)

时间:2010-05-11 03:43:29

标签: php forms echo sanitize

我把这个案例变成了一个提交给自己的简单PHP页面。我的问题是我提交了赛道会议结果,其中一个女孩的名字是Echo ...一个可爱的名字。

我提交的问题文字是: 撑杆跳高 - Rachel Simons,Tow,8-6; Echo Wilson,Cit,8-0; Molly Randall,Tow,7-0;

所以你看到一个分号后跟空格,然后是Echo ......

提交后,它说: POST不支持/results/test.php

最终目标是将其与其他一些信息一起保存到数据库中,并有一个搜索页面来查找它,只需在屏幕上打印出完整的结果即可。我删除了所有数据库的东西,以解决这个错误。我的意思是,我可以故意拼错她的名字,但是必须要解决这个问题,对吗???

这是测试PHP文件。

<html>
<head>
<title>title</title>
</head>
<body>
<?php
echo "<h3>Edit meet info below</h3>";
echo "<form action=\"test.php\" method=\"post\" id=\"submitForm\">";
echo "Full Results:<br/><textarea NAME=\"results\" id=\"results\" rows=\"20\" cols=\"80\" MAXLENGTH=\"8191\"></textarea><br/><br/>";
echo "<input type=\"submit\" name=\"submitMeet\" value=\"Submit\">";
echo "</form>";
?>
</body>
</html>

2 个答案:

答案 0 :(得分:4)

听起来你有一些蹩脚的安全系统(也许mod_security?)正在扫描请求并拒绝看起来可能存在风险的请求。

如果他们可以禁用它,您将需要询问您的网站主机或其他内容。没有PHP函数会根据任何文本组合任意拒绝POST请求。 (至少,不是在这种情况下)

答案 1 :(得分:0)

你只需要让Echo改变她的名字......名字......名字。

但是,请仔细研究webdestroya建议的内容。如果失败了,我认为快速和肮脏的解决方案是更改用于分隔POST请求中的名称的分隔符,然后在收到分隔符后将其更改为分号。所以你会发布这样的东西:

Pole vault - Rachel Simons, Tow, 8-6||Echo Wilson, Cit, 8-0||Molly Randall, Tow, 7-0||

然后这样做:

$data = str_replace('||', ';', $the_data_you_posted);

如果您不想在输入结果时手动键入分隔符,则可以编写一个小型JavaScript来自动转换分号,例如提交。