我应该在同一页面上为多个表单使用不同的随机数吗?

时间:2015-08-13 12:15:06

标签: security wordpress-plugin wordpress

我正在开发一个插件,我正在使用bootstrap nav tabs功能在选择菜单上显示不同的表单。我想使用nonce函数。我应该为所有表单的每个表单或相同的nonce赋予单独的nonce函数,因为它们在同一页面上。请指导。?

1 个答案:

答案 0 :(得分:1)

每个表单都应该有自己的nonce,即使这些表单都在同一页面上。 如果表单存在于管理页面中,那么我们应该使用check_admin_referer函数来验证现时。

示例:

<html>
  <div>
    <form id="form1"method="post" action="">
    <input type="text" name="something" value=""/>
    <?php wp_nonce_field('some_form','some_form_nonce');?>
    <input type ="hidden" name="form_name" value ="1"/>
    <input type="submit" name="submit"/>
  </div>
  <div>
    <form id="form2"method="post" action="">
    <input type="text" name="someother" value=""/>
    <?php wp_nonce_field('some_other','some_other_nonce');?>
    <input type ="hidden" name="form_name" value ="2"/>
    <input type="submit" name="submit"/>
  </div>
</html>

之后在处理页面上你应该添加像这样的代码

<?php

 if(!isset($_POST['form_name'])){

  if($_POST['form_name']==1){

     if ( ! empty( $_POST ) && check_admin_referer( 'some_form', 'some_form_nonce' ) ) {

   // process form1 data

   }else if($_POST['form_name']=2){


    if ( ! empty( $_POST ) && check_admin_referer( 'some_other', 'some_other_nonce' ) ) {

   // process form2 data

    }
  }
 ?>

这个代码我在我的应用程序中尝试过并按预期工作...