2012-08-27 63 views
1

我遇到了一個非常令人沮喪的問題,我似乎找不到根本原因。我試圖在這裏找到一個簡單的驗證碼:https://github.com/claviska/simple-php-captcha驗證碼頁面加載僅限頁面更新

該代碼是從github不變的,並按照說明添加到我的網站。使用IE 8時,圖像顯示爲破碎的圖像,但如果我刷新頁面(F5),則圖像會奇蹟般地出現。 Firefox和Chrome甚至Safari都沒有顯示圖像的問題。我不知道爲什麼它在進入網頁時顯示爲中斷。我花了幾天的時間研究,而且很迷茫。

任何幫助,非常感謝。

編輯: 我一直在密切關注php日誌,並注意到函數似乎被調用兩次。看起來在進入頁面時,一切都很好,並且圖像被生成。但是,在進入頁面和最終加載之間,將再次調用該函數,並且瀏覽器正在嘗試顯示腳本創建的第一個圖像,該圖像在該點已經被銷燬。這隻發生在IE中,這就是爲什麼我很困惑。用於測試

代碼:

<?php 
session_start(); 
$_SESSION = array(); 
include("captcha.php"); 
$_SESSION['captcha'] = captcha(); 
?> 

<html> 
<body> 
<table> 
    <tr> 
     <td width="45%"><?php echo ('<img src="' . $_SESSION['captcha']['image_src'] . '" alt="CAPTCHA" />'); ?></p></td> 
     <td width="4%">:</td> 
     <td><input name="captcha" type="text" id="captcha" required><b><font color="red"> *</font></b></td> 
    </tr> 
</table> 

</body> 
</html> 
+0

我的錢在'$ _SESSION ['captcha'] ['image_src']';那是什麼內容? –

+0

該函數本身返回:/captcha.php?_CAPTCHA & t = 0.55984800 + 1346094060 – user1628449

+0

爲什麼使用'$ _SESSION = array();'?通過這樣做,你將'$ _SESSION' var重置爲'array'。我認爲你應該這樣寫:'if(!session_id())session_start();',就是這樣。另外,我無法理解IE的確切問題。 –

回答

0

這是一種野生的預感,它可能無法正常工作。試着改變你的代碼如下:

session_start(); 
include("captcha.php"); 
$captcha = captcha(); 
$_SESSION['captcha'] = $captcha['code']; 
session_write_close(); 
HTML中

然後,請參閱網址爲$captcha['image_src']。試圖確保這不是會話鎖定問題。

+0

謝謝傑克。同樣的結果:(圖片只會在刷新時顯示 – user1628449

+0

@ user1628449那麼你應該檢查'captcha.php'是否實際上正確地讀取會話,使用'file_put_contents()',以便它不影響正在發送的圖像通過它。 –