本文介紹了Dedecms驗(yàn)證碼無法顯示的解決方法,驗(yàn)證碼不顯示怎么辦,有需要的朋友參考下。
用Dedecms5.7 UTF-8版本,登錄后臺(tái),發(fā)現(xiàn)驗(yàn)證碼沒法顯示了。
圖片不顯示,這應(yīng)該是很多站長朋友們最長遇到的一個(gè)問題,本地測試明明好好的,為什么傳上空間或者服務(wù)器上驗(yàn)證碼就無法顯示了呢,這可能是由于沒有加載gd庫擴(kuò)展所引起的,那么怎么解決呢?
方法一
如果是獨(dú)立的服務(wù)器,可以自己操作,那么可以去你服務(wù)器PHP安裝目錄下找到php.ini(如果是用安裝了phpStudy,那個(gè)php.ini是放在C:Program FilesphpStudyPHP5目錄下),打開搜索extension=php_gd2.dll,把它前面的;號(hào)去掉,重啟IIS或者apache等其他服務(wù)器。如果你是租用的空間,那么可以找空間商,讓他幫你開啟。
方法二
如果使用的是織夢(mèng)utf8版本的,可以嘗試著這種辦法,找到data文件夾下的common.inc.php,使用非windows自帶文本編輯器,推薦使用emeditor,打開此文件,然后找到右下角,如果是帶簽名的話,保存為不帶簽名的,safe文件夾下的inc_safe_config.php也要保存為不帶簽名的。(www.genban.org 網(wǎng)站建設(shè))
方法三:
如果風(fēng)站是UTF-8編碼的,當(dāng)你用windows自帶的記事本編輯網(wǎng)站文件,保存后就會(huì)被自動(dòng)加上了bom頭 (BOM: Byte Order MarkUTF-8 BOM又叫UTF-8 簽名,其實(shí)UTF-8 的BOM對(duì)UFT-8沒有作用,是為了支援UTF-16,UTF-32才加上的BOM,BOM簽名的意思就是告訴編輯器當(dāng)前文件采用何種編碼,方便編輯器識(shí)別,但是BOM雖然在編輯器中不顯示,但是會(huì)產(chǎn)生輸出,就像多了一個(gè)空行)
所以就得把文件的bom頭全部清除,驗(yàn)證碼就會(huì)正常顯示出來。我這給出一個(gè)批量刪除網(wǎng)站文件bom頭的php代碼。
使用方法:新建一個(gè)php文件,把下面的php代碼粘貼到你新建的php文件,隨便保存一個(gè)文件名,例如:bom.php 。
把bom.php文件復(fù)制到你網(wǎng)站的根目錄下,在瀏覽器上打開它:http://你網(wǎng)站網(wǎng)址/bom.php 就會(huì)自動(dòng)幫你刪除網(wǎng)站的所有文件帶有的bom頭。
<?php
header("Content-Type:text/html; charset=utf-8");
if (isset($_GET['dir'])){ //設(shè)置文件目錄
$basedir=$_GET['dir'];
}else{
$basedir = '.';
}
$auto = 1;
checkdir($basedir);
function checkdir($basedir){
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file != '.' && $file != '..'){
if (!is_dir($basedir."/".$file)) {
echo "文件名稱: $basedir/$file ".checkBOM("$basedir/$file")." <br>";
}else{
$dirname = $basedir."/".$file;
checkdir($dirname);
}
}
}
closedir($dh);
}
}
function checkBOM ($filename) {
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
if ($auto == 1) {
$rest = substr($contents, 3);
rewrite ($filename, $rest);
return ("<font color=red>發(fā)現(xiàn)BOM并且已自動(dòng)刪除</font>");
} else {
return ("<font color=red>發(fā)現(xiàn)BOM</font>");
} // www.jbxue.com
}
else return ("沒有發(fā)現(xiàn)BOM");
}
function rewrite ($filename, $data) {
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>
方法四:
如果只是后臺(tái)登錄的驗(yàn)證碼無法正常顯示的話,那么你可以選擇取消登錄時(shí)要輸入驗(yàn)證碼,打開織夢(mèng)data文件夾下的safe文件夾,打開inc_safe_config.php文件,然后把$safe_gdopen = '1,2,3,4,5,6,7';改為$safe_gdopen = '1,2,3,4,5';
這樣登陸后臺(tái)就不用驗(yàn)證碼了。
方法五:
權(quán)限問題:修改根目錄下data--sessions的目錄權(quán)限為777即可。