2013-11-04 32 views
0

目前無法弄清楚如何在我的輸出HTML頁面的打印函數中正確地轉義php函數。在打印HTML頁面的函數中轉義PHP

例如,我有一個名爲removeClient的頁面,我想根據它的ID刪除一個客戶端。下拉框應該爲用戶提供當前的客戶端ID,他們應該能夠點擊其中一個。

我有一個主頁,根據URL提供的視圖調用函數。

現在,我希望頁面打印帶有由Postgres數據庫提供的ID的下拉菜單,然後用一些表單填寫新的用戶數據。

被調用的函數如下;現在

function removeClient() { 

    include 'dbconnect.php'; 

    if ((isset($_POST['add']))) { 

     if (isset($_POST['ID']) && (isset($_POST['FirstName'])) && (isset($_POST['LastName'])) && (isset($_POST['IP'])) && (isset($_POST['Status']))) { 
      $clientid = $_POST['ID']; 
      $FirstName = $_POST['FirstName']; 
      $LastName = $_POST['LastName']; 
      $ip = $_POST['IP']; 
      $status = $_POST['Status']; 

      $result = pg_query($dbconnection, "somequery"); 

      if (@pg_affected_rows($result) === 1) { 

       echo "<p> Client removed!</p>"; 
      } else { 

       echo "<p> Something went horribly wrong. Contact a system adminstrator </p>"; 
      } 
     } 
    } 


    echo 

    "<form name=\"addClient\" method=\"post\" action=\"?view=addClient\"/><br/>" . 
    "<select name=\"clientID\" id=\"clientID\">   " . 
    "<td>ID</td> <tr><input type=\"text\" maxlength=\"32\" name=\"ID\" /></tr><br/>" . 
    "<td>First Name</td> <tr><input type=\"text\" maxlength=\"32\" name=\"FirstName\" /></tr><br/>" . 
    "<td>Last Name</td> <tr><input type=\"text\" maxlength=\"32\" name=\"LastName\" /></tr><br/>" . 
    "<td>IP Addr.</td> <tr><input type=\"text\" maxlength=\"32\" name=\"IP\" /></tr><br/>" . 
    "<td>Status</td> <tr><input type=\"text\" maxlength=\"32\" name=\"Status\" /></tr><br/>" . 
    "<input type=\"submit\" name=\"add\" value=\"Send\" /></form><br/>"; 
} 

,我想要做的是改變線 「」。

到Postgres通過PHP加載她的數據庫值的行。

對於PHP部分,我得到了這個;

<option>Select userID</option> 
<?php 
$db = pg_connect("connection details") or die('Could not connect: ' . pg_last_error()); 
$sql = pg_query("SELECT title FROM books WHERE ownedby='$user_id'"; 
while ($row = pg_fetch_assoc($sql)) { 
echo '<option value="'.htmlspecialchars($row['title']).'"></option>';} 
pg_close($db); 
?> 
</select> 
<input type="hidden" name="userid" id="userid" value="<?php echo htmlspecialchars($user_id); ?>"> 

現在,我不確定如何在回顯調用打印HTML頁面中實現此操作。我試圖做很多轉義,但還沒有幫助。我如何有效地將這段代碼添加到我的表單結構中,在php中echo'd?

+1

您HABE無 「選項標籤」 的所有選項設置。該選項的標籤位於''之間,如果您選擇特定的選項標籤,'value'屬性將定義要提交的值。 – TiMESPLiNTER

回答

0
echo <<<_HTML 

<html code> _HTML;

用這種方式來編寫HTML代碼回聲或打印。

0

也許參數ENT_QUOTES在htmlspecialchars中缺失?

htmlspecialchars($row['title'], ENT_QUOTES) 

此外,檢查htmlspecialchars(和/或htmlentities)文檔看到別人PARAMS(第3大約是字符集)

編輯:我不能確定的<option value="something"></option>可以顯示值,所以也許你也應該試試這個:

echo '<option>'.htmlspecialchars($row['title'], ENT_QUOTES).'</option>';} 
0

由於TiMESPLiNTER指出的 - 你需要改變這一點:

echo '<option value="'.htmlspecialchars($row['title']).'"></option>';} 

echo '<option>'.htmlspecialchars($row['title']).'</option>';}