ทำไม บางโฮส สคลิปนี้ถึงไม่ทำงานครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ทำไม บางโฮส สคลิปนี้ถึงไม่ทำงานครับ

ทำไม บางโฮส สคลิปนี้ถึงไม่ทำงานครับ

พอดีผมเพิ่ฝเปลี่ยนโฮสใหม่ สคลิปอับโหลดรูป ไม่ทำงาน ทั้งๆ ที่โฮสเก่า ก็อับโหลดรูปได้ปกติ  ผมถามเจ้าของโฮศเขาบอกว่า โฮสนี้ตั้งค่ารีจิส = 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 >[&nbsp;<a href='javascript:history.back(1)'>กลับไปแก้ไข</a>&nbsp;]</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 >[&nbsp;<a href='javascript:history.back(1)'>กลับไปแก้ไข</a>&nbsp;]</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 "";
}



Mrmayom 222.123.223.xxx 18-07-2010 11:56:32

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1

ไม่แน่ใจคำว่า รีจิส = 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 ใส่ข้อความ ข้างล่างลงในไฟล์

php_flag register_globals 1

กำหนดเป็นเลข 1 หรือ ว่า 0 ตามต้องการโดยเงื่อนไข
1=on
0=off

ในกรณีปัญหาข้างต้นน่าจะต้องกำหนดเป็น 1 ตามด้านบน
แล้วอัพโหลดไฟล์ไปที่ public_html

3.กำหนดด้วยโค้ด php (ตัวนี้ได้หรือไม่ได้ขึ้นอยู่กับ ว่าเขาเปิดให้งานนี้หรือไม่ สามารถลองดูได้)
 

<?php
if(!ini_get('register_globals')) {
    ini_set('register_globals', 1);
}
?>

แทรกโค้ดไว้ด้านบนไฟล์ทุกๆไฟล์ หรือเฉพาะไฟล์หน้าที่มีปัญหา



ninenik 124.122.66.xxx 18-07-2010
 ความคิดเห็นที่ 2

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



mrmayom 117.47.73.xxx 18-07-2010 16:03
 ความคิดเห็นที่ 3

ขออนุญาตช่วยตอบน่ะคับ

การสร้างไฟล์ .htaccess ตั้งชื่อเปน htaccess.txt ก่อน แล้วก็ใส่โค้ดตามที่คุณนิกแนะนำ

จากนั้นค่อยอัปขึ้นโฮสต์แล้วค่อยเปลี่ยนชื่อกลับคืนเป็น .htaccess เพราะถ้าสร้างบนเครื่องเรามันอาจจะ error ถ้าไม่ได้ใส่ชื่อไฟล์ให้มัน

แต่ถ้าใช้พวก text editor อย่างพวก editplus อันนี้สร้างได้คับ ทั้งนี้โฮสต์ของท่านต้องเปิด mod_rewrite ด้วยน่ะคับ



amdev 180.210.216.xxx 18-07-2010 16:55
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ