96 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Functions which are only in some versions of PHP,
 | |
|  * or only implemented on some platforms
 | |
|  *
 | |
|  * \privatesection
 | |
|  */
 | |
| 
 | |
| # (PHP 5 >= 5.2.1)
 | |
| # Based on http://www.phpit.net/
 | |
| # article/creating-zip-tar-archives-dynamically-php/2/
 | |
| if(!function_exists('sys_get_temp_dir')) {
 | |
| function sys_get_temp_dir() {
 | |
| 	// Try to get from environment variable
 | |
| 	if(!empty($_ENV['TMP'])) {
 | |
| 		return realpath($_ENV['TMP']);
 | |
| 	}
 | |
| 	else if(!empty($_ENV['TMPDIR'])) {
 | |
| 		return realpath($_ENV['TMPDIR']);
 | |
| 	}
 | |
| 	else if(!empty($_ENV['TEMP'])) {
 | |
| 		return realpath($_ENV['TEMP']);
 | |
| 	}
 | |
| 
 | |
| 	// Detect by creating a temporary file
 | |
| 	else {
 | |
| 		// Try to use system's temporary directory
 | |
| 		// as random name shouldn't exist
 | |
| 		$temp_file = tempnam(md5(uniqid(rand(), TRUE)), '');
 | |
| 		if($temp_file) {
 | |
| 			$temp_dir = realpath(dirname($temp_file));
 | |
| 			unlink($temp_file);
 | |
| 			return $temp_dir;
 | |
| 		}
 | |
| 		else {
 | |
| 			return FALSE;
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| }
 | |
| 
 | |
| # (PHP >= 5.1)
 | |
| # from http://www.php.net/inet_pton
 | |
| if(!function_exists('inet_pton')) {
 | |
| function inet_pton($ip) {
 | |
|     # ipv4
 | |
|     if(strpos($ip, '.') !== FALSE) {
 | |
|         $ip = pack('N',ip2long($ip));
 | |
|     }
 | |
|     # ipv6
 | |
|     else if(strpos($ip, ':') !== FALSE) {
 | |
|         $ip = explode(':', $ip);
 | |
|         $res = str_pad('', (4*(8-count($ip))), '0000', STR_PAD_LEFT);
 | |
|         foreach($ip as $seg) {
 | |
|             $res .= str_pad($seg, 4, '0', STR_PAD_LEFT);
 | |
|         }
 | |
|         $ip = pack('H'.strlen($res), $res);
 | |
|     }
 | |
|     return $ip;
 | |
| }
 | |
| }
 | |
| 
 | |
| # (PHP >= 5.1)
 | |
| # from http://www.php.net/inet_ntop
 | |
| if(!function_exists('inet_ntop')) {
 | |
| function inet_ntop($ip) {
 | |
|     if (strlen($ip)==4) {
 | |
|         // ipv4
 | |
|         list(,$ip)=unpack('N',$ip);
 | |
|         $ip=long2ip($ip);
 | |
|     } elseif(strlen($ip)==16) {
 | |
|         // ipv6
 | |
|         $ip=bin2hex($ip);
 | |
|         $ip=substr(chunk_split($ip,4,':'),0,-1);
 | |
|         $ip=explode(':',$ip);
 | |
|         $res='';
 | |
|         foreach($ip as $seg) {
 | |
|             while($seg{0}=='0') $seg=substr($seg,1);
 | |
|             if ($seg!='') {
 | |
|                 $res.=($res==''?'':':').$seg;
 | |
|             } else {
 | |
|                 if (strpos($res,'::')===false) {
 | |
|                     if (substr($res,-1)==':') continue;
 | |
|                     $res.=':';
 | |
|                     continue;
 | |
|                 }
 | |
|                 $res.=($res==''?'':':').'0';
 | |
|             }
 | |
|         }
 | |
|         $ip=$res;
 | |
|     }
 | |
|     return $ip;
 | |
| }
 | |
| }
 | |
| ?>
 |