2011-04-24 56 views
1

PHP 1頁 - 下面位>是純HTML:PHP逸出用戶輸入在HTML顯示

<form action="page2.php" method="post"> 
<input type="text" name="name" id="name"> 
-----------submit button, end form --etc.-------------- 

PHP 2頁(是的,我已打算從第1頁的文字輸入塞進在第2頁的隱藏輸入):

foreach($_REQUEST as $key=>$value) 
{ 
    $value = htmlspecialchars(strip_tags(stripslashes($value))); //attempt to cleanse the data before displaying 
} 
echo "<p><input type='hidden' id='name' name='name' value='".$_REQUEST['name']."'/>".$_REQUEST['name']."</p>"; 

的問題是,如果用戶輸入與輸入引號如John奧布萊恩2頁上的輸出不產生W3 HTML兼容,在html變爲:

<p><input type='hidden' id='email' name='email' value='John O'Brien'/>John O'Brien</p> 

我還希望能夠生成符合w3的html用於任何不良輸入數據,例如:j'o/h \ n s「m,ith

任何幫助表示讚賞!

+0

環繞屬性值用雙引號「'',而不是單引號'''。然後,所有你需要是'htmlspecialchars' – Rudie 2011-04-24 13:35:16

回答

-1
  • 首先,不是你的代碼,也沒有任何的人上面貼的都不會工作。出於非常愚蠢的原因。
  • 接下來,我有點專注於保持用戶輸入的原樣。爲什麼刪除一些東西可能很重要
  • 三,隱藏數值應url編碼,我相信,而不是htmlencoded

所以

$FORM = array(); 
foreach($_POST as $key =>$value) { 
    if(get_magic_quotes_gpc()) { 
     $value = stripslashes($value); 
    } 
    $FORM[$key] = htmlspecialchars($value,ENT_QUOTES); 
} 
echo "<p><input type='hidden' id='name' name='name' value='".$FORM['name']."'/>". 
      $FORM['name']. 
    "</p>"; 
+0

真棒這是一個正確的解決方案,這就是我以後! – toop 2011-04-24 13:39:33

+1

ur orig。後工作的url編碼doesnt – toop 2011-04-24 13:52:11

2

使用ENT_QUOTES選項htmlspecialchars()

$value = htmlspecialchars(strip_tags(stripslashes($value)), ENT_QUOTES); 
+0

謝謝,但這不起作用 – toop 2011-04-24 13:26:51

0
foreach($_REQUEST as &$value) 
{ 
    $value = addslashes(htmlspecialchars(strip_tags($value))); 
} 
echo "<p><input type='hidden' id='name' name='name' value='".$_REQUEST['name']."'/>".$_REQUEST['name']."</p>"; 
+0

對於我的信息,這是有效的HTML在屬性中使用反斜槓轉義的引號?它在Chrome中呈現,但我不認爲我曾見過。 – 2011-04-24 13:25:59

+0

它是有效!我在所有瀏覽器上測試過它 – 2011-04-24 13:28:12

+0

謝謝,但是s不工作 – toop 2011-04-24 13:29:10

0

就個人而言,我不會用$_REQUEST - 書Essential PHP Security by Chris Shifflet表明,這樣可以使你的應用程序容易受到CSRF attacks

接下來,根據服務器配置,您可能不會致電stripslashes(...) - 請參閱magic_quotes_gc ini configuration。我會使用get_magic_quotes_gpc()來確定是否有必要。

foreach($_REQUEST as $key=>$value) { 
    if(get_magic_quotes_gpc()) { 
     $value = stripslashes($value); 
    } 
    $value = htmlspecialchars(strip_tags($value)); 
} 
echo "<p><input type='hidden' id='name' name='name' value='".$_REQUEST['name']."'/>".$_REQUEST['name']."</p>"; 
+0

errrr ...剝離後,添加斜槓有什麼意義? – 2011-04-24 13:28:06

+0

謝謝,但這不工作,或者 – toop 2011-04-24 13:35:29