2017-04-17 63 views
1

我開發了自己的PHP類,並使用composer來管理它們之間的所有依賴關係。但是,無論何時我在任何PHP腳本的頂部添加「供應商/自動加載」,頁面都不會POST。沒有任何輸入元素的發佈數據被腳本識別或接收。以下腳本'call.php'貼到自己身上並沒有任何反應。PHP自動加載阻止了POST

try 
{ 
    //------Page url 
    $url = 'call'; 

    //------Set page timeout parameters 
    session_start();  
    if(isset($_SESSION['timeout']) && ((time() - (int)$_SESSION['timeout']) > 600)): 
     session_destroy(); 
     header('Location: '.$url); 
     die(); 
    endif; 
    $_SESSION['timeout'] = time(); 

    //------Add required methods and classes 
    require dirname(__FILE__).'/../includes/vendor/autoload.php'; 

    //------Get encrypted user id & device id 
    if(isset($_GET['id']) || isset($_GET['device'])): 

     //-----Decrypt user id and device id 
     $decrypt = new decryption(); 
     $user_id = $decrypt->mc_decrypt($_GET['id']); 
     $device_id = $decrypt->mc_decrypt($_GET['device']); 

     //-----Validate decrypted data   
     $check  = new validation(); 
     $c_id  = $check->check_number($user_id ,'n'); 
     $c_device = $check->check_number($device_id ,'y'); 

     if($c_id==1 && $c_device==1) 
     { 
      //-----Create a service object 
      $service = new service($user_id); 
      $status = $service->get_user_status(); 

      //-----Check if the user has a valid status 
      if($status != 100) 
      { 
       header('Location: logout?logout&message='.$status.'#re101'); 
       die(); 
      } 
      else 
      { 
       $user_name = $decrypt->mc_decrypt($service->get_user_name()); 

       //-----Check for previous service requests 
       $details = $service->get_service_call(); 

       if($details) 
       { 
        $completed = false; 

        if($details['b'] == 'pending') 
        { 
         $message = '<h2>Your request has been placed...</h2>'; 
         $image = '<h2><img src="images/call_in.png alt="" height="100px" width="300px"/></h2>'; 

        } 

        else if($details['b'] == 'processing') 
        { 
         $message = '<h2>Your request is under process...</h2>'; 
         $image = '<h2><img src="images/call_up.png" alt="" height="100px" width="300px"/></h2>'; 
        } 

        else 
        { 
         $completed = true; 
         $service_id = $details['a']; 
         $message = '<h2>Your request has been fulfilled...</h2>'; 
         $image = '<h2><img src="images/call_out.png" alt="" height="100px" width="300px"/></h2>'; 
        } 

        $dated = $details['c']; 
       } 
       else 
       { 
        //-----Create a new service request 
        if($service->create_service_call($device_id)) 
         echo "Service created"; 

        $dated = date('d-m-Y', time()); 
       } 
      } 
     } 

    endif;  

    //-----Once fulfilled, close the service by accepting user rating and feedback 
    if(isset($_POST['submit'])&&!empty($_POST['submit'])): 

     $id  = !empty($_POST['service'])?$_POST['service']:''; 
     $rating = !empty($_POST['rate'])?$_POST['rate']:''; 
     $feedback = !empty($_POST['feed'])?$_POST['feed']:''; 

     $check = new validation(); 
     $c_text = $check->check_textarea($feedback, 'y'); 

     $feed = new service(0); 

     if(($rating == 10 || $rating == 5 || $rating == 1) && $c_text == 1) 
     { 
      if($feedback == '') 
       $feedback = 'nil'; 

      if ($feed->give_service_feedback($id, $rating, $feedback)) 
       $give = 'Thank you for your feedback!'; 
      else  
       $give = 'Sorry, could not post your feedback.'; 
     } 
     else 
      $give = 'Sorry, there was an error.'; 

    endif; 
} 
catch(Exception $e) 
{ 
    $log = new misc(); 
    $log->handle_ex($url, $_SESSION['account'], $e->getMessage(), $e->getFile(), $e->getLine()); 
    header('Location: '.SITE.'404.shtml'); 
    die(); 
} 

回答

1
通過AJAX

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 

<!-- button to send form post -->   
<button id="sendforms">Submit forms</button> 

     <div id="result"><!-- result of post page goes here --></div> 

     <script type="text/javascript"> 
      $(document).ready(function() { 
       $("#sendforms").click(function() { 
         var combinedFormData = $("#form1").serialize(); 
        $.post(
          "test.php", 
          combinedFormData 
        ).done(function(data) { 
          //alert("Successfully submitted!"); 
          $("#result").html(data); 
        }).fail(function() { 
           //alert("Error submitting forms!"); 
        }) 
       }); 
      }); 
     </script> 

因此,所有的代碼後在test.php的文件,您可以檢查是否設置PHP和也返回它的形式必須有一個製成ID =「form1的」,不需要

行動=「page.php文件」方法=「郵報」,請從您的形式 還按鈕刪除此必須

<button id="sendforms">Submit forms</button> 

如果我以前不明白,我可以做一個實現你的你,如果發送的所有代碼的形式和PHP的一部分

+0

錯標籤可能? :) – OldPadawan