Browse Source

GDPR: draft submitted to counsel

biotorrents 4 years ago
parent
commit
b9eaa7696d

+ 39
- 29
classes/cookie.class.php View File

@@ -1,47 +1,57 @@
1 1
 <?php
2
+declare(strict_types=1);
2 3
 
3
-/*************************************************************************|
4
-|--------------- Cookie class --------------------------------------------|
5
-|*************************************************************************|
4
+/**
5
+ * Cookie
6
+ *
7
+ * This class handles cookies.
8
+ * $Cookie->get() is user-provided and untrustworthy.
9
+ */
6 10
 
7
-This class handles cookies.
8
-
9
-$Cookie->get(); is user provided and untrustworthy
10
-
11
-|*************************************************************************/
12
-
13
-/*
14
-interface COOKIE_INTERFACE {
15
-  public function get($Key);
16
-  public function set($Key, $Value, $Seconds, $LimitAccess);
17
-  public function del($Key);
18
-
19
-  public function flush();
20
-}
21
-*/
22
-
23
-class COOKIE /*implements COOKIE_INTERFACE*/
11
+class COOKIE
24 12
 {
25
-    const LIMIT_ACCESS = true; // If true, blocks JS cookie API access by default (can be overridden case by case)
26
-    const PREFIX = ''; // In some cases you may desire to prefix your cookies
13
+    # In some cases you may desire to prefix your cookies
14
+    const PREFIX = '';
27 15
 
28 16
     public function get($Key)
29 17
     {
30
-        if (!isset($_COOKIE[SELF::PREFIX.$Key])) {
31
-            return false;
32
-        }
33
-        return $_COOKIE[SELF::PREFIX.$Key];
18
+        return (!isset($_COOKIE[SELF::PREFIX.$Key]))
19
+            ? false
20
+            : $_COOKIE[SELF::PREFIX.$Key];
34 21
     }
35 22
 
36 23
     // Pass the 4th optional param as false to allow JS access to the cookie
37
-    public function set($Key, $Value, $Seconds = 86400, $LimitAccess = SELF::LIMIT_ACCESS)
24
+    public function set($Key, $Value, $Seconds = 86400)
38 25
     {
39
-        setcookie(SELF::PREFIX.$Key, $Value, time() + $Seconds, '/', SITE_DOMAIN, $_SERVER['SERVER_PORT'] === '443', $LimitAccess, false);
26
+        $ENV = ENV::go();
27
+
28
+        setcookie(
29
+            SELF::PREFIX.$Key,
30
+            $Value,
31
+            [
32
+                'expires' => time() + $Seconds,
33
+                'path' => '/',
34
+                'domain' => $ENV->SITE_DOMAIN,
35
+                'secure' => true,
36
+                'httponly' => true,
37
+                'samesite' => 'Strict',
38
+            ]
39
+        );
40 40
     }
41 41
 
42 42
     public function del($Key)
43 43
     {
44
-        setcookie(SELF::PREFIX.$Key, '', time() - 24 * 3600); //3600 vs 1 second to account for potential clock desyncs
44
+        # 3600s vs. 1s for potential clock desyncs
45
+        setcookie(
46
+            SELF::PREFIX.$Key,
47
+            '',
48
+            [
49
+                'expires' => time() - 24 * 3600,
50
+                'secure' => true,
51
+                'httponly' => true,
52
+                'samesite' => 'Strict',
53
+            ]
54
+        );
45 55
     }
46 56
 
47 57
     public function flush()

+ 10
- 2
sections/donate/donate.php View File

@@ -50,7 +50,11 @@ View::show_header('Donate');
50 50
     <ul>
51 51
       <li>
52 52
         <strong>Server.</strong>
53
-        We currently use one budget VPS at 2.50€ per month, and can add more as needed.
53
+        We use one budget VPS at 2.50€ per month and may add more as needed.
54
+        Please consider using our
55
+        <a href="https://hetzner.cloud/?ref=mzIDQWTHipNB" target="_blank">affiliate link</a>.
56
+        You'd receive 20€ credit, effectively paying your server for 8 months.
57
+        BioTorrents would receive 10€ credit after a year, paying our server for 4 months.
54 58
       </li>
55 59
 
56 60
       <li>
@@ -70,7 +74,8 @@ View::show_header('Donate');
70 74
       <li>
71 75
         <strong>Company.</strong>
72 76
         Omics Tools LLC is <?= $ENV->SITE_NAME ?>'s parent company.
73
-        It's $50 per year in filing fees and $125 for resident agent services.
77
+        It's $50 per year for annual reports and $125 for resident agent services.
78
+        Also, DMCA agent registration is $6.
74 79
       </li>
75 80
     </ul>
76 81
   </div>
@@ -126,6 +131,9 @@ View::show_header('Donate');
126 131
       including <strong>Bitcoin</strong> and other cryptocurrencies:
127 132
       Monero, Litecoin, and Curecoin.
128 133
       <strong>PayPal</strong> and <strong>USPS money orders</strong> are also options.
134
+    </p>
135
+
136
+    <p>
129 137
       Please use
130 138
       <a href="https://pgp.mit.edu/pks/lookup?op=get&search=0x760EBED7CFE266D7" target="_blank">GPG 760EBED7CFE266D7</a>
131 139
       if you wish.

+ 4
- 3
sections/legal/dmca.php View File

@@ -8,9 +8,9 @@ View::show_header('DMCA');
8 8
 
9 9
 <section class="tldr">
10 10
   <p>
11
-    <em>If</em> you're a copyright owner or agent thereof,
12
-    <em>and</em> you believe that user-generated content (UGC) on the domain https://biotorrents.de infringes your
13
-    copyrights:
11
+    <em>If</em> you're a copyright owner or agent of one,
12
+    <em>and</em> you believe that user-generated content (UGC) on the domain
13
+    https://biotorrents.de infringes your copyrights:
14 14
     <em>then</em> you may notify our Digital Millennium Copyright Act (DMCA) agent in writing.
15 15
   </p>
16 16
 
@@ -135,6 +135,7 @@ View::show_header('DMCA');
135 135
     <a href="https://www.law.cornell.edu/uscode/text/17/512">17 USC 512(f)</a>,
136 136
     anyone who knowingly materially misrepresents infringement may be subject to liability.
137 137
     Also see
138
+    <a href="https://www.law.cornell.edu/uscode/text/17/107">17 USC 107</a> and
138 139
     <a href="https://www.law.cornell.edu/uscode/text/17/108">17 USC 108</a>.
139 140
   </p>
140 141
 

+ 191
- 66
sections/legal/privacy.php View File

@@ -1,135 +1,260 @@
1 1
 <?php
2 2
 declare(strict_types=1);
3 3
 
4
-View::show_header('Privacy');
5
-?>
4
+View::show_header('Privacy'); ?>
6 5
 
7 6
 <h2>Privacy Policy</h2>
8 7
 
9 8
 <section class="tldr">
10
-  <p>
11
-    At BioTorrents.de, accessible from https://biotorrents.de, one of our main priorities is the privacy of our
12
-    visitors.
13
-    This Privacy Policy document contains types of information that is collected and recorded by BioTorrents.de and how
14
-    we use it.
15
-  </p>
16 9
 
17 10
   <p>
18
-    If you have additional questions or require more information about our Privacy Policy, do not hesitate to contact
19
-    us.
11
+    This policy explains how Omics Tools LLC handles the personal data we collect from you when you use our website.
12
+    You grant consent on account registration by checking the box that reads,
13
+    "I consent to the privacy policy and may revoke my consent at any time."
20 14
   </p>
21 15
 
22 16
 
23
-  <h3>General Data Protection Regulation (GDPR)</h3>
17
+  <h3>
18
+    Data collection: what and how
19
+  </h3>
20
+
21
+  <p>
22
+    We collect usernames, email addresses, GPG keys,
23
+    passphrases, API keys, site activity and preferences,
24
+    IP addresses, and server error logs.
25
+  </p>
24 26
 
25 27
   <p>
26
-    We are a Data Controller of your information.
28
+    We don't collect access logs or compile personal data for any commercial reason.
29
+    Also, we explicitly deny all known browser features, including not limited:
30
+    camera, microphone, sensors, wake-lock, USB, encrypted media, autoplay, etc.
27 31
   </p>
28 32
 
29 33
   <p>
30
-    BioTorrents.de's legal basis for collecting and using the personal information described in this Privacy Policy
31
-    depends on the Personal Information we collect and the specific context in which we collect the information:
34
+    You directly provide us with most of the data we collect.
35
+    We collect and process your personal data when you
32 36
   </p>
33 37
 
34 38
   <ul>
35
-    <li>BioTorrents.de needs to perform a contract with you</li>
36
-    <li>You have given BioTorrents.de permission to do so</li>
37
-    <li>Processing your personal information is in BioTorrents.de's legitimate interests</li>
38
-    <li>BioTorrents.de needs to comply with the law</li>
39
+    <li>
40
+      register online for our services,
41
+    </li>
42
+
43
+    <li>
44
+      query the tracker for BitTorrent peers,
45
+    </li>
46
+
47
+    <li>
48
+      participate in our forums and chat rooms, and
49
+    </li>
50
+
51
+    <li>
52
+      use our website with cookies or API keys.
53
+    </li>
39 54
   </ul>
55
+  <br />
56
+
57
+
58
+  <h3>
59
+    Data use and storage
60
+  </h3>
40 61
 
41 62
   <p>
42
-    BioTorrents.de will retain your personal information only for as long as is necessary for the purposes set out in
43
-    this Privacy Policy.
44
-    We will retain and use your information to the extent necessary to comply with our legal obligations, resolve
45
-    disputes, and enforce our policies.
63
+    We only use your data to manage your account and administer the site.
64
+    We never sell or otherwise provide data to third parties, except under subpoena.
46 65
   </p>
47 66
 
48 67
   <p>
49
-    If you are a resident of the European Economic Area (EEA), you have certain data protection rights.
50
-    If you wish to be informed what Personal Information we hold about you and if you want it to be removed from our
51
-    systems, please contact us.
68
+    All data read, written, or deleted under this policy will only be managed by SQL queries,
69
+    and any data returned will only be provided as database dumps.
52 70
   </p>
53 71
 
54 72
   <p>
55
-    In certain circumstances, you have the following data protection rights:
73
+    We securely store your data in our hardened MariaDB instance.
74
+    Only Unix socket connections are allowed, and certain services like IRC are denied.
75
+    Database tools aren't accessible on the public internet.
56 76
   </p>
57 77
 
58
-  <ul>
59
-    <li>The right to access, update or to delete the information we have on you</li>
60
-    <li>The right of rectification</li>
61
-    <li>The right to object</li>
62
-    <li>The right of restriction</li>
63
-    <li>The right to data portability</li>
64
-    <li>The right to withdraw consent</li>
65
-  </ul><br />
78
+  <p>
79
+    Email and IP addresses, and private messages between users,
80
+    are encrypted and then decrypted in memory.
81
+    Certain data is hashed before storage and therefore unrecoverable,
82
+    including passphrases and API keys.
83
+    Please don't request ciphertext.
84
+  </p>
85
+
86
+  <p>
87
+    We'll keep your data for your account's lifetime.
88
+    Once this period expires, we'll delete your data by written request.
89
+  </p>
90
+
91
+
92
+  <h3>
93
+    GDPR data protection rights
94
+  </h3>
66 95
 
96
+  <p>
97
+    We'd like to make sure you're fully aware of your data protection rights.
98
+    Every user is entitled to GDPR protections regardless of their jurisdiction:
99
+  </p>
67 100
 
68
-  <h3>Log Files</h3>
101
+  <ul class="p">
102
+    <li>
103
+      <strong>Access.</strong>
104
+      You have the right to request copies of your personal data.
105
+      We may charge a small fee for this service.
106
+    </li>
107
+
108
+    <li>
109
+      <strong>Rectification.</strong>
110
+      You have the right to request that we correct what you believe is inaccurate,
111
+      and to request that we complete what you believe is not.
112
+    </li>
113
+
114
+    <li>
115
+      <strong>Erasure.</strong>
116
+      You have the right to request that we erase your personal data, under certain conditions.
117
+    </li>
118
+
119
+    <li>
120
+      <strong>Restrict Processing.</strong>
121
+      You have the right to request that we restrict processing your personal data,
122
+      under certain conditions.
123
+    </li>
124
+
125
+    <li>
126
+      <strong>Object to Processing.</strong>
127
+      You have the right to object to our processing your personal data, under certain conditions.
128
+    </li>
129
+
130
+    <li>
131
+      <strong>Data Portability.</strong>
132
+      You have the right to request that we transfer data we've collected to you or others,
133
+      under certain conditions.
134
+    </li>
135
+  </ul>
69 136
 
70 137
   <p>
71
-    BioTorrents.de only logs server errors.
72
-    The information collected by log files include internet protocol (IP) addresses, browser type, date and time stamp,
73
-    and referring/exit pages.
74
-    These are not linked to any information that is personally identifiable.
75
-    The purpose of the information is for administering the site.
138
+    If you make a request, we have one month to respond.
139
+    Please contact us if you'd like to exercise any of these rights.
76 140
   </p>
77 141
 
78 142
 
79
-  <h3>Cookies and Web Beacons</h3>
143
+  <h3>
144
+    Cookies: what and how
145
+  </h3>
146
+
147
+  <p>
148
+    Cookies are text files placed on your computer to store functional information.
149
+    When you log into our website, we save cookies to your browser's local storage.
150
+  </p>
151
+
152
+  <p>
153
+    We strongly encourage you to use an updated browser with sandboxed tabs,
154
+    and to set your browser to deny disk permissions and to wipe transient data on shutdown.
155
+  </p>
80 156
 
81 157
   <p>
82
-    Like any other website, BioTorrents.de uses "cookies."
83
-    These cookies are used to store information including visitors' preferences, and the pages on the website that the
84
-    visitor accessed or visited.
85
-    The information is used to optimize the users' experience by customizing our web page content based on visitors'
86
-    browser type and/or other information.
158
+    We use cookies to keep you signed in.
159
+    Our secure session cookie parameters include
87 160
   </p>
88 161
 
162
+  <ul>
163
+    <li>
164
+      one-day expiry time,
165
+    </li>
166
+
167
+    <li>
168
+      scoped to https://biotorrents.de,
169
+    </li>
170
+
171
+    <li>
172
+      TLS 1.2+ transmission only,
173
+    </li>
89 174
 
90
-  <h3>Third Party Privacy Policies</h3>
175
+    <li>
176
+      unavailable to JavaScript APIs, and
177
+    </li>
178
+
179
+    <li>
180
+      strict same-origin policy.
181
+    </li>
182
+  </ul>
91 183
 
92 184
   <p>
93
-    BioTorrents.de's Privacy Policy does not apply to other advertisers or websites.
94
-    Thus, we are advising you to consult the respective Privacy Policies of these third-party ad servers for more
95
-    detailed information.
96
-    It may include their practices and instructions about how to opt-out of certain options.
185
+    You can set your browser to deny cookies
186
+    but our website won't function as intended.
97 187
   </p>
98 188
 
189
+
190
+  <h3>
191
+    Other websites' policies
192
+  </h3>
193
+
99 194
   <p>
100
-    You can choose to disable cookies through your individual browser options.
101
-    To know more detailed information about cookie management with specific web browsers, it can be found at the
102
-    browsers' respective websites.
195
+    BioTorrents.de links to other websites.
196
+    Our privacy policy only applies to our website.
197
+    If you click an external link, please read their privacy policy.
103 198
   </p>
104 199
 
105 200
 
106
-  <h3>Children's Information</h3>
201
+  <h3>
202
+    Changes to our policy
203
+  </h3>
107 204
 
108 205
   <p>
109
-    Another part of our priority is adding protection for children while using the internet.
110
-    We encourage parents and guardians to observe, participate in, and/or monitor and guide their online activity.
206
+    We regularly review our policy and publish updates here.
207
+    Updates will usually describe new security developments.
208
+    We last updated this policy on 2021-02-11.
111 209
   </p>
112 210
 
211
+
212
+  <h3>
213
+    How to contact us
214
+  </h3>
215
+
113 216
   <p>
114
-    BioTorrents.de does not knowingly collect any Personal Identifiable Information from children under the age of 13.
115
-    If you think that your child provided this kind of information on our website, we strongly encourage you to contact
116
-    us immediately and we will do our best efforts to promptly remove such information from our records.
217
+    If you have any questions about our policy,
218
+    the data we hold on you,
219
+    or you'd like to exercise one of your data protection rights,
220
+    please don't hesitate to contact us.
117 221
   </p>
118 222
 
223
+  <p>
224
+    <strong>
225
+      Address
226
+    </strong>
227
+    <br />
228
+
229
+    Data Protection Officer<br />
230
+    Omics Tools LLC<br />
231
+    30 N Gould St Ste 4000<br />
232
+    Sheridan, WY 82801
233
+  </p>
119 234
 
120
-  <h3>Online Privacy Policy Only</h3>
235
+  <p>
236
+    <strong>
237
+      Email
238
+    </strong>
239
+    <br />
240
+    gdpr at biotorrents dot de
241
+  </p>
121 242
 
122 243
   <p>
123
-    Our Privacy Policy applies only to our online activities and is valid for visitors to our website with regards to
124
-    the information that they shared and/or collect in BioTorrents.de.
125
-    This policy is not applicable to any information collected offline or via channels other than this website.
244
+    Please use
245
+    <a href="https://pgp.mit.edu/pks/lookup?op=get&search=0x760EBED7CFE266D7" target="_blank">GPG 760EBED7CFE266D7</a>
246
+    if you wish.
126 247
   </p>
127 248
 
128 249
 
129
-  <h3>Consent</h3>
250
+  <h3>
251
+    How to contact the appropriate authority
252
+  </h3>
130 253
 
131 254
   <p>
132
-    By using our website, you hereby consent to our Privacy Policy and agree to its terms.
255
+    Should you wish to report a complaint,
256
+    or if you feel that we haven't satisfactorily addressed your concerns,
257
+    contact the Information Commissioner's Office.
133 258
   </p>
134 259
 </section>
135 260
 

+ 21
- 27
sections/register/index.php View File

@@ -7,10 +7,9 @@ $ENV = ENV::go();
7 7
 
8 8
 /*
9 9
 if (isset($LoggedUser)) {
10
-
11
-  // Silly user, what are you doing here!
12
-  header('Location: index.php');
13
-  error();
10
+    // Silly user, what are you doing here!
11
+    header('Location: index.php');
12
+    error();
14 13
 }
15 14
 */
16 15
 
@@ -35,14 +34,13 @@ if (!empty($_REQUEST['confirm'])) {
35 34
         include('step2.php');
36 35
     }
37 36
 } elseif ($ENV->OPEN_REGISTRATION || !empty($_REQUEST['invite'])) {
38
-    $Val->SetFields('username', true, 'regex', 'You did not enter a valid username.', array('regex' => USERNAME_REGEX));
39
-    $Val->SetFields('email', true, 'email', 'You did not enter a valid email address.');
40
-    $Val->SetFields('password', true, 'regex', 'Your password must be at least 6 characters long.', array('regex'=>'/(?=^.{6,}$).*$/'));
41
-    $Val->SetFields('confirm_password', true, 'compare', 'Your passwords do not match.', array('comparefield' => 'password'));
42
-    $Val->SetFields('readrules', true, 'checkbox', 'You did not select the box that says you will read the rules.');
43
-    $Val->SetFields('readwiki', true, 'checkbox', 'You did not select the box that says you will read the wiki.');
44
-    $Val->SetFields('agereq', true, 'checkbox', 'You did not select the box that says you are 18 years of age or older.');
45
-    //$Val->SetFields('captcha', true, 'string', 'You did not enter a captcha code.', array('minlength' => 6, 'maxlength' => 6));
37
+    $Val->SetFields('username', true, 'regex', "You didn't enter a valid username.", array('regex' => USERNAME_REGEX));
38
+    $Val->SetFields('email', true, 'email', "You didn't enter a valid email address.");
39
+    $Val->SetFields('password', true, 'regex', "Your password was too short.", array('regex'=>'/(?=^.{6,}$).*$/'));
40
+    $Val->SetFields('confirm_password', true, 'compare', "Your passwords don't match.", array('comparefield' => 'password'));
41
+    $Val->SetFields('readrules', true, 'checkbox', "You didn't agree to read the rules and wiki.");
42
+    $Val->SetFields('readwiki', true, 'checkbox', "You didn't provide consent to the privacy policy.");
43
+    $Val->SetFields('agereq', true, 'checkbox', "You didn't confirm that you're of legal age.");
46 44
 
47 45
     if (!apcu_exists('DBKEY')) {
48 46
         $Err = "Registration temporarily disabled due to degraded database access (security measure).";
@@ -51,15 +49,11 @@ if (!empty($_REQUEST['confirm'])) {
51 49
     if (!empty($_POST['submit'])) {
52 50
         // User has submitted registration form
53 51
         $Err = $Val->ValidateForm($_REQUEST);
54
-        /*
55
-        if (!$Err && strtolower($_SESSION['captcha']) !== strtolower($_REQUEST['captcha'])) {
56
-          $Err = 'You did not enter the correct captcha code.';
57
-        }
58
-        */
52
+
59 53
         if (!$Err) {
60 54
             // Don't allow a username of "0" or "1" due to PHP's type juggling
61 55
             if (trim($_POST['username']) === '0' || trim($_POST['username']) === '1') {
62
-                $Err = 'You cannot have a username of "0" or "1."';
56
+                $Err = "You can't have a username of 0 or 1.";
63 57
             }
64 58
 
65 59
             $DB->query("
@@ -69,7 +63,7 @@ if (!empty($_REQUEST['confirm'])) {
69 63
             list($UserCount) = $DB->next_record();
70 64
 
71 65
             if ($UserCount) {
72
-                $Err = 'There is already someone registered with that username.';
66
+                $Err = "There's already someone registered with that username.";
73 67
                 $_REQUEST['username'] = '';
74 68
             }
75 69
 
@@ -79,7 +73,7 @@ if (!empty($_REQUEST['confirm'])) {
79 73
           FROM invites
80 74
           WHERE InviteKey = '".db_string($_REQUEST['invite'])."'");
81 75
                 if (!$DB->has_results()) {
82
-                    $Err = 'Invite does not exist.';
76
+                    $Err = "The invite code is invalid.";
83 77
                     $InviterID = 0;
84 78
                 } else {
85 79
                     list($InviterID, $InviteEmail, $InviteReason) = $DB->next_record(MYSQLI_NUM, false);
@@ -137,13 +131,13 @@ if (!empty($_REQUEST['confirm'])) {
137 131
         DELETE FROM invites
138 132
         WHERE InviteKey = '".db_string($_REQUEST['invite'])."'");
139 133
 
140
-	    // Award invite badge to inviter if they don't have it
141
-	    /*
142
-            if (Badges::award_badge($InviterID, 136)) {
143
-                Misc::send_pm($InviterID, 0, 'You have received a badge!', "You have received a badge for inviting a user to the site.\n\nIt can be enabled from your user settings.");
144
-                $Cache->delete_value('user_badges_'.$InviterID);
145
-	    }
146
-	     */
134
+            // Award invite badge to inviter if they don't have it
135
+            /*
136
+                if (Badges::award_badge($InviterID, 136)) {
137
+                    Misc::send_pm($InviterID, 0, 'You have received a badge!', "You have received a badge for inviting a user to the site.\n\nIt can be enabled from your user settings.");
138
+                    $Cache->delete_value('user_badges_'.$InviterID);
139
+            }
140
+             */
147 141
 
148 142
             $DB->query("
149 143
         SELECT ID

+ 10
- 9
sections/register/step1.php View File

@@ -35,9 +35,9 @@ if (empty($Sent)) { ?>
35 35
     <tr valign="top">
36 36
       <td align="left">
37 37
         <p>
38
-          Use common sense when choosing your username.
39
-          <strong>Do not choose a username that can be associated with your real name.</strong>
40
-          If you do so, we will not be changing it for you.
38
+          Use common sense when picking your username.
39
+          <strong>Don't choose one associated with your real name.</strong>
40
+          If you do, we won't be changing it for you.
41 41
         </p>
42 42
 
43 43
         <input type="text" name="username" id="username" class="inputtext" placeholder="Username"
@@ -71,26 +71,27 @@ if (empty($Sent)) { ?>
71 71
 
72 72
     <tr valign="top">
73 73
       <td align="left">
74
-        <input type="checkbox" name="readrules" id="readrules" value="1" <?php if (!empty($_REQUEST['readrules'])) { ?>
74
+        <input type="checkbox" name="agereq" id="agereq" value="1" <?php if (!empty($_REQUEST['agereq'])) { ?>
75 75
         checked="checked"<?php } ?> />
76
-        <label for="readrules">I will read the rules</label>
76
+        <label for="agereq">I'm 18 years or older</label>
77 77
       </td>
78 78
     </tr>
79 79
 
80 80
     <tr valign="top">
81 81
       <td align="left">
82
-        <input type="checkbox" name="readwiki" id="readwiki" value="1" <?php if (!empty($_REQUEST['readwiki'])) { ?>
82
+        <input type="checkbox" name="readrules" id="readrules" value="1" <?php if (!empty($_REQUEST['readrules'])) { ?>
83 83
         checked="checked"<?php } ?> />
84
-        <label for="readwiki">I will read the wiki</label>
84
+        <label for="readrules">I'll read the site rules and wiki</label>
85 85
       </td>
86 86
     </tr>
87 87
 
88 88
     <tr valign="top">
89 89
       <td align="left">
90
-        <input type="checkbox" name="agereq" id="agereq" value="1" <?php if (!empty($_REQUEST['agereq'])) { ?>
90
+        <input type="checkbox" name="readwiki" id="readwiki" value="1" <?php if (!empty($_REQUEST['readwiki'])) { ?>
91 91
         checked="checked"<?php } ?> />
92
-        <label for="agereq">I am 18 years of age or older</label>
92
+        <label for="readwiki">I consent to the privacy policy and may revoke my consent at any time</label>
93 93
         <br /><br />
94
+
94 95
       </td>
95 96
     </tr>
96 97
 

Loading…
Cancel
Save