在没有隐藏输入的情况下将PHP变量传递给Ajax


Pass PHP variable to Ajax without hidden input

我有一个表单,它接受用户消息并将其发送给收件人。在PHP方面,我有三个变量:$senderid$recipientid$messageid。到目前为止,我一直在使用公司的隐藏输入,例如

<input type="hidden" id="senderid" value="<?php echo $senderid; ?>" />
<input type="hidden" id="recipientid" value="<?php echo $recipientid; ?>" />
<input type="hidden" id="messageid" value="<?php echo $messageid; ?>" />
<textarea id="message" name="message" rows="5" cols="10"></textarea>

其余部分我使用VAR SENDERID = $('#senderid').val();等将其传递给Ajax脚本。这很好用。我不喜欢的是隐藏的输入,即使它是隐藏的,也可以更改。有人可以通过Firebug更改$senderid$recipientid$messageid的值。如果有人这样做的话,我的信息系统就会完全瘫痪。有没有其他方法可以在不使用隐藏输入的情况下将变量传递给Ajax?

没有简单的方法可以做到这一点。您可以将is作为javascript变量传递,或者以某种方式对事件进行散列处理,例如使用sha函数。但我建议你重新思考你做事的方式。

例如,如果这是一个类似于其他用户的消息表单,您可以有以下内容:

  • senderid,我假设这是当前登录的用户,所以您可以从会话中获取它
  • recipientid,您可以将其作为隐藏输入,但在您的控制器(或发送消息的功能)中,您可以检查当前用户是否真的被允许向收件人发送消息(例如,收件人是否在朋友列表中)

无论如何,永远不要相信从浏览器提交的数据。