2013-08-22 23 views
0

我正在使用file_get_contents()顯示所有當前用戶(作爲表單開始處的複選框對象)的表單提交頁面(POST)的htpasswd文件,並允許用戶使用exec()函數更新這些用戶。除非用戶通過表單提交按鈕提交更改之後,頁面上顯示的用戶列表未更新,否則這一切都可以正常工作。我知道發生這種情況的原因是因爲更新結果的代碼發生在結果的回顯之後。如何使用PHP更新在同一頁上提交表單提交的HTML輸出

所以我的問題是:有沒有什麼辦法可以修改/更新輸出(使用PHP),在實際功能執行之前會發生?我已經包括了我的基本代碼結構,以幫助可視化我的情況:

form.php的:

<form method="post"> 

<?php 
    //Code to read htpasswd file, then output results as form input checkboxes 
?> 

<select name="action"> 
    <option value=""></option> 
    <option value="delete"></option> 
    <option value="change"></option> 
    <option value="create"></option> 
</select> 

<input type="submit"> 

<?php 
    if($_POST['action'] !== '') 
    { 
     switch($_POST['action']) 
     { 
      case delete: 
      //run exec() command to delete each user 

      case change: 
      //run exec() command to change pw for each user 

      case create: 
      //run exec() command to create a user 
     } 
    } 
?> 

如果這是不可能的,使用PHP,Java腳本會做的工作?

+3

豈不把最後的PHP代碼塊輸出列表中的第一個塊之前工作? – j08691

+0

基本上,你想更新頁面而不用重新加載它,使用新提交的信息?如果是這樣,你需要看看AJAX。 (IMO最簡單的方法是使用Jquery。)或者是新加載的頁面不包含新的信息?然後,應該通過更改PHP代碼的順序來解決問題,以確保在顯示任何內容之前完成所有處理。 – Ariane

+0

交換PHP代碼塊就像一個魅力!謝謝j08691和阿麗亞娜。有沒有辦法將評論標記爲答案?對不起,我是新來的... – George

回答

0

隨着j08691和阿麗亞娜的幫助下,我能夠通過交換代碼,以獲得期望的結果提到:

<form method="post"> 

<?php 
    if(isset($_POST['action']) && $_POST['action'] !== '') 
    { 
     switch($_POST['action']) 
     { 
      case delete: 
      //run exec() command to delete each user 

      case change: 
      //run exec() command to change pw for each user 

      case create: 
      //run exec() command to create a user 
     } 
    } 
?> 

<?php 
    //Code to read htpasswd file, then output results as form input checkboxes 
?> 

<select name="action"> 
    <option value=""></option> 
    <option value="delete"></option> 
    <option value="change"></option> 
    <option value="create"></option> 
</select> 

<input type="submit">