【发布时间】:2012-02-19 19:36:13
【问题描述】:
我有一个接收用户消息并将其发送给收件人的表单。在 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?
【问题讨论】:
-
客户端将始终能够编辑 HTML/JavaScript。您需要实现服务器端验证。
-
为什么不使用会话变量?
-
来自客户端的任何内容,如果不加以检查,可能会破坏您的系统。如果您需要确保发件人是他所说的那个人,该变量应该保留在服务器端,可能在 $_SESSION 变量中。
-
您应该有一个检查服务器端,以确保伪造 id 不会与您的系统发生冲突。发布您的 ajax 代码,我会尝试帮助。
-
嗯,将隐藏的值存储在 javascript 变量中? 除非您也想允许没有 javascript 的用户提交表单(这将意味着 Ajax 一开始就无法工作)。另外,请注意,因为正如@spidEY 提到的,客户端验证是不够的......