我已经使用完整的JavaScript完成了这个任务,但如何在C# / asp.net网站(不是winform)中完成此任务。谢谢。
我已经使用完整的JavaScript完成了这个任务,但如何在C# / asp.net网站(不是winform)中完成此任务。谢谢。
那么您的意思是用户在查看源代码时不应该发现您的超级秘密Konami代码?
完全在服务器端做到这一点是不可能的,除非您希望在每次按键时进行回发,这很麻烦。
您可以压缩和混淆JavaScript代码,但我猜一个有决心的用户仍然可以找出来。
您可以使用Silverlight,但同样,一个有决心的用户可以从浏览器缓存中解压XAP并在反编译器中查看您的DLL。
您可以使用AJAX将每个按键发送到服务器(或者可能在客户端收集它们并批量发送),这实际上并不是太慢。在服务器上,您必须分析按键。此代码对用户不可见。然后,您必须模拟某些推送机制以在客户端上触发所需的反应。
使用C#没有意义。这样的代码必须在客户端执行,因此必须使用Javascript(除非您希望将每个客户端按键发送到服务器,这将非常缓慢)
无论如何,这是一个WPF的C#实现。但是,将其适应其他技术也不难。
private static readonly Key[] _konamiCode = new[] { Key.Up, Key.Up, Key.Down, Key.Down, Key.Left, Key.Right, Key.Left, Key.Right, Key.B, Key.A };
int _konamiCurrentIndex = 0;
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
base.OnPreviewKeyDown(e);
if (e.Key == _konamiCode[_konamiCurrentIndex])
{
_konamiCurrentIndex++;
if (_konamiCurrentIndex == _konamiCode.Length)
{
_konamiCurrentIndex = 0;
KonamiEasterEgg();
}
}
else
{
_konamiCurrentIndex = 0;
}
}
void KonamiEasterEgg()
{
// whatever you want to do when the Konami code is entered...
}
正如其他人所说,完全用C#实现它没有太多意义。但我可以想象一种JavaScript + AJAX与C#的组合...只是一些想法 :)
可能的工作流程:使用JavaScript扫描用户输入(最后10个键),并将输入推送到数组中(ASCII代码或其他内容),然后通过AJAX发送请求,该请求将返回整个秘密目标页面作为HTML结果,而不仅仅是检查,因为这很容易破解。实际上,这更像是密码比较。但是,您可以优化JavaScript,并在几秒钟内清除数组,而没有输入(空闲时间)例如2秒钟(以便输入必须流畅),并在1秒钟内没有输入后发送ajax请求,以便您不会淹没自己的服务器。
JQuery会帮助您很多!
愉快的编码:)
看到 herzmeister der welten
你可以使用 AJAX 将每个按键发送到服务器(或者在客户端收集它们并批量发送),这实际上并不会非常缓慢。在服务器上,您需要分析按键。此代码对用户不可见。然后,您需要模拟一些推送机制来触发客户端上的所需反应。
触发器可以是您需要作为组合的最后一个按键,用户只能解密最后一个按键,这将提供最少的后续请求而无需进行某些客户端验证。
(本来想发表评论的,但是没有足够的声望)