Subversion Repositories webcounter

Rev

Rev 3 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 daniel-mar 1
<?php
2
 
3
/*
4
 * PHP Counter mit Reloadsperre, Textdatenbank und Graphic-Libary (without Error Images)
7 daniel-mar 5
 * (C)Copyright 2010 - 2022 Daniel Marschall
6
 * Revision: 2022-01-09
3 daniel-mar 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;
7 daniel-mar 76
      else $h = 0; // should not happen
3 daniel-mar 77
 
78
      if ($h < 0) $h++;
79
      if ($h > 1) $h--;
80
   }
81
 
82
   return array($h, $s, $v);
83
}
84
 
85
function hsl2rgb($h, $s, $v) {
86
    if($s == 0) {
87
        $r = $g = $B = $v * 255;
88
    } else {
89
        $var_H = $h * 6;
90
        $var_i = floor( $var_H );
91
        $var_1 = $v * ( 1 - $s );
92
        $var_2 = $v * ( 1 - $s * ( $var_H - $var_i ) );
93
        $var_3 = $v * ( 1 - $s * (1 - ( $var_H - $var_i ) ) );
94
 
95
        if       ($var_i == 0) { $var_R = $v     ; $var_G = $var_3  ; $var_B = $var_1 ; }
96
        else if  ($var_i == 1) { $var_R = $var_2 ; $var_G = $v      ; $var_B = $var_1 ; }
97
        else if  ($var_i == 2) { $var_R = $var_1 ; $var_G = $v      ; $var_B = $var_3 ; }
98
        else if  ($var_i == 3) { $var_R = $var_1 ; $var_G = $var_2  ; $var_B = $v     ; }
99
        else if  ($var_i == 4) { $var_R = $var_3 ; $var_G = $var_1  ; $var_B = $v     ; }
100
        else                   { $var_R = $v     ; $var_G = $var_1  ; $var_B = $var_2 ; }
101
 
102
        $r = $var_R * 255;
103
        $g = $var_G * 255;
104
        $B = $var_B * 255;
105
    }    
106
    return array($r, $g, $B);
107
}
108
 
109
function imagehue(&$image, $angle) {
110
if (!is_numeric($angle)) return;
111
    if($angle % 360 == 0) return;
112
    $width = imagesx($image);
113
    $height = imagesy($image);
114
 
115
$imout = imagecreate($width, $height);
116
 
117
    for($x = 0; $x < $width; $x++) {
118
        for($y = 0; $y < $height; $y++) {
119
            $rgb = imagecolorat($image, $x, $y);
120
            $r = ($rgb >> 16) & 0xFF;
121
            $g = ($rgb >> 8) & 0xFF;
122
            $b = $rgb & 0xFF;            
123
            $alpha = ($rgb & 0x7F000000) >> 24;
124
            list($h, $s, $l) = rgb2hsl($r, $g, $b);
125
            $h += $angle / 360;
126
            if($h > 1) $h--;
127
            list($r, $g, $b) = hsl2rgb($h, $s, $l);
128
            imagesetpixel($imout, $x, $y, imagecolorallocatealpha($imout, $r, $g, $b, $alpha));
129
        }
130
    }
131
 
132
        imagedestroy($image);
133
        $image = $imout;
134
}
135
 
136
/**
137
 * TRUE if any tag matched
138
 * FALSE if none matched
139
 * NULL if header is not specified
140
 * http://stackoverflow.com/questions/2086712/http-if-none-match-and-if-modified-since-and-304-clarification-in-php
141
 */
142
function anyTagMatched($myTag) {
143
    $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?
144
        stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) :
145
        false ;
146
 
147
    if( false !== $if_none_match ) {
148
        $tags = explode( ", ", $if_none_match ) ;
149
        foreach( $tags as $tag ) {
150
            if( $tag == $myTag ) return true ;
151
        }
152
        return false ;
153
    }
154
    return null ;
155
}
156