hosting, webhosting, web hosting, host, webhost, web host, เว็บโฮสติ้ง, เว็บโฮส, โฮสติ้ง, จดโดเมน, เวบโฮส, เวบโฮสติ้ง, เวบโฮสต์, เว็ปโฮสต์, โดเมน, โฮส, โฮสต์, domain name, domain registration, จดทะเบียนโดเมน, จดโดเมน, จดโดเมนเนม, พื้นที่เว็บไซด์, พื้นที่เว็บไซต์, เช่า hostr
web design ออกแบบเว็บไซต์ พร้อมบริการดูแลเว็บไซต์ ให้คำปรึกษาในการโปรโมทเว็บไซต์ อย่างมืออาชีพ


Webdesign Article : | 1 | 2 | 3 | 


วันนี้พอดีเจอปัญหาในระบบ hosting ของลูกค้าท่านหนึ่ง แล้วปรากฎว่าทำการ reset ระบบ hosting ใหม่ก็แล้ว ลองเปลี่ยนชื่อโดเมนก็แล้ว ทดสอบทุกอย่างก็ยังไม่สามารถ insert ได้ คืออาการมันเป็นการไม่ยอมส่งค่าไปยังไฟล์ที่ทำหน้าที่ query insert ลง mysql ให้ครับ โดย function ดังกล่าวเป็นดังนี้ครับ

function postDataReturnText(url, data, callback){
        var XMLHttpRequestObject = getHTTPObject();
        if(XMLHttpRequestObject) {
                XMLHttpRequestObject.open("POST", url);
                XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                XMLHttpRequestObject.onreadystatechange = function() {
                        if (XMLHttpRequestObject.readyState == 4 &&
                                XMLHttpRequestObject.status == 200) {
                                callback(XMLHttpRequestObject.responseText);
                                delete XMLHttpRequestObject;
                                XMLHttpRequestObject = null;
                        } else {
                                callback("&nbsp;<img src='ajax-loader.gif'>loading");
                        }
        }
    XMLHttpRequestObject.send(data);
        }
}


จากการตรวจสอบค้นหาข้อมูลก็พบว่า การส่งค่าแบบ POST เราได้ระบุไปว่าให้มีการส่งค่าแบบ form และ urlencoded ด้วย คือต้องมีการเข้ารหัสตัวอักษรให้อยู่ในรูปของ URL ด้วยครับ ดังนั้นขั้นตอนที่จะทำการเรียก function postDataReruntText จะต้องมีการ encode URI มาก่อนครับ

var param = encodeURI("string="+string);
postDataReturnText('save.php', param, displayMsg);

แบบนี้ปัญหาภาษาไทยก็จะหมดไปจาก ajax ครับ เนื่องจากว่าพวกฝรั่งเขาใช้ภาษาอังกฤษเป็นหลักเขาจึงไม่ค่อยเจออย่างเราครับ

คนส่วนใหญ่ใช้งาน hosting เวลาส่งค่าตัวแปรกันมักจะมองข้ามเรื่องของการเข้ารหัสให้ถูกต้องครับ เหมือนกรณีของ register global เช่นกันครับ ตรงนั้นก็เป็นเรื่องของการรับ-ส่งค่าตัวแปรใน hosting ให้ถูก method ครับ อ่านรายละเอียดเพิ่มเติมได้ที่ http://www.naxza.com/hosting_article_21-10_18-00-41.php

setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send("ID="+ID);

มักจะส่งค่ากันแบบนี้ ถ้าเป็นค่าตัวเลข หรือ ภาษาอังกฤษก็ไม่ค่อยจะมีปัญหานะครับ แต่วิธีที่ถูกควรจะเป็น

setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(encodeURI("ID="+ID));

ส่วนใครที่อยากได้ javascript function ในการแปลง URLEncoding และ URLDecoding ก็ตามนี้เลยครับ

function URLDecode (encodedString) {
  var output = encodedString;
  var binVal, thisString;
  var myregexp = /(%[^%]{2})/;
  while ((match = myregexp.exec(output)) != null
             && match.length > 1
             && match[1] != '') {
    binVal = parseInt(match[1].substr(1),16);
    thisString = String.fromCharCode(binVal);
    output = output.replace(match[1], thisString);
  }
  return output;
}

function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
        output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

หรือหากเป็น php script function สำหรับแปลงเราก็ใช้ urlencode() และ urldecode() ได้เลยครับ

สำหรับการแปลงภาษาไทยจาก TIS-620 เป็น UTF-8 ก็สามารถทำได้นะครับ อันนี้เป็น php script ครับ

 function utf8_to_tis620($string) {
  $str = $string;
  $res = "";
  for ($i = 0; $i < strlen($str); $i++) {
    if (ord($str[$i]) == 224) {
      $unicode = ord($str[$i+2]) & 0x3F;
      $unicode |= (ord($str[$i+1]) & 0x3F) << 6;
      $unicode |= (ord($str[$i]) & 0x0F) << 12;
      $res .= chr($unicode-0x0E00+0xA0);
      $i += 2;
    } else {
      $res .= $str[$i];
    }
  }
  return $res;
}

หรือจะใช้เป็น iconv() ก็ได้ครับ echo iconv('UTF-8', 'TIS-620', $variable); หรือ echo iconv('TIS-620', 'UTF-8', $variable);



Webdesign Article : | 1 | 2 | 3 | 

hosting, webhosting, web hosting, host, webhost, web host, เว็บโฮสติ้ง, เว็บโฮส, โฮสติ้ง, จดโดเมน, เวบโฮส, เวบโฮสติ้ง, เวบโฮสต์, เว็ปโฮสต์, โดเมน, โฮส, โฮสต์, domain name, domain registration, จดทะเบียนโดเมน, จดโดเมน, จดโดเมนเนม, พื้นที่เว็บไซด์, พื้นที่เว็บไซต์, เช่า hostr

HOME   |   ABOUT US   |   HOSTING   |   DOWNLOAD   |   SUPPORT   |   CONTACTS
Copyright © Naxza.com,Since 2004. All Rights Reserved. Privacy policy. monitoring site uptime web