Login | ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/php_antispam/trunk/v4.inc.php
(Generate patch)

Comparing trunk/v4.inc.php (file contents):
Revision 2 by daniel-marschall, Thu May 2 10:15:53 2019 UTC vs.
Revision 5 by daniel-marschall, Sat Jan 8 23:46:35 2022 UTC

# Line 1 | Line 1
1 < <?php
2 <
3 < /*
4 < * ViaThinkSoft Anti-Spam Script for PHP
5 < * (C) 2009-2013 ViaThinkSoft
6 < * Revision: 2013-03-04 (Version 4.01)
7 < */
8 <
9 < function secure_email($email, $linktext, $crypt_linktext)
10 < {
11 <        // No new lines to avoid a JavaScript error!
12 <        $linktext = str_replace("\r", ' ', $linktext);
13 <        $linktext = str_replace("\n", ' ', $linktext);
14 <
15 <        if (!defined('ALAS_INCLUDED')) {
16 <                // Anfagswert über aktuelle Mikrosekunde setzen
17 <                // http://de2.php.net/manual/de/function.srand.php
18 <                function make_seed() {
19 <                        list($usec, $sec) = explode(' ', microtime());
20 <                        return (float) $sec + ((float) $usec * 100000);
21 <                }
22 <                srand(make_seed());
23 <
24 <                define('ALAS_GARBARGE_LENGTH', 5);
25 <
26 <                // http://www.jonasjohn.de/snippets/php/rand-str.htm
27 <                function RandomString($len) {
28 <                        $randstr = '';
29 <                        srand((double)microtime()*1000000);
30 <                        for($i=0;$i<$len;$i++) {
31 <                                $n = rand(48,120);
32 <                                while (($n >= 58 && $n <= 64) || ($n >= 91 && $n <= 96)) {
33 <                                        $n = rand(48,120);
34 <                                }
35 <                                $randstr .= chr($n);
36 <                        }
37 <                        return $randstr;
38 <                }
39 <
40 <                function js_randombreaks() {
41 <                        $len = rand(0, ALAS_GARBARGE_LENGTH);
42 <                        $r = '';
43 <                        $one_line_comment = false;
44 <                        for($i=0;$i<$len;$i++) {
45 <                                $m = rand(0, 3);
46 <                                if ($m == 0) {
47 <                                        $r .= ' ';
48 <                                } else if ($m == 1) {
49 <                                        $r .= '//';
50 <                                        $r .= RandomString($i);
51 <                                        $one_line_comment = true;
52 <                                } else if ($m == 2) {
53 <                                        $r .= "\r\n";
54 <                                        $one_line_comment = false;
55 <                                } else {
56 <                                        $r .= "\t";
57 <                                }
58 <                        }
59 <                        if ($one_line_comment) $r .= "\r\n";
60 <                        return $r;
61 <                }
62 <
63 <                function alas_js_crypt($text) {
64 <                        $tmp = '';
65 <                        for ($i=0; $i<strlen($text); $i++) {
66 <                                $tmp .= js_randombreaks();
67 <                                $tmp .= 'document.write("&#'.ord(substr($text, $i, 1)).';");';
68 <                                $tmp .= js_randombreaks();
69 <                        }
70 <                        $tmp = js_randombreaks().$tmp.js_randombreaks();
71 <                        return $tmp;
72 <                }
73 <
74 <                function alas_noscript_crypt($text){
75 <                        $tmp = '';
76 <                        for ($i=0; $i<strlen($text); $i++) {
77 <                                $tmp .= '<span style="display:inline;">&#'.ord(substr($text, $i, 1)).';</span>';
78 <                                $tmp .= '<!--'.js_randombreaks().'-->';
79 <                                $tmp .= '<span style="display:none;">'.RandomString(rand(0, ALAS_GARBARGE_LENGTH)).'</span>';
80 <                        }
81 <                        return $tmp;
82 <                }
83 <
84 <                function alas_js_write($text) {
85 <                        $text = str_replace('\\', '\\\\', $text);
86 <                        $text = str_replace('"', '\"', $text);
87 <                        $text = str_replace('/', '\/', $text); // W3C Validation </a> -> <\/a>
88 <
89 <                        $ret  = '';
90 <                        $ret .= js_randombreaks();
91 <                        $ret .= 'document.write("'.$text.'");';
92 <                        $ret .= js_randombreaks();
93 <
94 <                        return $ret;
95 <                }
96 <
97 <                define('ALAS_INCLUDED', true);
98 <        }
99 <
100 <        $aus = '';
101 <        if ($email != '') {
102 <                $zid  = 'ALAS-4.0-'.DecHex(crc32($email)).'-'.DecHex(crc32($linktext)).'-'.($crypt_linktext ? 'S' : 'L');
103 <                $title = 'ViaThinkSoft "ALAS" Anti-Spam';
104 <
105 <                $aus .= "<!-- BEGIN $title [ID $zid] -->\r\n";
106 <                $aus .= '<script language="JavaScript" type="text/javascript"><!--'."\n";
107 <                $aus .= alas_js_write('<a href="');
108 <                $aus .= alas_js_crypt('mailto:'.$email);
109 <                $aus .= alas_js_write('">');
110 <                $aus .= $crypt_linktext ? alas_js_crypt($linktext) : alas_js_write($linktext);
111 <                $aus .= alas_js_write('</a>').'// --></script>';
112 <
113 <                $aus .= '<noscript>';
114 <                if ($linktext != $email) $aus .= ($crypt_linktext ? alas_noscript_crypt($linktext) : $linktext).' ';
115 <                $aus .= alas_noscript_crypt("[ $email ]");
116 <                $aus .= '</noscript>';
117 <                $aus .= "\r\n<!-- END $title [ID $zid] -->\r\n";
118 <        }
119 <
120 <        return $aus;
1 > <?php
2 >
3 > /*
4 > * ViaThinkSoft Anti-Spam Script for PHP
5 > * (C) 2009-2013 ViaThinkSoft
6 > * Revision: 2013-03-04 (Version 4.01)
7 > */
8 >
9 > function secure_email($email, $linktext, $crypt_linktext)
10 > {
11 >        // No new lines to avoid a JavaScript error!
12 >        $linktext = str_replace("\r", ' ', $linktext);
13 >        $linktext = str_replace("\n", ' ', $linktext);
14 >
15 >        if (!defined('ALAS_INCLUDED')) {
16 >                // Anfagswert über aktuelle Mikrosekunde setzen
17 >                // http://de2.php.net/manual/de/function.srand.php
18 >                function make_seed() {
19 >                        list($usec, $sec) = explode(' ', microtime());
20 >                        return (float) $sec + ((float) $usec * 100000);
21 >                }
22 >                srand(make_seed());
23 >
24 >                define('ALAS_GARBARGE_LENGTH', 5);
25 >
26 >                // http://www.jonasjohn.de/snippets/php/rand-str.htm
27 >                function RandomString($len) {
28 >                        $randstr = '';
29 >                        srand((double)microtime()*1000000);
30 >                        for($i=0;$i<$len;$i++) {
31 >                                $n = rand(48,120);
32 >                                while (($n >= 58 && $n <= 64) || ($n >= 91 && $n <= 96)) {
33 >                                        $n = rand(48,120);
34 >                                }
35 >                                $randstr .= chr($n);
36 >                        }
37 >                        return $randstr;
38 >                }
39 >
40 >                function js_randombreaks() {
41 >                        $len = rand(0, ALAS_GARBARGE_LENGTH);
42 >                        $r = '';
43 >                        $one_line_comment = false;
44 >                        for($i=0;$i<$len;$i++) {
45 >                                $m = rand(0, 3);
46 >                                if ($m == 0) {
47 >                                        $r .= ' ';
48 >                                } else if ($m == 1) {
49 >                                        $r .= '//';
50 >                                        $r .= RandomString($i);
51 >                                        $one_line_comment = true;
52 >                                } else if ($m == 2) {
53 >                                        $r .= "\r\n";
54 >                                        $one_line_comment = false;
55 >                                } else {
56 >                                        $r .= "\t";
57 >                                }
58 >                        }
59 >                        if ($one_line_comment) $r .= "\r\n";
60 >                        return $r;
61 >                }
62 >
63 >                function alas_js_crypt($text) {
64 >                        $tmp = '';
65 >                        for ($i=0; $i<strlen($text); $i++) {
66 >                                $tmp .= js_randombreaks();
67 >                                $tmp .= 'document.write("&#'.ord(substr($text, $i, 1)).';");';
68 >                                $tmp .= js_randombreaks();
69 >                        }
70 >                        $tmp = js_randombreaks().$tmp.js_randombreaks();
71 >                        return $tmp;
72 >                }
73 >
74 >                function alas_noscript_crypt($text){
75 >                        $tmp = '';
76 >                        for ($i=0; $i<strlen($text); $i++) {
77 >                                $tmp .= '<span style="display:inline;">&#'.ord(substr($text, $i, 1)).';</span>';
78 >                                $tmp .= '<!--'.js_randombreaks().'-->';
79 >                                $tmp .= '<span style="display:none;">'.RandomString(rand(0, ALAS_GARBARGE_LENGTH)).'</span>';
80 >                        }
81 >                        return $tmp;
82 >                }
83 >
84 >                function alas_js_write($text) {
85 >                        $text = str_replace('\\', '\\\\', $text);
86 >                        $text = str_replace('"', '\"', $text);
87 >                        $text = str_replace('/', '\/', $text); // W3C Validation </a> -> <\/a>
88 >
89 >                        $ret  = '';
90 >                        $ret .= js_randombreaks();
91 >                        $ret .= 'document.write("'.$text.'");';
92 >                        $ret .= js_randombreaks();
93 >
94 >                        return $ret;
95 >                }
96 >
97 >                define('ALAS_INCLUDED', true);
98 >        }
99 >
100 >        $aus = '';
101 >        if ($email != '') {
102 >                $zid  = 'ALAS-4.0-'.DecHex(crc32($email)).'-'.DecHex(crc32($linktext)).'-'.($crypt_linktext ? 'S' : 'L');
103 >                $title = 'ViaThinkSoft "ALAS" Anti-Spam';
104 >
105 >                $aus .= "<!-- BEGIN $title [ID $zid] -->\r\n";
106 >                $aus .= '<script language="JavaScript" type="text/javascript"><!--'."\n";
107 >                $aus .= alas_js_write('<a href="');
108 >                $aus .= alas_js_crypt('mailto:'.$email);
109 >                $aus .= alas_js_write('">');
110 >                $aus .= $crypt_linktext ? alas_js_crypt($linktext) : alas_js_write($linktext);
111 >                $aus .= alas_js_write('</a>').'// --></script>';
112 >
113 >                $aus .= '<noscript>';
114 >                if ($linktext != $email) $aus .= ($crypt_linktext ? alas_noscript_crypt($linktext) : $linktext).' ';
115 >                $aus .= alas_noscript_crypt("[ $email ]");
116 >                $aus .= '</noscript>';
117 >                $aus .= "\r\n<!-- END $title [ID $zid] -->\r\n";
118 >        }
119 >
120 >        return $aus;
121 > }
122 >
123 > function secure_email_autodetect($email, $linktext) {
124 >        // Automatisch erkennen, ob der $linktext für Spambots interessant ist oder nicht
125 >        $pos = strpos($linktext, '@');
126 >
127 >        return secure_email($email, $linktext, $pos !== false);
128 > }
129 >
130 > function secure_email_identical_text($email) {
131 >        return secure_email_autodetect($email, $email);
132   }
122
123 function secure_email_autodetect($email, $linktext) {
124        // Automatisch erkennen, ob der $linktext für Spambots interessant ist oder nicht
125        $pos = strpos($linktext, '@');
126
127        return secure_email($email, $linktext, $pos !== false);
128 }
129
130 function secure_email_identical_text($email) {
131        return secure_email_autodetect($email, $email);
132 }
133
134 ?>

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines