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

在不隐藏输入的情况下将PHP变量传递给Ajax,php,ajax,Php,Ajax,我有一个表单,它接收用户消息并将其发送给收件人。在PHP方面,我有三个变量:$senderid、$recipientid和$messageid。例如,到目前为止,我一直在使用公司的隐藏信息 <input type="hidden" id="senderid" value="<?php echo $senderid; ?>" /> <input type="hidden" id="recipientid" value="<?php echo $recipient

我有一个表单,它接收用户消息并将其发送给收件人。在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>

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

例如,如果这类似于发送给其他用户的消息表单,则可以具有以下内容:

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

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

客户端将始终能够编辑HTML/JavaScript。您需要实现服务器端验证。为什么不使用会话变量呢?如果不选中来自客户端的任何内容,可能会破坏您的系统。如果您需要确保发件人是他所说的那个人,那么变量应该保留在服务器端,可能在$\u会话变量中。您应该检查服务器端,以确保伪造id不会影响您的系统。发布您的ajax代码,我将尝试帮助。嗯,将隐藏值存储在javascript变量中?没有必要在DOM中加入,除非您也希望允许在没有javascript的情况下为用户提交表单(这意味着Ajax从一开始就无法工作)。另外,要小心,因为正如@spidEY提到的,客户端验证是不够的……谢谢你的建议。