test2

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
Ultima revisioneEntrambe le parti successive la revisione
test2 [2014/08/16 16:31] – creata Daniele Neronitest2 [2019/07/23 12:32] Daniele Neroni
Linea 1: Linea 1:
-<?php +~~CLOUD~~
-if (defined('PHPWG_ROOT_PATH')) return; /* Avoid direct usage under Piwigo */ +
-if (!defined('PWGP_NAME')) return; /* Avoid unpredicted access */ +
-//error_reporting(E_ALL); +
-if (!isset($pwg_mode)) $pwg_mode = ''; // Remind which process is working well +
-$pwg_prev_host = ''; // Remind last requested gallery +
  
-function pwg_get_contents($url, $mode='', $timeout=5) { 
  
- global $pwg_mode, $pwg_prev_host; 
  
- $host = (strtolower(substr($url,0,7)) == 'http://') ? substr($url,7) : $url; 
- $host = (strtolower(substr($host,0,8)) == 'https://') ? substr($host,8) : $host; 
- $doc = substr($host, strpos($host, '/')); 
- $host = substr($host, 0, strpos($host, '/')); 
- 
- if ($pwg_prev_host != $host) $pwg_mode = ''; // What was possible with one website could be different with another 
- $pwg_prev_host = $host; 
- if ($mode == '') $mode = $pwg_mode; // Can be forced by the requester 
- // $mode = 'fs'; // Test purpose only =>  '' all, 'fs' fsockopen, 'ch' cURL 
- echo "\n <!-- *** PiwigoPress Getmode = " . $mode . " *** -->\n"; 
-// 1 - The simplest solution: file_get_contents 
-// Contraint: php.ini 
-//      ; Whether to allow the treatment of URLs (like http:// or ftp://) as files. 
-//      allow_url_fopen = On 
- if ( $mode == '' and true === (bool) ini_get('allow_url_fopen') ) {  
- $value = @file_get_contents($url); 
- if ( $value !== false) return $value; 
- } 
- if ( $mode == '' ) $mode = 'fs'; 
-// 2 - Often accepted access: fsockopen 
- if ($mode == 'fs') { 
- $fs = @fsockopen($host, 80, $errno, $errstr, $timeout); 
- if ( $fs !== false ) {  
- fwrite($fs, 'GET ' . $doc . " HTTP/1.1\r\n"); 
- fwrite($fs, 'Host: ' . $host . "\r\n"); 
- fwrite($fs, "Connection: Close\r\n\r\n"); 
- stream_set_blocking($fs, TRUE); 
- stream_set_timeout($fs,$timeout); // Again the $timeout on the get 
- $info = stream_get_meta_data($fs); 
- $value = ''; 
- while ((!feof($fs)) && (!$info['timed_out'])) { 
- $value .= fgets($fs, 4096); 
- $info = stream_get_meta_data($fs); 
- flush(); 
- } 
- $value = substr($value, strpos($value,'a:2:{s:4:"stat";')); 
- $pwg_mode = 'fs'; 
- if ( $info['timed_out'] === false ) return $value; 
- } 
- } 
-// 3 - Sometime another solution: curl_exec 
-// See http://fr2.php.net/manual/en/curl.installation.php 
- if ($mode !== 'Err' and function_exists('curl_init')) { 
- $ch = @curl_init(); 
- @curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
- @curl_setopt($ch, CURLOPT_URL, $url); 
- @curl_setopt($ch, CURLOPT_HEADER, 1); 
- @curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); 
- @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
- @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
- $value = @curl_exec($ch); 
- $header_length = @curl_getinfo($ch, CURLINFO_HEADER_SIZE); 
- $status = @curl_getinfo($ch, CURLINFO_HTTP_CODE); 
- @curl_close($value); 
- if ($value !== false and $status >= 200 and $status < 400) { 
- $value = substr($value, $header_length); 
- $pwg_mode = 'ch'; 
- return $value; 
- } 
- } 
- // No other solutions 
- $return["stat"] = 'failed'; 
- if ($mode !== 'Err') {  
- echo "\n <!== PiwigoPress_get: failed on file_get, fsockopen and cURL processes "  
- . "- No solution available on this website with its current configuration ==>\n"; 
- } 
- $pwg_mode = 'Err'; 
- return serialize($return); 
-} 
-?> 
  • Ultima modifica: 2021/05/14 21:31