我有一个表单,允许用户更改姓名、姓氏、密码等。因此,我禁用了一个电子邮件字段,我不想让用户更改帐户设置中的电子邮件,所以我禁用了禁用的html参数的输入。但是,可以很容易地绕过它,只需转到google控制台并删除html中禁用的参数,以更改电子邮件输入并发送请求。
我不能创建一个假的电子邮件字段,因为表单与插件通信,所以电子邮件输入必须是存在的。我考虑用php禁用它,因为在html中看不到它,但我不知道如何做,也不确定它是否是正确的方法。
我如何禁用表单输入,使用户无法访问它,并防止它通过一些欺骗被修改?
<form name="Form" class="mts-edit-account" action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" enctype="multipart/form-data" <?php add_action( 'woocommerce_edit_account_form_tag', 'action_woocommerce_edit_account_form_tag' );?> >
<div class="form-row email_show">
<label class="t3" for="disabled_account_email">Email</label>
<input type="email" class="field-settings disabled" style="pointer-events:none;" name="account_email" id="account_email" disabled value="<?php echo esc_attr( $user->user_email ); ?>" />
<span class="t4-light">Description..........</span>
</div>
</form>发布于 2022-09-15 12:53:05
不幸的是,由于网页的设计,您的需求是不可能的--您的代码无法控制用户可以做什么,它只能建议他们应该做什么,并检测他们做了什么。
我不能创建一个假的电子邮件字段,因为表单与插件通信,所以电子邮件输入必须是存在的。
如果您希望用户的浏览器直接将数据发送到插件,那么将该数据置于用户控制的之下。如果有必要,用户可以自己编写完整的HTML表单,并提交;或者只需使用脚本创建一个看起来与真正浏览器生成的请求无法区分的请求。
所以,您是正确的,您需要在服务器端做一些事情,但是在表单提交之后才是,而不是在提交之前。例如:
$_POST数组中该字段的值(或在截取它时所采取的任何形式),而不是让插件直接处理表单,编写自己的表单处理代码,操作数据,然后使用操纵的数据直接调用插件中的一些函数。
https://stackoverflow.com/questions/73722927
复制相似问题