我正在测试一个ASP.NET网络表单,需要从输入中过滤掉空字符。
要测试此功能,我如何在html表单中实际输入空字符?我已经尝试过Alt + 0但它不起作用。
我知道我可以通过在URL中使用“%00”在GET请求中执行此操作。但是,我想以POST形式进行。
答案 0 :(得分:7)
我能够使用TamperData Firefox插件完成此操作。
https://addons.mozilla.org/en-US/firefox/addon/tamper-data/
当给出防拆弹出窗口时,我在后置参数值字段中键入“%00”。
但是,我找不到只使用键盘输入空字符的方法。
答案 1 :(得分:1)
我的建议是将空字符写入您想要的html元素中 例如:
document.getElementByID("my_null_tag").innerHTML += "\0"
答案 2 :(得分:0)
<html>
<body onload='document.forms[0].submit();'>
<form method="post" action="http://localhost/test.asp" >
<input type="hidden" name="param" value="%00">
</form>
</body>
</html>
答案 3 :(得分:0)
您可以使用HTML实体。不完全确定需要多少个零但是:
�
对于任意Unicode字符,使用十六进制表示法更容易。例如,㍝
打印㍝是U+335D
。
更新:这个问题确实非常棘手。我设法在HTML文档中插入一个空字符(使用服务器端脚本并使用十六进制编辑器验证)。正如所料,HTML实体没有区别,可以是either �
or �
。但浏览器不会在post请求中发送该字符(使用Firefox和Firebug测试):它发送%EF%BF%BD
,即REPLACEMENT CHARACTER' (U+FFFD)。确切地说,它在一个用于在文档中打印null的框中发送询问标记(假设null不可打印)。
我的猜测是你的测试人员需要编写任务脚本。
答案 4 :(得分:0)
使用AJAX提交表单。即在地址栏中粘贴这样的内容:
javascript:(function(){var xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){if(this.readyState==4){document.write(this.responseText)}};xhr.open("POST",'/form',true);xhr.send("\0");})()
这里是打开的,所以你可以真正看到它:
(function() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState == 4) {
document.write(this.responseText);
}
};
xhr.open("POST", '/form', true);
xhr.send("\0");
})()
当然,这有一些限制,因为它只是盲目地取回当前页面的内容而不管它回来了什么。但这可能足以说明是否出现了问题。
答案 5 :(得分:-3)
带有斜线的拉丁字符O通常可以作为Null / Nul的符号(如果您愿意,则为空白)。如果您使用的是数据库驱动的应用程序,则需要根据需要清理此符号以替换为null或空白。
怎么做: 您最喜欢的编辑器中的ALT + 0216应该为您提供Ø - 为此显示目的,为空。
然后,作为示例和最佳实践,您将在表单提交传递到数据库之前对其进行清理。
示例案例 如果提供数据库驱动的PHP站点,您对这个特定字符的卫生可能看起来像......
$dbstring = str_replace(Ø,NULL); and the value will be NULL
或尝试......
$dbstring = str_replace(Ø,""); and the value will be BLANK
!或者,您可能希望使用我在下面提到的HTML实体代码进行此显示。
Alt + 0216解释 如果使用设置为英语(美国)的普通104键键盘作为主要语言,请按住ALT键,并在按住时使用数字键输入0216.然后释放ALT键,您的角色应出现。 *这主要是Windows方法。 Macintosh,(X)nix和bsd用户,你可能会被困在使用HTML实体代码。
特别注意:使用键盘顶部数字不起作用。 如果您使用的笔记本电脑或其他设备使这种情况变得困难或不可能。尝试替代方法:使用 HTML实体代码:
Ø = Ø (usually for null)
ø = ø (could be used, but the upper-case version seems more appropriate.)
其他可能有用的想法: Nul vs Null vs Blank - 它们从根本上意味着同样的事情,但不同的编程语言使用或要求这些不同。 (还有其他人,比如NullPTR for Null Pointer。)
我试图用NUL / NULL做的一点是,提交的变量'不存在'或者只是'根本不存在'。在大多数情况下,你可以简单地称之为“空”并被理解。
某些数据库系统将Blank和NULL视为同一件事。其他,Blank实际上是一个空值,而NULL根本就没有值(如上所述。)
希望这有助于构建您正在寻找的视图。