Subversion Repositories webcounter

Rev

Rev 3 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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