2012-10-26 54 views
0

通過$ _POST從第1頁到第2頁發送登錄(電子郵件地址),以處理諸如jim_o'[email protected]之類的地址。

echo "<input type='hidden' name='login' value='".htmlspecialchars($_GET['login'], ENT_QUOTES)."'>"

綜觀2網頁源代碼,我estonished看到它輸出jim_o'[email protected]代替jim_o&#039;[email protected]因爲我預料到了。

當我再次發送數據到一個新頁面時(第3頁)我再次登錄到htmlspecialchars($_GET['login'], ENT_QUOTES) ...並且它做我期望它做的事情。

但任何人都可以解釋爲什麼它失去了#039;編碼在POST發送?我可以理解它在瀏覽器中迴應單引號,但它爲什麼在源代碼中也是這樣呢?

感謝

回答

-1

jim_o'[email protected]是不是一個有效的電子郵件地址,並且不能被允許的。

使用filter_input進行驗證。

$login = filter_input(INPUT_GET, 'login', FILTER_VALIDATE_EMAIL); //or INPUT_POST, if method is POST 
if(!$login){ 
    //invalid e-mail 
} 

編號:http://www.w3schools.com/php/func_filter_input.asp

+0

你爲什麼說這不是一個有效的電子郵件地址?這是有效的。 –

+0

包含單引號的郵件地址是有效的,即使Gmail,Yahoo,Hotmail等都會拒絕。就驗證而言,我使用正則表達式。但我的問題是關於通過POST的htmlspecialchars的輸出。不管怎麼說,還是要謝謝你。 – SunnyOne

+0

生活和學習......我真的不知道。我一直認爲只允許使用字母,數字,破折號和下劃線。謝謝( –

0

看頁面的源代碼看到,在真理它的正常工作 - 在瀏覽器中看到「「」因爲你的瀏覽器使其‘humanable’,但經過你會看到源代碼外觀,一切都很好。

在其他方式嘗試:

echo htmlentities("jim_o'[email protected]", ENT_QUOTES); 
+0

htmlentities給出了相同的結果,但你的答案必須是正確的,瀏覽器使它對人類可讀,謝謝 – SunnyOne

+0

抱歉,由於$ _POST發送,源代碼不輸出'#039;', 。但一單引號作爲予先說我仍然想知道爲什麼 – SunnyOne

+0

'回聲用htmlspecialchars( 「<\」 jim_o'[email protected]」,ENT_QUOTES, 'UTF-8'); 回聲
'; echo bin2hex(「'」);' 最後一個會告訴你什麼?如果不是27,那麼這意味着它不是一個真正的撇號。 –

0

其實,原來的問題是有效的。這裏有一些代碼是我在大約五分鐘之內一起入侵的。這不是很漂亮,也不復雜,但它表明了這一點。

<?php 
$posted=$_POST[posted]; 
if (isset($posted)) { 
echo "POSTED: $posted<br>"; //output: You'll see a quote 
$specposted=preg_replace('/&#039/','****',$posted); 
echo "after entity replace: $specposted<br>"; //output: You'll see a quote 
} 
else{ 
$phraseone="You'll see a quote"; 
$phrasetest=htmlentities($phraseone, ENT_QUOTES); 
echo "phrasetest: $phrasetest<br>"; //output: You'll see a quote 
$specialphrase=preg_replace('/&#039/','****',$phrasetest); 
echo "after entity replace: $specialphrase<br>"; //output: You****;ll see a quote 
print<<<HERE 
<form method='post'> 
<input type='hidden' name='posted' value='$phrasetest'> 
<input type='submit' value='GO!'> 
</form> 
HERE; 
} 
?> 

有趣......