Subversion Repositories webcounter

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. /*
  4.  * PHP Counter mit Reloadsperre, Textdatenbank und Graphic-Libary (without Error Images)
  5.  * (C)Copyright 2010 - 2019 Daniel Marschall
  6.  * Revision: 2019-02-18
  7.  */
  8.  
  9. function pdox_execute($statement, $args=array()) {
  10.         if (!$statement->execute($args)) {
  11.                 echo "SQL Error <br />";
  12.                 echo $statement->queryString."<br />";
  13.                 echo $statement->errorInfo()[2];
  14.                 die();
  15.         }
  16. }
  17.  
  18. function fetchip() {
  19.         return md5($_SERVER['REMOTE_ADDR']); // masked IP wegen DSGVO Kacke
  20.  
  21.         // Das ist alles Quatsch! Dann kann man die IP ja fälschen
  22.         /*
  23.         // Source: http://lists.phpbar.de/pipermail/php/Week-of-Mon-20040322/007749.html
  24.  
  25.         $client_ip = (isset($_SERVER['HTTP_CLIENT_IP'])) ? $_SERVER['HTTP_CLIENT_IP'] : '';
  26.         $x_forwarded_for = (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : '';
  27.         $remote_addr = (isset($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : '';
  28.  
  29.         if (!empty($client_ip)) {
  30.                 $ip_expl = explode('.', $client_ip);
  31.                 $referer = explode('.', $remote_addr);
  32.                 if($referer[0] != $ip_expl[0]) {
  33.                         $ip = array_reverse($ip_expl);
  34.                         $return = implode('.', $ip);
  35.                 } else {
  36.                         $return = $client_ip;
  37.                 }
  38.         } else if (!empty($x_forwarded_for)) {
  39.                 if (strstr($x_forwarded_for, ',')) {
  40.                         $ip_expl = explode(',', $x_forwarded_for);
  41.                         $return = end($ip_expl);
  42.                 }
  43.         } else {
  44.                 $return = $remote_addr;
  45.         }
  46.         unset ($client_ip, $x_forwarded_for, $remote_addr, $ip_expl);
  47.         return $return;
  48.         */
  49. }
  50.  
  51.  
  52. function rgb2hsl($r, $g, $b) {
  53.    $var_R = ($r / 255);
  54.    $var_G = ($g / 255);
  55.    $var_B = ($b / 255);
  56.  
  57.    $var_Min = min($var_R, $var_G, $var_B);
  58.    $var_Max = max($var_R, $var_G, $var_B);
  59.    $del_Max = $var_Max - $var_Min;
  60.  
  61.    $v = $var_Max;
  62.  
  63.    if ($del_Max == 0) {
  64.       $h = 0;
  65.       $s = 0;
  66.    } else {
  67.       $s = $del_Max / $var_Max;
  68.  
  69.       $del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  70.       $del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  71.       $del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  72.  
  73.       if      ($var_R == $var_Max) $h = $del_B - $del_G;
  74.       else if ($var_G == $var_Max) $h = ( 1 / 3 ) + $del_R - $del_B;
  75.       else if ($var_B == $var_Max) $h = ( 2 / 3 ) + $del_G - $del_R;
  76.  
  77.       if ($h < 0) $h++;
  78.       if ($h > 1) $h--;
  79.    }
  80.  
  81.    return array($h, $s, $v);
  82. }
  83.  
  84. function hsl2rgb($h, $s, $v) {
  85.     if($s == 0) {
  86.         $r = $g = $B = $v * 255;
  87.     } else {
  88.         $var_H = $h * 6;
  89.         $var_i = floor( $var_H );
  90.         $var_1 = $v * ( 1 - $s );
  91.         $var_2 = $v * ( 1 - $s * ( $var_H - $var_i ) );
  92.         $var_3 = $v * ( 1 - $s * (1 - ( $var_H - $var_i ) ) );
  93.  
  94.         if       ($var_i == 0) { $var_R = $v     ; $var_G = $var_3  ; $var_B = $var_1 ; }
  95.         else if  ($var_i == 1) { $var_R = $var_2 ; $var_G = $v      ; $var_B = $var_1 ; }
  96.         else if  ($var_i == 2) { $var_R = $var_1 ; $var_G = $v      ; $var_B = $var_3 ; }
  97.         else if  ($var_i == 3) { $var_R = $var_1 ; $var_G = $var_2  ; $var_B = $v     ; }
  98.         else if  ($var_i == 4) { $var_R = $var_3 ; $var_G = $var_1  ; $var_B = $v     ; }
  99.         else                   { $var_R = $v     ; $var_G = $var_1  ; $var_B = $var_2 ; }
  100.  
  101.         $r = $var_R * 255;
  102.         $g = $var_G * 255;
  103.         $B = $var_B * 255;
  104.     }    
  105.     return array($r, $g, $B);
  106. }
  107.  
  108. function imagehue(&$image, $angle) {
  109. if (!is_numeric($angle)) return;
  110.     if($angle % 360 == 0) return;
  111.     $width = imagesx($image);
  112.     $height = imagesy($image);
  113.  
  114. $imout = imagecreate($width, $height);
  115.  
  116.     for($x = 0; $x < $width; $x++) {
  117.         for($y = 0; $y < $height; $y++) {
  118.             $rgb = imagecolorat($image, $x, $y);
  119.             $r = ($rgb >> 16) & 0xFF;
  120.             $g = ($rgb >> 8) & 0xFF;
  121.             $b = $rgb & 0xFF;            
  122.             $alpha = ($rgb & 0x7F000000) >> 24;
  123.             list($h, $s, $l) = rgb2hsl($r, $g, $b);
  124.             $h += $angle / 360;
  125.             if($h > 1) $h--;
  126.             list($r, $g, $b) = hsl2rgb($h, $s, $l);
  127.             imagesetpixel($imout, $x, $y, imagecolorallocatealpha($imout, $r, $g, $b, $alpha));
  128.         }
  129.     }
  130.  
  131.         imagedestroy($image);
  132.         $image = $imout;
  133. }
  134.  
  135. /**
  136.  * TRUE if any tag matched
  137.  * FALSE if none matched
  138.  * NULL if header is not specified
  139.  * http://stackoverflow.com/questions/2086712/http-if-none-match-and-if-modified-since-and-304-clarification-in-php
  140.  */
  141. function anyTagMatched($myTag) {
  142.     $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?
  143.         stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) :
  144.         false ;
  145.  
  146.     if( false !== $if_none_match ) {
  147.         $tags = explode( ", ", $if_none_match ) ;
  148.         foreach( $tags as $tag ) {
  149.             if( $tag == $myTag ) return true ;
  150.         }
  151.         return false ;
  152.     }
  153.     return null ;
  154. }
  155.  
  156.