Login | ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/php_antispam/trunk/v4.inc.php
Revision: 2
Committed: Thu May 2 10:15:53 2019 UTC (9 months, 4 weeks ago) by daniel-marschall
File size: 3782 byte(s)
Log Message:
Initial release to SVN

File Contents

# Content
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 }
133
134 ?>