1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8">
4<script type="text/javascript">window.NREUM||(NREUM={}),__nr_require=function(e,t,n){function r(n){if(!t[n]){var o=t[n]={exports:{}};e[n][0].call(o.exports,function(t){var o=e[n][1][t];return r(o||t)},o,o.exports)}return t[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(e,t,n){function r(){}function o(e,t,n){return function(){return i(e,[f.now()].concat(u(arguments)),t?null:this,n),t?void 0:this}}var i=e("handle"),a=e(2),u=e(3),c=e("ee").get("tracer"),f=e("loader"),s=NREUM;"undefined"==typeof window.newrelic&&(newrelic=s);var p=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],d="api-",l=d+"ixn-";a(p,function(e,t){s[t]=o(d+t,!0,"api")}),s.addPageAction=o(d+"addPageAction",!0),s.setCurrentRouteName=o(d+"routeName",!0),t.exports=newrelic,s.interaction=function(){return(new r).get()};var m=r.prototype={createTracer:function(e,t){var n={},r=this,o="function"==typeof t;return i(l+"tracer",[f.now(),e,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return t.apply(this,arguments)}catch(e){throw c.emit("fn-err",[arguments,this,e],n),e}finally{c.emit("fn-end",[f.now()],n)}}}};a("setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(e,t){m[t]=o(l+t)}),newrelic.noticeError=function(e){"string"==typeof e&&(e=new Error(e)),i("err",[e,f.now()])}},{}],2:[function(e,t,n){function r(e,t){var n=[],r="",i=0;for(r in e)o.call(e,r)&&(n[i]=t(r,e[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],3:[function(e,t,n){function r(e,t,n){t||(t=0),"undefined"==typeof n&&(n=e?e.length:0);for(var r=-1,o=n-t||0,i=Array(o<0?0:o);++r<o;)i[r]=e[t+r];return i}t.exports=r},{}],4:[function(e,t,n){t.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(e,t,n){function r(){}function o(e){function t(e){return e&&e instanceof r?e:e?c(e,u,i):i()}function n(n,r,o,i){if(!d.aborted||i){e&&e(n,r,o);for(var a=t(o),u=m(n),c=u.length,f=0;f<c;f++)u[f].apply(a,r);var p=s[y[n]];return p&&p.push([b,n,r,a]),a}}function l(e,t){v[e]=m(e).concat(t)}function m(e){return v[e]||[]}function w(e){return p[e]=p[e]||o(n)}function g(e,t){f(e,function(e,n){t=t||"feature",y[n]=t,t in s||(s[t]=[])})}var v={},y={},b={on:l,emit:n,get:w,listeners:m,context:t,buffer:g,abort:a,aborted:!1};return b}function i(){return new r}function a(){(s.api||s.feature)&&(d.aborted=!0,s=d.backlog={})}var u="nr@context",c=e("gos"),f=e(2),s={},p={},d=t.exports=o();d.backlog=s},{}],gos:[function(e,t,n){function r(e,t,n){if(o.call(e,t))return e[t];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return e[t]=r,r}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],handle:[function(e,t,n){function r(e,t,n,r){o.buffer([e],r),o.emit(e,t,n)}var o=e("ee").get("handle");t.exports=r,r.ee=o},{}],id:[function(e,t,n){function r(e){var t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===window?0:a(e,i,function(){return o++})}var o=1,i="nr@id",a=e("gos");t.exports=r},{}],loader:[function(e,t,n){function r(){if(!x++){var e=h.info=NREUM.info,t=d.getElementsByTagName("script")[0];if(setTimeout(s.abort,3e4),!(e&&e.licenseKey&&e.applicationID&&t))return s.abort();f(y,function(t,n){e[t]||(e[t]=n)}),c("mark",["onload",a()+h.offset],null,"api");var n=d.createElement("script");n.src="https://"+e.agent,t.parentNode.insertBefore(n,t)}}function o(){"complete"===d.readyState&&i()}function i(){c("mark",["domContent",a()+h.offset],null,"api")}function a(){return E.exists&&performance.now?Math.round(performance.now()):(u=Math.max((new Date).getTime(),u))-h.offset}var u=(new Date).getTime(),c=e("handle"),f=e(2),s=e("ee"),p=window,d=p.document,l="addEventListener",m="attachEvent",w=p.XMLHttpRequest,g=w&&w.prototype;NREUM.o={ST:setTimeout,SI:p.setImmediate,CT:clearTimeout,XHR:w,REQ:p.Request,EV:p.Event,PR:p.Promise,MO:p.MutationObserver};var v=""+location,y={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-1071.min.js"},b=w&&g&&g[l]&&!/CriOS/.test(navigator.userAgent),h=t.exports={offset:u,now:a,origin:v,features:{},xhrWrappable:b};e(1),d[l]?(d[l]("DOMContentLoaded",i,!1),p[l]("load",r,!1)):(d[m]("onreadystatechange",o),p[m]("onload",r)),c("mark",["firstbyte",u],null,"api");var x=0,E=e(4)},{}]},{},["loader"]);</script>
4 5 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 6 <title>GDPR Shield | EU data privacy compliance made easy</title> 7 <meta name="author" content="GDPR Shield"/> 8 <meta name="description" content="Making your website GDPR compliant can take thousands in legal fees, and you'll still be faced with considerable risk. If your website isn't primarily aimed at EU users, simply use GDPR Shield to block all EU traffic"/> 9 <meta name="keywords" content="GDPR compliance, block EU traffic"/> 10 <meta name="robots" content="index, follow"/> 11 <meta property="og:site_name" content="GDPR Shield"/> 12 <meta property="og:site" content="gdpr-shield.io"/> 13 <meta property="og:title" content="GDPR Shield | EU data privacy compliance made easy"/> 14 <meta property="og:description" content="Making your website GDPR compliant can take thousands in legal fees, and you'll still be faced with considerable risk. If your website isn't primarily aimed at EU users, simply use GDPR Shield to block all EU traffic"/> 15 <meta property="og:image" content="https://www.gdpr-shield.io/assets/img/fb_share.jpg"/> 16 <meta name="twitter:card" content="summary_large_image"/> 17 <!-- Styles --> 18 <link href="assets/css/page.min.css" rel="stylesheet"> 19 <link href="assets/css/style.css" rel="stylesheet"> 20 <!-- Favicons --> 21 <link rel="apple-touch-icon" href="assets/img/apple-touch-icon.png"> 22 <link rel="icon" href="assets/img/favicon.png"> 23 <link rel="canonical" href="https://gdpr-shield.io/" /> 24 </head> 25 <body> 26 <!-- Navbar --> 27 <nav class="navbar navbar-expand-lg navbar-dark"> 28 <div class="container"> 29 <div class="navbar-left mr-4"> 30 <button class="navbar-toggler" type="button">â°</button> 31 <a class="navbar-brand" href="/"> 32 <img class="logo-dark" src="assets/img/logo/logo.png" alt="logo"> 33 <img class="logo-light" src="assets/img/logo/logo.png" alt="logo"> 34 </a> 35 </div> 36 <section class="navbar-mobile"> 37 <nav class="nav nav-navbar nav-text-normal mr-auto"> 38 <a class="nav-link" href="/">Why?</a> 39 <a class="nav-link" href="/">Pricing</a> 40 <a class="nav-link" href="/">FAQ</a> 41 </nav> 42 <div id="navbar_items_right" class="d-flex align-items-center"> 43 <a id="navbar_btn_signup" class="btn btn-sm btn-success" data-toggle="modal" data-target="#modal-register" href="#">Sign up</a> 44 <a id="navbar_btn_login" class="btn btn-sm btn-link text-dark ml-lg-5 mr-2" data-toggle="modal" data-target="#modal-login" href="#">Login</a> 45 </div> 46 </section> 47 </div> 48 </nav><!-- /.navbar --> 49 <!-- Header --> 50 <header class="header h-80vh" style="background: #fdfdfd;"> 51 <div class="container"> 52 <div class="row align-items-center h-80"> 53 <div class="col-md-5"> 54 <h1 class="fw-600">Block <span class="text-warning">EU users</span> <br>from accessing your site</h1> 55 <p class="lead mt-5 mb-8">Don't spend thousands on legal fees to make your site GDPR-compliant. If you aren't targeting EU users, simply use GDPR Shield to block all traffic from the EU</p> 56 <a class="btn btn-round btn-primary w-200" data-toggle="modal" data-target="#modal-register" href="#">Get started</a> 57 <a class="btn btn-round btn-outline-secondary w-200 ml-3 d-none d-lg-inline-block" href="#how-it-works">How it works</a> 58 </div> 59 <div class="col-md-6 ml-auto d-none d-md-block"> 60 <img src="assets/img/vector/test.png"> 61 </div> 62 </div> 63 </div> 64 </header><!-- /.header --> 65 <section class="section py-6"> 66 <div class="container text-center"> 67 <p class="lead">Our core team has been featured in</p> 68 <div class="partner partner-md"> 69 <img src="assets/img/partner/1.png" alt="partner 1"> 70 <img src="assets/img/partner/2.png" alt="partner 2"> 71 <img src="assets/img/partner/3.png" alt="partner 3"> 72 <img src="assets/img/partner/4.png" alt="partner 4"><br /> 73 74 <p> An important issue is confidentiality on the Instagram social network. Clients <a href="/">GDPR Shield</a> are given an option to protect European citizens. All data on Instagram likes will be anonymous. </p> 75 </div>
76 </div> 77 </section> 78 <!-- Main Content --> 79 <main class="main-content"> 80 <!-- 81 | Reduce your exposure to legal risk 82 !--> 83 <section id="why" class="section bg-gray overflow-hidden"> 84 <div class="container"> 85 <div class="row"> 86 <div class="col-md-6 align-self-center text-center text-md-left"> 87 <h2>Reduce your exposure to legal risk</h2><br> 88 <p>The European Union's new GDPR (General Data Protection Regulation), which took effect on 25th May 2018, creates uncertainty and risk for website owners. It applies to businesses world-wide, because it protects all users accessing your site from the EU, regardless of where your business is located. 89 GDPR threatens website owners with fines of 4% of turnover or â¬20 million (whichever is higher). If you don't have an in-house legal team, complying with the law requires you to consult with a lawyer specializing in data protection law. In addition, you're at risk of vindictive reporting from no-win-no-fee legal firms. Scan our QR code for quick access to the Google Group service: 90 </p> 91 <br> 92 <div align="center"> <a href="https://groups.google.com/g/custom-qr-code/c/rVPfhk-ohLk"><img alt="QR code generator" src="/gdpr.svg" style="width:51%; height:51%;"></a></div> 93 <br> <br> 94 95 <p>Our partner helps to quickly connect the service just by scanning the code, or by using an online Custom QR code generator.</p> 96 <a class="btn btn-lg btn-round btn-primary shadow-3" data-toggle="modal" data-target="#modal-register" href="#">Get Started Now</a> 97 </div> 98 <div class="col-md-5 mx-auto text-center mt-8 mt-md-0"> 99 <img src="assets/img/preview/phone-2.png" data-aos="fade-up"> 100 </div> 101 </div> 102 </div> 103 </section> 104 <!-- 105 | How it works 106 !--> 107 <section id="how-it-works" class="section"> 108 <div class="container"> 109 <header class="section-header"> 110 <small>How it works</small> 111 <h2>Save thousands on GDPR compliance</h2> 112 <hr> 113 <p class="lead">Simply paste our JavaScript snippet into your website's code. We'll check every visitor of your site and will block access to users located within the EU. </p> 114 <p class="lead">Our JavaScript has been used by thousands of companies. You can see what the warning looks like on <a href="https://socialsgrow.com/">Socials grow</a>. </p> 115 <p class="lead">SocialsGrow - our partner for brand promotion in social networks. </p> 116 </header> 117 <div class="row gap-y"> 118 <div class="col-md-8 mx-auto mb-7"> 119 <img src="assets/img/vector/19.png"> 120 </div> 121 <div class="w-100"></div> 122 <div class="col-md-6 col-xl-4"> 123 <div class="media"> 124 <div class="lead-6 line-height-1 text-lighter w-70px"><i class="icon-pencil"></i></div> 125 <div class="media-body"> 126 <h5>1. Enter your website's URL</h5> 127 <p><a data-toggle="modal" data-target="#modal-register" href="#">Get started</a> by signing up with your website's URL</p> 128 </div> 129 </div> 130 </div> 131 <div class="col-md-6 col-xl-4"> 132 <div class="media"> 133 <div class="lead-6 line-height-1 text-lighter w-70px"><i class="icon-search"></i></div> 134 <div class="media-body"> 135 <h5>2. Insert the JavaScript snippet</h5> 136 <p>We provide you with a JavaScript snippet that you'll paste into your site's existing HTML code</p> 137 </div> 138 </div> 139 </div> 140 <div class="col-md-6 col-xl-4"> 141 <div class="media"> 142 <div class="lead-6 line-height-1 text-lighter w-70px"><i class="icon-megaphone"></i></div> 143 <div class="media-body"> 144 <h5>3. We block EU users</h5> 145 <p>We'll check every user that visits your site and block access to users from the EU. This happens in the background and doesn't affect your site's speed for non-EU users</p> 146 </div> 147 </div> 148 </div> 149 </div> 150 </div> 151 </section> 152 </main> 153
153<script> 154 if ( ! window.deferAfterjQueryLoaded ) { 155 window.deferAfterjQueryLoaded = []; 156 Object.defineProperty(window, "$", { 157 set: function(value) { 158 window.setTimeout(function() { 159 $.each(window.deferAfterjQueryLoaded, function(index, fn) { 160 fn(); 161 }); 162 }, 0); 163 Object.defineProperty(window, "$", { value: value }); 164 }, 165 configurable: true 166 }); 167 } 168 window.deferAfterjQueryLoaded.push(function() { 169 $(document).ready(function() { 170 var loggedIn = 0; 171 //Hide the navbar if logged in 172 if(loggedIn == 1){ 173 $('#navbar_btn_login').remove(); 174 $('#navbar_btn_signup').html("My Dashboard"); 175 $('#navbar_btn_signup').attr("href", "/dashboard"); 176 $('#navbar_btn_signup').attr("data-toggle", ""); 177 } 178 //Signup-button 179 $('#btn_signup').on('click',(function(e) { 180 //gtag_report_conversion(); 181 //capterra_report_conversion(); 182 ga_report_conversion(); 183 //fb_report_conversion(); 184 $('#form_signup').submit(); 185 })); 186 $('#form_signup').on('submit',(function(e) { 187 e.preventDefault(); 188 $.ajax({ 189 url: "ajax_register", 190 type: "POST", 191 data: new FormData(this), 192 contentType: false, 193 cache: false, 194 processData: false, 195 success: function(data){ 196 console.log(data); 197 var json_obj = $.parseJSON(data); 198 var result = json_obj.result; 199 console.log(result); 200 if(result == "ok" || result == "loggedin"){ 201 loggedIn = 1; 202 } else if(result == "missing_data"){ 203 $('#modal_signup_error').html('Please fill out all fields'); 204 $('#modal_signup_error').show(); 205 } else if(result == "email_exists"){ 206 $('#modal_signup_error').html('This email is already registered, please <a href="login">sign in</a> instead!'); 207 $('#modal_signup_error').show(); 208 } 209 } 210 }); 211 })); 212 $('#signup_email').on('keyup',(function(e) { 213 if($('#signup_email').val().length > 0 && isValidEmailAddress($('#signup_email').val()) && $('#signup_password').val().length > 0){ 214 $('#btn_signup').prop('disabled', false); 215 $('#btn_signup').css('background', "#3ECF8E"); 216 $('#btn_signup').css('color', "#FFFFFF"); 217 } else { 218 //$('#btn_signup').prop('disabled', true); 219 $('#btn_signup').css('background', "#E9E9E9"); 220 $('#btn_signup').css('color', "#AFAFAF"); 221 } 222 })); 223 $('#signup_password').on('keyup',(function(e) { 224 if($('#signup_email').val().length > 0 && isValidEmailAddress($('#signup_email').val()) && $('#signup_password').val().length > 0){ 225 $('#btn_signup').prop('disabled', false); 226 $('#btn_signup').css('background', "#3ECF8E"); 227 $('#btn_signup').css('color', "#FFFFFF"); 228 } else { 229 $('#btn_signup').prop('disabled', true); 230 $('#btn_signup').css('background', "#E9E9E9"); 231 $('#btn_signup').css('color', "#AFAFAF"); 232 } 233 })); 234 $('#modal_create_form').on('submit',(function(e) { 235 e.preventDefault(); 236 //Hide any previously shown errors 237 $('#modal_create_error').hide(); 238 var platforms = ""; 239 if($('#toggle_reddit').attr("aria-pressed") == "true"){ 240 platforms = platforms + "1,"; 241 } 242 if($('#toggle_hn').attr("aria-pressed") == "true"){ 243 platforms = platforms + "2,"; 244 } 245 if($('#toggle_ph').attr("aria-pressed") == "true"){ 246 platforms = platforms + "3,"; 247 } 248 if($('#toggle_ih').attr("aria-pressed") == "true"){ 249 platforms = platforms + "4,"; 250 } 251 platforms = platforms.substring(0, platforms.length - 1); 252 $("#platforms").val(platforms); 253 $.ajax({ 254 url: "ajax_create", 255 type: "POST", 256 data: new FormData(this), 257 contentType: false, 258 cache: false, 259 processData: false, 260 success: function(data){ 261 console.log(data); 262 var json_obj = $.parseJSON(data); 263 var result = json_obj.result; 264 console.log(result); 265 if(result == "ok"){ 266 //Close modal and show new modal "Keyword added, we'll notify you" 267 $('#modal_create').modal('hide'); 268 $('#modal_success').modal('show'); 269 } else if(result == "trial_expired"){ 270 $('#modal_create_error').html('Your trial has expired. To add new keywords, please <a href="change_plan">upgrade</a> your account'); 271 $('#modal_create_error').show(); 272 } else if(result == "no_keyword"){ 273 $('#modal_create_error').html('Please enter a keyword that you want to monitor'); 274 $('#modal_create_error').show(); 275 } else if(result == "keyword_too_short"){ 276 $('#modal_create_error').html('Keywords have to be longer than 3 characters'); 277 $('#modal_create_error').show(); 278 } else if(result == "max_keywords_trial"){ 279 $('#modal_create_error').html('During your trial, you can only monitor 5 keywords. To add new keywords, please <a href="change_plan">upgrade</a> your account'); 280 $('#modal_create_error').show(); 281 } else if(result == "max_keywords"){ 282 $('#modal_create_error').html('You\'ve reached the maximum number of keywords that you can monitor as part of your subscription. To add new keywords, please <a href="change_plan">upgrade</a> your account'); 283 $('#modal_create_error').show(); 284 } else if(result == "no_platforms"){ 285 $('#modal_create_error').html('Please select at least one platform to monitor by clicking on it'); 286 $('#modal_create_error').show(); 287 } else if(result == "no_email"){ 288 $('#modal_create_error').html('Please enter your email (or turn off the email-alert switch'); 289 $('#modal_create_error').show(); 290 } else if(result == "no_phone"){ 291 $('#modal_create_error').html('Please enter your phone number (or turn off the text message alert switch'); 292 $('#modal_create_error').show(); 293 } 294 } 295 }); 296 })); 297 function isValidEmailAddress(emailAddress) { 298 var pattern = new RegExp("^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$"); 299 return pattern.test(emailAddress); 300 }; 301 //Redirect to the dashboard when the modal is hidden 302 $('#modal_success').on('hide.bs.modal', function (e) { 303 }) 304 function ga_report_conversion(){ 305 ga('send', 'event', 'signup', 'signup', 'create'); 306 return false;
307 } 308 }); 309}); 310</script>
310 311 <!-- Footer --> 312 <footer class="footer bg-gray py-9"> 313 <div class="container"> 314 <div class="row gap-y"> 315 <div class="col-md-6 col-xl-4"> 316 <p><a href="#"><img src="assets/img/logo/logo.png" alt="logo"></a></p> 317 <p>Make your website GDPR compliant - the easy way. Use GDPR Shield to reliably block EU users from accessing your website.</p> 318 </div> 319 <div class="col-6 col-md-3 col-xl-2"> 320 <h6 class="mb-4 mt-1"><strong>Company</strong></h6> 321 <div class="nav flex-column"> 322 <a class="nav-link" href="terms/">Terms & Conditions</a> 323 <a class="nav-link" href="/">Privacy Policy</a> 324 <a class="nav-link" href="/">Imprint</a> 325 </div> 326 </div> 327 <div class="col-6 col-md-3 col-xl-2"> 328 <h6 class="mb-4 mt-1"><strong>Product</strong></h6> 329 <div class="nav flex-column"> 330 <a class="nav-link" href="/">How it works</a> 331 <a class="nav-link" href="/">Why?</a> 332 <a class="nav-link" href="/">Pricing</a> 333 </div> 334 </div> 335 <div class="col-6 col-md-6 col-xl-2"> 336 <h6 class="mb-4 mt-1"><strong>Support</strong></h6> 337 <div class="nav flex-column"> 338 <a class="nav-link" href="mailto:[email protected]">Help</a> 339 <a class="nav-link" href="/">FAQ</a> 340 </div> 341 </div> 342 <div class="col-6 col-md-6 col-xl-2 text-center"> 343 <p><a class="btn btn-block btn-round btn-secondary" data-toggle="modal" data-target="#modal-register" href="#">Get started</a></p> 344 <br> 345 <div class="social social-bordered"> 346 <!-- <a class="social-facebook" href="https://www.facebook.com/GDPRShield"><i class="fa fa-facebook"></i></a> 347 <a class="social-twitter" href="https://twitter.com/GDPRShield"><i class="fa fa-twitter"></i></a> 348 <a class="social-youtube" href="https://youtube.com/GDPRShield"><i class="fa fa-youtube"></i></a> --> 349 </div> 350 </div> 351 </div> 352 </div> 353 </footer><!-- /.footer --> 354 <div class="modal fade" id="modal-login" tabindex="-1" role="dialog" style="display: none;" aria-hidden="true"> 355 <div class="modal-dialog modal-sm" role="document"> 356 <div class="modal-content"> 357 <div class="modal-body"> 358 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 359 <span aria-hidden="true">Ã</span> 360 </button> 361 <form id="form_login_everywhere"> 362 <h4 class="fw-200 text-center">Login</h4> 363 <p class="text-center">Sign into your account</p> 364 <div id="modal_login_everywhere_error" class="red-text mb-4 display-none text-bold"></div> 365 <div class="form-group"> 366 <input class="form-control" type="email" id="login_email_everywhere" name="login_email" placeholder="Email address"> 367 </div> 368 <div class="form-group"> 369 <input class="form-control" type="password" id="login_password_everywhere" name="login_password" placeholder="Password"> 370 </div> 371 <div class="row align-items-center pt-3 pb-5"> 372 <div class="col-auto"> 373 <div class="custom-control custom-checkbox"> 374 <input class="custom-control-input" type="checkbox" id="login_stayloggedin_everywhere" name="login_stayloggedin" value="yes" checked> 375 <label class="custom-control-label">Remember me</label> 376 </div> 377 </div> 378 <div class="col text-right"> 379 <p class="mb-0 fw-300"><a class="text-muted small-2" href="#">Forgot password?</a></p> 380 </div> 381 </div> 382 <a id="btn_login_everywhere" class="btn btn-lg btn-block btn-primary white-text">Login</a> 383 <p class="small-2 text-center mt-5 mb-0">Don't have an account? <a href="#" data-toggle="modal" data-target="#modal
383-register">Create one</a></p> 384 </form> 385 </div> 386 </div> 387 </div> 388 </div> 389 <div class="modal fade" id="modal-register" tabindex="-1" role="dialog"> 390 <div class="modal-dialog" role="document"> 391 <div class="modal-content"> 392 <div class="modal-body"> 393 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 394 <span aria-hidden="true">Ã</span> 395 </button> 396 <form> 397 <h4 class="text-center">Add a website</h4> 398 <p class="text-center">You can add more domains later on</p> 399 <hr class="w-10"> 400 <div class="form-group"> 401 <label>What's your website's domain name?</label> 402 <input class="form-control" type="text" id="domain" name="domain" placeholder="google.com"> 403 </div> 404 <div id="modal_signup_everywhere_step_1_error" class="alert alert-danger display-none" role="alert"></div> 405 <a id="btn_signup_everywhere_step_1_next" class="btn btn-lg btn-block btn-primary white-text">Continue</a> 406 </form> 407 </div> 408 </div> 409 </div> 410 </div> 411 <div class="modal fade" id="modal-register-2" tabindex="-1" role="dialog"> 412 <div class="modal-dialog" role="document"> 413 <div class="modal-content"> 414 <div class="modal-body"> 415 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 416 <span aria-hidden="true">Ã</span> 417 </button> 418 <form id="form_signup_everywhere"> 419 <h4 class="text-center">Create an account</h4> 420 <p class="text-center">Access your dashboard</p> 421 <div class="form-group"> 422 <label>What's your email address?</label> 423 <input class="form-control" type="email" id="signup_email" name="signup_email" placeholder="Your Email Address"> 424 </div> 425 <div class="form-group"> 426 <label>Choose a password to secure your account</label> 427 <input class="form-control" type="password" id="signup_password" name="signup_password" placeholder="Password"> 428 </div> 429 <input type="hidden" id="domain_submit" name="domain"> 430 <div id="modal_signup_everywhere_error" class="alert alert-danger display-none" role="alert"></div> 431 <a id="btn_signup_everywhere" class="btn btn-lg btn-block btn-primary mt-5 white-text">Sign up</a> 432 </form> 433 </div> 434 </div> 435 </div> 436 </div> 437 <div class="modal fade" id="modal-register-3" tabindex="-1" role="dialog"> 438 <div class="modal-dialog modal-lg" role="document"> 439 <div class="modal-content"> 440 <div class="modal-body"> 441 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 442 <span aria-hidden="true">Ã</span> 443 </button> 444 <form> 445 <h4 class="text-center">Select a plan</h4> 446 <p class="text-center">You'll only be charged once you've successfully installed GDPR Shield and your site is sending traffic</p> 447 <div class="row pricing mt-5"> 448 <div class="col-md-4 mx-auto mb-6"> 449 <div class="pricing-1"> 450 <p class="plan-name">Hobby</p> 451 <br> 452 <h2 class="price"><span class="price-unit">$</span> 9<span style="font-size: 20px;">/month<span></h2> 453 <br> 454 <div class="text-muted"> 455 <small><span><b>1</b> domain</span></small><br> 456 <small><span>up to <b>10,000</b> visitors/month</span></small><br> 457 <small><span>SSL encryption</span></small><br> 458 <small><span>Email support</span></small><br> 459 <small><span> </span></small> 460 <small><span> </span></small> 461 <small><span>Â </span></small> 462 </div> 463 <br> 464 <p class="text-center py-3"><a id="btn_select_plan_1_everywhere" class="btn btn-primary btn-get-started" href="#">Select plan</a></p> 465 </div> 466 </div> 467 <div class="col-md-4 mx-auto mb-6"> 468 <div class="pricing-1"> 469 <p class="plan-name">Professional</p> 470 <br> 471 <h2 class="price"><span class="price-unit">$</span> 49<span style="font-size: 20px;">/month<span></h2> 472 <br> 473 <div class="text-muted"> 474 <small><span><b>3</b> domains</span></small><br> 475 <small><span>up to <b>1M</b> visitors/month</span></small><br> 476 <small><span>SSL encryption</span></small><br> 477 <small><span>Country-level analytics</span></small><br> 478 <small><span>24/7 email & chat support</span></small><br> 479 <small><span></span></small> 480 </div> 481 <br> 482 <p class="text-center py-3"><a id="btn_select_plan_2_everywhere" class="btn btn-primary btn-get-started" href="#">Select plan</a></p> 483 </div> 484 </div> 485 <div class="col-md-4 mx-auto mb-6"> 486 <div class="pricing-1"> 487 <p class="plan-name">Enterprise</p> 488 <br> 489 <h2 class="price"><span class="price-unit">$</span> 79<span style="font-size: 20px;">/month<span></h2> 490 <br> 491 <div class="text-muted"> 492 <small><span><b>5</b> domains</span></small><br> 493 <small><span>up to <b>5M</b> visitors/month</span></small><br> 494 <small><span>SSL encryption</span></small><br> 495 <small><span>Country-level analytics</span></small><br> 496 <small><span>24/7 email & chat support</span></small><br> 497 <small><span></span></small> 498 </div> 499 <br> 500 <p class="text-center py-3"><a id="btn_select_plan_3_everywhere" class="btn btn-primary btn-get-started" href="#">Select plan</a></p> 501 </div> 502 </div> 503 </div> 504 </form> 505 </div> 506 </div> 507 </div> 508 </div> 509 <div class="modal fade" id="modal_payment_method" tabindex="-1" role="dialog"> 510 <div class="modal-dialog" role="document"> 511 <div class="modal-content"> 512 <div class="modal-body"> 513 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
514 <span aria-hidden="true">Ã</span> 515 </button> 516 <form id="form_signup_everywhere"> 517 <h4 class="text-center">Enter payment method</h4> 518 <p class="text-center">You'll only be charged once you've successfully installed GDPR Shield and your site is sending traffic</p> 519 <div id="modal_payment_method_body"> 520 <div id="bt-dropin"></div> 521 <div class="row"> 522 <div class="col-md-12 text-center">Payments secured by <img src="https://gdpr-shield.io/assets/img/bt_logo.svg" style="height: 25px; margin-left: 5px;"></div> 523 </div> 524 </div> 525 <input id="nonce" name="payment_method_nonce" type="hidden"/> 526 <div id="modal_payment_error" class="alert alert-danger display-none" role="alert"></div> 527 <a id="btn_subscribe" class="btn btn-lg btn-block btn-primary mt-5 white-text" style="visibility: hidden;">Confirm payment details</a> 528 </form> 529 </div> 530 </div> 531 </div> 532 </div> 533 <!-- Scripts --> 534
534<script src="assets/js/page.min.js"></script>
534 535
535<script src="assets/js/script.js"></script>
535 536
536<script src="api/checkout.js" data-version-4></script>
536 537
537<script src="web/dropin/1-9-4/js/dropin.min.js"></script>
537 538 <!-- Signup/login modal --> 539
539<script> 540 $(document).ready(function() { 541 var loggedIn = 0; 542 var email = ""; 543 var newPlan = 0; 544 $('#domain').keydown(function(e) { 545 if (e.keyCode == 13) { 546 e.preventDefault(); 547 $('#btn_signup_everywhere_step_1_next').click(); 548 return false; 549 } 550 }); 551 //Signup Next-button 552 $('#btn_signup_everywhere_step_1_next').on('click',(function(e) { 553 //Copy the entered values to the step-2 form 554 var domain = $("#domain").val(); 555 $("#domain_submit").val(domain); 556 if(domain == ""){ 557 $('#modal_signup_everywhere_step_1_error').html('Please enter your website\'s domain (e.g. yourwebsite.com) so we know where we should block EU visitors'); 558 $('#modal_signup_everywhere_step_1_error').show(); 559 return; 560 } 561 $('#modal-register').modal('hide'); 562 $('#modal-register-2').modal('show'); 563 })); 564 //Signup-button 565 $('#btn_signup_everywhere').on('click',(function(e) { 566 email = $("#signup_email").val(); 567 $('#form_signup_everywhere').submit(); 568 $('#modal_signup_everywhere_error').hide(); 569 $('#btn_signup_everywhere').html('<i class="fa fa-spinner fa-spin"></i>'); 570 })); 571 $('#form_signup_everywhere').on('submit',(function(e) { 572 e.preventDefault(); 573 $.ajax({ 574 url: "ajax_register", 575 type: "POST", 576 data: new FormData(this), 577 contentType: false, 578 cache: false, 579 processData: false, 580 success: function(data){ 581 console.log(data); 582 var json_obj = $.parseJSON(data); 583 var result = json_obj.result; 584 console.log(result); 585 if(result == "ok" || result == "loggedin"){ 586 $('#modal-register-2').modal('hide'); 587 $('#modal-register-3').modal('show'); 588 } else if(result == "missing_data"){ 589 $('#modal_signup_everywhere_error').html('Please fill out all fields'); 590 $('#modal_signup_everywhere_error').show(); 591 $('#btn_signup_everywhere').html('Sign up'); 592 } else if(result == "email_exists"){ 593 $('#modal_signup_everywhere_error').html('This email is already registered, please <a href="login">sign in</a> instead!'); 594 $('#modal_signup_everywhere_error').show(); 595 $('#btn_signup_everywhere').html('Sign up'); 596 } 597 } 598 }); 599 })); 600 //Payment method modal 601 var braintreeInstance = 0; 602 braintree.dropin.create({ 603 authorization: 'eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiI1NzdlNWE3NmVkNTE2N2FjYzJiMjdmYjJjOTI4OTA0YTA5MzU4MGRiN2RhOTUwMWFjYzEzZmIxZjFkZWUwNGZkfGNyZWF0ZWRfYXQ9MjAxOC0wOC0xMlQxNDo1NDo1Ni4zODQxNDI4NjkrMDAwMFx1MDAyNm1lcmNoYW50X2lkPWZiYmpwbXlzOHQzdGs4ajZcdTAwMjZwdWJsaWNfa2V5PWY2YjRidmYzNTVxejkzd3QiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzL2ZiYmpwbXlzOHQzdGs4ajYvY2xpZW50X2FwaS92MS9jb25maWd1cmF0aW9uIiwiY2hhbGxlbmdlcyI6WyJjdnYiXSwiZW52aXJvbm1lbnQiOiJwcm9kdWN0aW9uIiwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy9mYmJqcG15czh0M3RrOGo2L2NsaWVudF9hcGkiLCJhc3NldHNVcmwiOiJodHRwczovL2Fzc2V0cy5icmFpbnRyZWVnYXRld2F5LmNvbSIsImF1dGhVcmwiOiJodHRwczovL2F1dGgudmVubW8uY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5icmFpbnRyZWVnYXRld2F5LmNvbS9mYmJqcG
60315czh0M3RrOGo2In0sInRocmVlRFNlY3VyZUVuYWJsZWQiOmZhbHNlLCJwYXlwYWxFbmFibGVkIjp0cnVlLCJwYXlwYWwiOnsiZGlzcGxheU5hbWUiOiJzaGFyZWtpdC5pbyIsImNsaWVudElkIjoiQVVYS1g4WWdCZDR3RlVGM2w0Q0EyZnFCQTlGd0J0MHdURFQ4MU1GaGJBZHIzZWQtN2RCU1RGX043ZC1VbkNmekNSSUJWR3JLSWI0dEV4N2giLCJwcml2YWN5VXJsIjoiaHR0cHM6Ly93d3cuc2hhcmVraXQuaW8vcHJpdmFjeSIsInVzZXJBZ3JlZW1lbnRVcmwiOiJodHRwczovL3d3dy5zaGFyZWtpdC5pby90ZXJtcyIsImJhc2VVcmwiOiJodHRwczovL2Fzc2V0cy5icmFpbnRyZWVnYXRld2F5LmNvbSIsImFzc2V0c1VybCI6Imh0dHBzOi8vY2hlY2tvdXQucGF5cGFsLmNvbSIsImRpcmVjdEJhc2VVcmwiOm51bGwsImFsbG93SHR0cCI6ZmFsc2UsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJsaXZlIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoiQVJLcllSRGgzQUdYRHpXN3NPXzNiU2txLVUxQzdIR191V05DLXo1N0xqWVNETlVPU2FPdElhOXE2VnBXIiwiYmlsbGluZ0FncmVlbWVudHNFbmFibGVkIjp0cnVlLCJtZXJjaGFudEFjY291bnRJZCI6InNoYXJla2l0aW9FVVIiLCJjdXJyZW5jeUlzb0NvZGUiOiJFVVIifSwibWVyY2hhbnRJZCI6ImZiYmpwbXlzOHQzdGs4ajYiLCJ2ZW5tbyI6Im9mZiJ9', 604 selector: '#bt-dropin', 605 paypal: { 606 flow: 'vault' 607 } 608 }, function (createErr, instance) { 609 braintreeInstance = instance; 610 braintreeInstance.on('paymentMethodRequestable', function (event) { 611 console.log(event.type); // The type of Payment Method, e.g 'CreditCard', 'PayPalAccount'. 612 console.log(event.paymentMethodIsSelected); // true if a customer has selected a payment method when paymentMethodRequestable fires 613 $('#btn_subscribe').css("visibility", "visible"); 614 }); 615 }); 616 $('#btn_select_plan_1_everywhere').on('click', function(e) { 617 //Set the newPlan-variable 618 newPlan = 1; 619 //Open the payment modal 620 $('#modal-register-3').modal('hide'); 621 $("#modal_payment_method").modal("show"); 622 }); 623 $('#btn_select_plan_2_everywhere').on('click', function(e) { 624 //Set the newPlan-variable 625 newPlan = 2; 626 //Open the payment modal 627 $('#modal-register-3').modal('hide'); 628 $("#modal_payment_method").modal("show"); 629 }); 630 $('#btn_select_plan_3_everywhere').on('click', function(e) { 631 //Set the newPlan-variable 632 newPlan = 3; 633 //Open the payment modal 634 $('#modal-register-3').modal('hide'); 635 $("#modal_payment_method").modal("show"); 636 }); 637 $('#btn_subscribe').on('click', function(e) { 638 braintreeInstance.requestPaymentMethod(function (err, payload) { 639 if (err) { 640 console.log('Request Payment Method Error', err); 641 return; 642 } 643 //Show a "loading" indicator within the popup 644 $('#modal_payment_method_body').html('<div class="row"><div class="col-md-12 text-center pl-5 pr-5 mb-4">Please wait, processing...</div> </div>'); 645 $('#btn_subscribe').css("visibility", "hidden"); 646 // Add the nonce to the form and submit 647 //document.querySelector('#nonce').value = payload.nonce; 648 //Submit to ajax_change_plan 649 performCharge(payload.nonce); 650 }); 651 }); 652 function performCharge(nonce){ 653 $.ajax({ 654 url: "ajax_change_plan.php?nonce=" + nonce + "&newPlan=" + newPlan, 655 type: "GET", 656 contentType: false, 657 cache: false, 658 processData: false, 659 success: function(data){ 660 console.log(data); 661 var json_obj = $.parseJSON(data); 662 var result = json_obj.result; 663 console.log(result); 664 if(result == "ok"){ 665 //Show the dashboard 666 } else { 667 $('#modal_payment_error').html(json_obj.error_msg); 668 $('#modal_payment_error').show(); 669 } 670 } 671 }); 672 } 673 //Redirect to the dashboard when the modal is hidden 674 //$('#modal_done').on('hide.bs.modal', function (e) { 675 // 676 //}) 677 //Login-pwd-keydown-enter 678 $('#login_password_everywhere').keydown(function(e) { 679 if (e.keyCode == 13) { 680 $('#form_login_everywhere').submit(); 681 return false; 682 } 683 }); 684 //Login-button in modal 685 $('#btn_login_everywhere').on('click',(function(e) { 686 $('#form_login_everywhere').submit(); 687 })); 688 $('#form_login_everywhere').on('submit',(function(e) { 689 e.preventDefault(); 690 $.ajax({ 691 url: "ajax_login", 692 type: "POST", 693 data: new FormData(this), 694 contentType: false, 695 cache: false, 696 processData: false, 697 success: function(data){ 698 console.log(data); 699 var json_obj = $.parseJSON(data); 700 var result = json_obj.result; 701 console.log(result); 702 if(result == "loggedin"){ 703 } else if(result == "missing_data"){ 704 console.log("miss"); 705 $('#modal_login_everywhere_error').html('Please fill out all fields'); 706 $('#modal_login_everywhere_error').show(); 707 } else if(result == "wrong_password"){ 708 $('#modal_login_everywhere_error').html('Please check your email/password combination'); 709 $('#modal_login_everywhere_error').show(); 710 } else if(result == "deactivated"){ 711 $('#modal_login_everywhere_error').html('Your account has been deactived. Please email us at <a href="mailto:[email protected]">[email protected]</a>'); 712 $('#modal_login_everywhere_error').show(); 713 } 714 } 715 }); 716 })); 717 //Show the login modal when requested via the URL 718 if(window.location.href.indexOf("#login") > -1) {
719 $('#modal-login').modal('show'); 720 } 721 //Redirect to the dashboard when the modal is hidden 722 $('#modal_success').on('hide.bs.modal', function (e) { 723 }) 724 }); 725 function isValidEmailAddress(emailAddress) { 726 var pattern = new RegExp("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); 727 return pattern.test(emailAddress); 728 }; 729 function reset_password(){ 730 $('#modal_login_everywhere_error').html('<font color="green">Thanks, we\'ve sent you an email with instructions on how to reset your password</font>'); 731 $.ajax({ 732 url: "ajax_reset_password", 733 type: "GET", 734 data: "login_email=" + $('#login_email_everywhere').val(), 735 contentType: false, 736 cache: false, 737 processData: false, 738 success: function(data){ 739 console.log(data); 740 var json_obj = $.parseJSON(data); 741 } 742 }); 743 return false; 744 } 745 </script>
745 746
746<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"7079a4e315","applicationID":"117392235","transactionName":"MwFaZ0tSX0ECAhVQDApLbUFQHFhcBwQZFxMMFA==","queueTime":0,"applicationTime":373,"atts":"H0ZZEQNITE8=","errorBeacon":"bam.nr-data.net","agent":""}</script>
746</body> 747</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.