ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: EThaiZone ที่ 29 เมษายน 2008, 00:48:09



หัวข้อ: แจกโค้ด UTF-8 File Header Deleter v1.1 (แก้ไขรันได้ทุก OS)
เริ่มหัวข้อโดย: EThaiZone ที่ 29 เมษายน 2008, 00:48:09
พอดีเห็นเว็บ video-script.info มีตัว  อยู่หัวเว็บ เลยทำให้นึกถึง UTF8 Header

ซึ่งมักจะทำให้ หลายสคริปจะเน่าลงไปทันที เพราะมี  อยู่บนหัวไฟล์
ผลกระทบที่เกิดขึ้นคือ
- session ทำงานไม่ได้ (error)
- ไม่สามารถส่ง header ได้
- ไม่สามารถส่ง setcookie ได้

ดังนั้นใครมีปัญหาเจอ  บนหัวเว็บ ก็เอาโค้ดชุดนี้ไปเซฟเป็น PHP
แล้ววางไว้ที่รากของโฟลเดอร์เว็บแล้วรัน

มันจะจัดการตรวจ/แก้ไข ให้

ลองใช้ดูนะครับ มีปัญหาก็ PM มาบอกกันได้  ::)

โค๊ด:
<?
############################
##  UTF-8 File Header Deleter
##  Version 1.1 (Can run all Windows & Unix)
##  By EThaiZone (ethaizone [at] hotmail.com)
############################

$filetype = array("php", "css", "tpl", "js", "html", "htm", "txt", "php3", "inc");

ini_set("memory_limit", "30M");
ini_set("max_execution_time", "1000");

function get_filelist($path, $ext) {
$list = array();
if(!is_array($ext)) $ext = array($ext);

//Get file list
foreach($ext as $key => $var) {
if($key != 0) $ext2 .= ",";
$ext2 .= $var;
}

$list = glob($path."*.{".$ext2."}",GLOB_BRACE);
if (substr(PHP_OS, 0, 3) == "WIN") {
$list = str_replace("/", "\\", $list);
}

//Get folder list
$baselist = glob($path."*", GLOB_ONLYDIR);
if(is_array($baselist)) {
foreach($baselist as $key => $var) {
$list = array_merge(get_filelist($var."/", $ext), $list);
}
}

return $list;
}

$list = get_filelist(realpath("")."/", $filetype);

foreach($list as $var) {
$data = file_get_contents($var);
if(preg_match("#^".chr(239).chr(187).chr(191)."#", $data)) {
$data = preg_replace("#^".chr(239).chr(187).chr(191)."#", "", $data);
$fp = fopen($var, "w+");
fwrite($fp,$data);
@fclose($fp);
$fixed++;
}
}

echo "<title>UTF-8 File Header Deleter</title>";
echo "<b>Delete UTF-8 File Header - Success!</b><br><br>";
echo "Scaned total: ".count($list)." files.<br>";
echo "Fixed total: ".count($fixed)." files.<br>";
echo "<br>By EThaiZone.Com";
?>

V1.1
- แก้ไขฟังค์ชั่น get_filelist ให้ทำงานได้ทั้ง Windows และ Unix
- ตัดทอนคำสั่งที่ไม่จำเป็นออก

ปล. ฟังค์ชั่น get_filelist ผมเขียนไว้ใช้เรียกไฟล์ทั้งหมดจากโฟลเดอร์และซัพโฟลเดอร
โดยกำหนดนามสกุลที่เรียกได้ ก็ลองเอาไป apply ดูกันได้นะครับ
ปล2. ผมเคยแจกไปยัง ถ้าเคยไปแล้วต้องขออภัย นึกอะไรได้ก็มาแปะหมด 555+


หัวข้อ: Re: แจกโค้ด UTF-8 File Header Deleter
เริ่มหัวข้อโดย: au8ust ที่ 29 เมษายน 2008, 00:50:26
โอ เทพมาก ๆ คร้าบบบบบบบ

ขอบคุณมากครับ : D


หัวข้อ: Re: แจกโค้ด UTF-8 File Header Deleter
เริ่มหัวข้อโดย: ^^NMkung ที่ 29 เมษายน 2008, 00:51:02
ขอบคุณครับ  :'( :'(


หัวข้อ: Re: แจกโค้ด UTF-8 File Header Deleter
เริ่มหัวข้อโดย: movemore ที่ 29 เมษายน 2008, 02:20:24
มีประโยชน์มากครับ


หัวข้อ: Re: แจกโค้ด UTF-8 File Header Deleter
เริ่มหัวข้อโดย: au8ust ที่ 29 เมษายน 2008, 06:47:48
เอ... มันใช้ยังไงหว่า  :-X

ลองแล้วขึ้น Warning: array_search() [function.array-search]: Wrong datatype for second argument in /home/mscom/public_html/utf8.php on line 26 เต็มเลย

 :P


หัวข้อ: Re: แจกโค้ด UTF-8 File Header Deleter
เริ่มหัวข้อโดย: ok24ok ที่ 29 เมษายน 2008, 07:32:39
เหมือนกันเลยครับ...ช่วยด้วยๆๆๆ :-X


หัวข้อ: Re: แจกโค้ด UTF-8 File Header Deleter
เริ่มหัวข้อโดย: GutZ ที่ 29 เมษายน 2008, 09:04:51
ลองซักหน่อย ขอบคุณครับ


หัวข้อ: Re: แจกโค้ด UTF-8 File Header Deleter
เริ่มหัวข้อโดย: EThaiZone ที่ 29 เมษายน 2008, 11:56:53
โทษทีเน้อ ลืมไปเลยว่ายังแก้ไม่เสร็จ เพราะรันบน unix พวกนี้
มันจะมีปัญหา  :P

---------------------------------
แก้เรียบร้อยแล้ว  :)


หัวข้อ: Re: แจกโค้ด UTF-8 File Header Deleter v1.1 (แก้ไขรันได้ทุก OS)
เริ่มหัวข้อโดย: au8ust ที่ 29 เมษายน 2008, 12:30:11
ลองตัวใหม่แล้ว ทีนี้ขึ้นว่า

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /home/mscom/public_html/utf8_detector.php on line 32

Warning: array_merge() [function.array-merge]: Argument #2 is not an array in /home/mscom/public_html/utf8_detector.php on line 32


หัวข้อ: Re: แจกโค้ด UTF-8 File Header Deleter v1.1 (แก้ไขรันได้ทุก OS)
เริ่มหัวข้อโดย: EThaiZone ที่ 29 เมษายน 2008, 12:56:35
แปลกนะ ผมลองทั้งวินโดวน์

และ dreamhost แล้วง่ะ (ใช้ได้)  :P

และข้างบนไม่ว่าจะเกิดได้ เพราะผม declare array ไว้หมดแล้วอะ - -*