Login   Register  
Icontem

File: jQuery.AJAX/classes/class.libraries.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Jason Gerfen  >  jQuery.AJAX  >  jQuery.AJAX/classes/class.libraries.php  >  Download  
File: jQuery.AJAX/classes/class.libraries.php
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: jQuery.AJAX
Process form submissions using AJAX requests
Author: By
Last change:
Date: 2012-02-01 03:07
Size: 4,045 bytes
 

Contents

Class file image Download
<?php

class libraries
{
 /**
 * @function _serialize
 * @abstract Perform serialization of sent POST data. This is required for the
 *           jQuery.AJAX plug-in checksum verification as the current PHP
 *           serialize() function will not create an accurate hash
 */
 function _serialize($array)
 {
  if (count($array)>0){
   $x = '';
   foreach($array as $key => $value){
    $x .= $key.'='.$value.'&';
   }
   $x = substr($x, 0, -1);
  }
  return (strlen($x)>0) ? $x : false;
 }

 /**
  * @function JSONencode
  * @abstract Primary interface for creating JSON objects
  */
 function JSONencode($array){
  if (!function_exists('json_encode')) {
   return arr2json($array);
  } else {
   return json_encode($array);
  }
 }

 /**
  * @function arr2json
  * @abstract Creates JSON object when json_encode is missing
  */
 function arr2json($array)
 {
  if (is_array($array)) {
   foreach($array as $key => $value) $json[]=$key.':'.php2js($value);
   if(count($json)>0) return '{'.implode(',',$json).'}';
   else return '';
  }
 }

 /**
  * @function php2js
  * @abstract Helper for arr2json. Perofrms typecasting
  */
 function php2js($value)
 {
  if(is_array($value)) return arr2json($val);
  if(is_string($value)) return '"'.addslashes($value).'"';
  if(is_bool($value)) return 'Boolean('.(int) $value.')';
  if(is_null($value)) return '""';
  return $value;
 }

 /**
  * @function _uuid()
  * @abstract Generate a unique GUID (per RFC4122)
  */
 function _uuid()
 {
  return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff),
                 mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
                 mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
                 mt_rand(0, 0xffff), mt_rand(0, 0xffff));
 }

 /**
  * @function _getRealIPv4
  * @abstract Try all methods of obtaining 'real' IP address
  */
 function _getRealIPv4()
 {
  return (getenv('HTTP_CLIENT_IP') && $this->_ip(getenv('HTTP_CLIENT_IP'))) ?
           getenv('HTTP_CLIENT_IP') :
            (getenv('HTTP_X_FORWARDED_FOR') && $this->_forwarded(getenv('HTTP_X_FORWARDED_FOR'))) ?
              $this->_forwarded(getenv('HTTP_X_FORWARDED_FOR')) :
               (getenv('HTTP_X_FORWARDED') && $this->_ip(getenv('HTTP_X_FORWARDED'))) ?
                 getenv('HTTP_X_FORWARDED') :
                  (getenv('HTTP_X_FORWARDED_HOST') && $this->_ip(getenv('HTTP_FORWARDED_HOST'))) ?
                    getenv('HTTP_X_FORWARDED_HOST') :
                     (getenv('HTTP_X_FORWARDED_SERVER') && $this->_ip(getenv('HTTP_X_FORWARDED_SERVER'))) ?
                       getenv('HTTP_X_FORWARDED_SERVER') :
                        (getenv('HTTP_X_CLUSTER_CLIENT_IP') && $this->_ip(getenv('HTTP_X_CLIUSTER_CLIENT_IP'))) ?
                          getenv('HTTP_X_CLUSTER_CLIENT_IP') :
                           getenv('REMOTE_ADDR');
 }

 /**
  * @function _ip
  * @abstract Attempts to determine if IP is non-routeable
  */
 function _ip($ip)
 {
  if (!empty($ip) && ip2long($ip)!=-1 && ip2long($ip)!=false){
   $nr = array(array('0.0.0.0','2.255.255.255'),
               array('10.0.0.0','10.255.255.255'),
               array('127.0.0.0','127.255.255.255'),
               array('169.254.0.0','169.254.255.255'),
               array('172.16.0.0','172.31.255.255'),
               array('192.0.2.0','192.0.2.255'),
               array('192.168.0.0','192.168.255.255'),
               array('255.255.255.0','255.255.255.255'));
   foreach($nr as $r){
    $min = ip2long($r[0]);
    $max = ip2long($r[1]);
    if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false;
   }
   return true;
  } else {
   return false;
  }
 }

 /**
  * @function _forwarded
  * @abstract A helper for HTTP_X_FORWARDED_FOR, loops over comma
  *           separated list of proxies associated with request
  */
 function _forwarded($l)
 {
  if (!empty($l)){
   foreach (explode(',', $l) as $i){
    if ($this->_ip(trim($i))) {
     return (!$this->_ip(trim($i))) ? false : $i;
    }
   }
  } else {
   return false;
  }
 }
}
?>