ทำไม บางโฮส สคลิปนี้ถึงไม่ทำงานครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ทำไม บางโฮส สคลิปนี้ถึงไม่ทำงานครับ
พอดีผมเพิ่ฝเปลี่ยนโฮสใหม่ สคลิปอับโหลดรูป ไม่ทำงาน ทั้งๆ ที่โฮสเก่า ก็อับโหลดรูปได้ปกติ ผมถามเจ้าของโฮศเขาบอกว่า โฮสนี้ตั้งค่ารีจิส = off จะมีวิธีแก้ยังไงครับ
if( $QPic !='')
{
srand((double)microtime()*1000000);
$QPic_name=$random_pic = rand(1,9999);
# ตรวจสอบความกว้างของรูป
$size = getimagesize($QPic);
# ตรวจสอบขนาดของ Flash
if ( $QPic_type == "application/x-shockwave-flash" ) {
if($QPic_size>$flashSize_limit) {
echo "<br><b><center><font size=3 color=red >ขนาดของไฟล์ Flash เกิน $flashSize_limit bytes [$flashSize_msg]</font></center></b><br>";
echo "<br><b><center><font size=3 color=red >[ <a href='javascript:history.back(1)'>กลับไปแก้ไข</a> ]</font></center></b>";
exit();
}
}
else {
# ตรวจสอบขนาดของรูป
if($QPic_size>$Image_size) {
echo "<br><b><center><font size=3 color=red >ขนาดของภาพเกิน $Image_size bytes [$Image_msg]</font></center></b><br>";
echo "<br><b><center><font size=3 color=red >[ <a href='javascript:history.back(1)'>กลับไปแก้ไข</a> ]</font></center></b>";
exit();
}
}
#แปลงนามสกุล และทำการ upload
if ( $QPic_type == "image/gif" )
{
$filename = $QPic_name.".gif";
}
if ( $QPic_type == "image/bmp" )
{
$filename = $QPic_name.".bmp";
}
if ( $QPic_type == "image/png" )
{
$filename = $QPic_name.".png";
}
if ( $QPic_type == "application/x-shockwave-flash" )
{
$filename = $QPic_name.".swf";
}
elseif (($QPic_type=="image/jpg")||($QPic_type=="image/jpeg")||($QPic_type=="image/pjpeg"))
{
$filename =strtolower($QPic_name.$random_pic . '.jpg');
}
copy ($QPic , "$path/" . $filename );
}
elseif ($QPic == "")
{
echo "";
}

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ไม่แน่ใจคำว่า รีจิส = off
หมายถึงค่า global_registers หรือป่าว ถ้าน่าจะใช้
ก็อาจเป็นไปได้ที่โค้ดจะไม่ทำงาน เพราะจะทำให้ตัวแปร global ไม่ทำงาน
ถ้า global_registers=on ทำให้
$var1 = $_GET['var1] = $_POST['var1'] = $_FILES['var1'] ........
แต่ถ้า global_registers=off ค่าจากด้านบนก็จะเป็นคนละตัว
$var1 ไม่เท่ากับ $_GET['var1] ไม่เท่ากับ $_POST['var1'] ไม่เท่ากับ $_FILES['var1'] ........
มีวิธีแก้ไข น่าจะหลายวิธี
1.แก้ที่โค้ด ถ้ามีไม่มาก เปลี่ยนตามเงื่อนไข
ถ้าส่งค่า เป็น GET ไป ตัวแปรรับต้องเป็น $_GET['var1']
ตัวอย่าง index.php?var1=1 หรือ
<form action="index" method="get">
กรณีตัวแปร POST เช่นเดียวกัน.....
2.แก้โดยสร้างไฟล์ .htaccess ด้วย nodepad ใส่ข้อความ ข้างล่างลงในไฟล์
1 | php_flag register_globals 1 |
กำหนดเป็นเลข 1 หรือ ว่า 0 ตามต้องการโดยเงื่อนไข
1=on
0=off
ในกรณีปัญหาข้างต้นน่าจะต้องกำหนดเป็น 1 ตามด้านบน
แล้วอัพโหลดไฟล์ไปที่ public_html
3.กำหนดด้วยโค้ด php (ตัวนี้ได้หรือไม่ได้ขึ้นอยู่กับ ว่าเขาเปิดให้งานนี้หรือไม่ สามารถลองดูได้)
1 2 3 4 5 | <?php if (! ini_get ( 'register_globals' )) { ini_set ( 'register_globals' , 1); } ?> |
แทรกโค้ดไว้ด้านบนไฟล์ทุกๆไฟล์ หรือเฉพาะไฟล์หน้าที่มีปัญหา

ถ้าผมจะสร้างไฟล์ .htaccess ผมตั้งชื่อไฟล์ว่าอะไรก็ได้ใช่มั้ยครับ

ขออนุญาตช่วยตอบน่ะคับ
การสร้างไฟล์ .htaccess ตั้งชื่อเปน htaccess.txt ก่อน แล้วก็ใส่โค้ดตามที่คุณนิกแนะนำ
จากนั้นค่อยอัปขึ้นโฮสต์แล้วค่อยเปลี่ยนชื่อกลับคืนเป็น .htaccess เพราะถ้าสร้างบนเครื่องเรามันอาจจะ error ถ้าไม่ได้ใส่ชื่อไฟล์ให้มัน
แต่ถ้าใช้พวก text editor อย่างพวก editplus อันนี้สร้างได้คับ ทั้งนี้โฮสต์ของท่านต้องเปิด mod_rewrite ด้วยน่ะคับ
