Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 安全-Ajax&;暂时使用_Php_Wordpress_Security_Jquery - Fatal编程技术网

Php 安全-Ajax&;暂时使用

Php 安全-Ajax&;暂时使用,php,wordpress,security,jquery,Php,Wordpress,Security,Jquery,我正在开发一个站点,它发布了许多从jquery到PHP的ajax调用,并将数据从PHP返回到jquery 一切都正常,但我想知道我处理电话的方法是否正确,在安全方面,以及我是否可以采取或记住任何进一步的安全措施 来完成我的过程 functions.php文件 Setup wp_localize_script()&将ajax url和nonce的变量传递给它- wp_localize_script( 'main', 'WP', array( 'AJAX_URL' => admi

我正在开发一个站点,它发布了许多从jquery到PHP的ajax调用,并将数据从PHP返回到jquery

一切都正常,但我想知道我处理电话的方法是否正确,在安全方面,以及我是否可以采取或记住任何进一步的安全措施

来完成我的过程

functions.php文件

  • Setup wp_localize_script()&将ajax url和nonce的变量传递给它-

     wp_localize_script( 'main', 'WP', array( 
         'AJAX_URL' => admin_url( 'admin-ajax.php'), 
         'NONCE' => wp_create_nonce( 'ajax_custom_nonce' ) 
     )); 
    
  • myscript.js文件

  • 在我的js文件中,我使用jquery发送了我的post请求

    $.ajax({
        type : "post",
        url: WP.AJAX_URL,
        data: ({action : 'request_handler', 
            id : 'content_id',   
            nonce : WP.NONCE }),
        success: function(data) {}
    })
    
  • ajax.php文件

  • php文件接收ajax post,调用request_handler()

  • request_handler()检查nonce,获取post id并运行switch语句来调用所需函数

     function request_handler() { 
         // check the nonce
         $nonce = $_POST['nonce'];
    
         if ( ! wp_verify_nonce( $nonce, 'ajax_custom_nonce' ) ) 
             die ('busted');
    
        $id = $_POST['id']; 
    
        switch ($id) {
            case 'vimeo_embed':
                require_once(TEMPLATEPATH . '/library/vimeo.php'); 
                load_vimeo();  
            break; 
            case 'popup':  
                require_once(TEMPLATEPATH . '/library/popup.php'); 
                load_popup();
            break;
    
            ....etc
        }
     } 
    

  • 谢谢

    代码似乎很好,我想唯一需要注意的是如何处理$id的意外值,我想默认值在该开关中可以正常工作

     function request_handler() { 
         // check the nonce
         $nonce = $_POST['nonce'];
    
         if ( ! wp_verify_nonce( $nonce, 'ajax_custom_nonce' ) ) 
             die ('busted');
    
        $id = $_POST['id']; 
    
        switch ($id) {
            case 'vimeo_embed':
                require_once(TEMPLATEPATH . '/library/vimeo.php'); 
                load_vimeo();  
            break; 
            case 'popup':  
                require_once(TEMPLATEPATH . '/library/popup.php'); 
                load_popup();
            break;
    
            ....etc
        }
     }