【问题标题】:Passing Hidden Form Elements set via Javascript传递通过 Javascript 设置的隐藏表单元素
【发布时间】:2010-07-15 16:21:24
【问题描述】:

我有一个简单的 HTML 表单,其中包含一些用于发送 SMS/TXT 消息的输入字段。我还有一个 jQuery 脚本,它可以计算输入的字符数,并计算出将使用多少 SMS Credits 来发送消息。

这些在 div 中如下所示:

<div id='message'> 
<span id='char'>0</span> characters, 
<span id='msgs'>0</span> SMS Credit(s)
</div>​​​​

您可以在http://jsfiddle.net/gHAcM/ 看到整个页面减去大部分 php(为了简单起见)

我想做的是包括字符数(从 0)和学分数(从 0

我不确定这是否可以做到,否则我需要通过 php 处理页面再次计算这些值,如果他们不能。只是试图避免两次做同样的事情,一次在 Javascript 中,然后在 PHP 中。

非常感谢, 史蒂夫

【问题讨论】:

    标签: javascript jquery html input hidden


    【解决方案1】:

    这是可以做到的。您需要做的就是创建几个隐藏的输入元素(例如&lt;input type="hidden" name="characterCount" /&gt; 并在计算它们时将值放在那里。但是你不应该这样做(因此没有代码 - 我不想鼓励你)。

    无论如何,您应该始终在服务器上计算任何像这样的关键值,因为理论上用户可以发布他们想要的任何内容,这样他们就可以更改他们的请求以说“credits=0”,而您不想相信这一点。或者,如果他们摆弄字符数,那么可能稍后会崩溃,因为它接收的输入太长......或者他们告诉你它的字符数是负数......只需在服务器上重新验证。这是要走的路。 :)

    【讨论】:

    • +1 指出了巨大的缺陷。以及为什么用户会覆盖并发送credits=0。如果有的话,他们会说,credits=999999.. :)
    • @Anurag:发送消息将使用多少积分。它就像一个价格,所以你只是破产了。 ;-)
    • 我认为这是用户剩余的积分。我的意思是,当我们通过 JavaScript 发送所有这些信息时,为什么剩余的积分不能来自 hidden 字段。
    • @Anurag:我不会担心的。我们帮助 OP 学习了做大事的正确方法。希望他不会将任何信用信息传递给服务器,所以这一切都无关紧要。 ;-)
    【解决方案2】:

    您可以创建几个隐藏字段并将计数放在那里以及跨度中,然后将它们与表单一起提交。但是,这个系统可以很容易地通过伪造带有虚假字符和信用计数的 http 请求来进行游戏,因此您可能仍希望在服务器上进行计数以避免欺诈。此外,如果用户关闭了 javascript,则计数将为零。

    在您现在拥有的地方执行此操作

    $chars.text(len);
    

    添加

    $("#my_hidden_char_count").val(len);
    

    假设你有

    <input id="my_hidden_char_count" value="0"></input>
    

    以您的形式。对学分做同样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      相关资源
      最近更新 更多