Du kan tjekke med cookies, hvis det skal gøres med Javascript. Før jeg viser dig koden skal du dog være klar over at både Javascript og Cookies kan slås fra af brugeren og hvis du totalt vil udelukke en bruger medmindre de har trykket "Agree", skal du over i et serverside sprog så som PHP. En gylden regel inden for programmering er "Stol aldrig på klienten" og både Cookies og Javascript køre på klienten (browseren).
Til at sætte og læse cookies poster jeg funktionerne fra
http://techpatterns.com/downloads/javascript_cookies.phpog derefter viser jeg hvordan du kan tjekke en værdi.
Med Javascript kan du sætte en cookie sådan her, dog er det lidt kompliceret:
- function Set_Cookie( name, value, expires, path, domain, secure )
- {
- // set time, it's in milliseconds
- var today = new Date();
- today.setTime( today.getTime() );
-
- /*
- if the expires variable is set, make the correct
- expires time, the current script below will set
- it for x number of days, to make it for hours,
- delete * 24, for minutes, delete * 60 * 24
- */
- if ( expires )
- {
- expires = expires * 1000 * 60 * 60 * 24;
- }
- var expires_date = new Date( today.getTime() + (expires) );
-
- document.cookie = name + "=" +escape( value ) +
- ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
- ( ( path ) ? ";path=" + path : "" ) +
- ( ( domain ) ? ";domain=" + domain : "" ) +
- ( ( secure ) ? ";secure" : "" );
- }
-
- // this fixes an issue with the old method, ambiguous values
- // with this test document.cookie.indexOf( name + "=" );
- function Get_Cookie( check_name ) {
- // first we'll split this cookie up into name/value pairs
- // note: document.cookie only returns name=value, not the other components
- var a_all_cookies = document.cookie.split( ';' );
- var a_temp_cookie = '';
- var cookie_name = '';
- var cookie_value = '';
- var b_cookie_found = false; // set boolean t/f default f
-
- for ( i = 0; i < a_all_cookies.length; i++ )
- {
- // now we'll split apart each name=value pair
- a_temp_cookie = a_all_cookies[i].split( '=' );
-
-
- // and trim left/right whitespace while we're at it
- cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
-
- // if the extracted name matches passed check_name
- if ( cookie_name == check_name )
- {
- b_cookie_found = true;
- // we need to handle case where cookie has no value but exists (no = sign, that is):
- if ( a_temp_cookie.length > 1 )
- {
- cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
- }
- // note that in cases where cookie is initialized but no value, null is returned
- return cookie_value;
- break;
- }
- a_temp_cookie = null;
- cookie_name = '';
- }
- if ( !b_cookie_found )
- {
- return null;
- }
- }
Så i dit tilfælde kan du gøre sådan her, hvis du husker at have begge funktioner defineret først:
- function onClickAgree()
- {
- Set_Cookie('Agree', 'true', 999999999);
- window.location = 'agree.html' //Agree page
- }
- function onClickDisagree()
- {
- Set_Cookie('Agree', 'false', 999999999);
- }
- function validateAgree()
- {
- if(Get_Cookie('Agree') == 'false')
- window.location = 'http://www.google.com';
- }
- <input type="button" value="Agree" onclick="onClickAgree()" />
- <input type="button" value="Disagree" onclick="onClickDisagree()" />
- <input type="button" value="Did I agree?" onclick="validateAgree()" />
Her har jeg også tilføjet en "Did I agree?" knap til at kalde validateAgree() funktionen, som så tjekker om man er enig, og hvis ikke sender den en til www.google.dk.
Du kan selv tilpasse funktionerne, eller kalde dem lige efter de er defineret, som du ønsker at gøre på de sider man skal have givet sit samtykke for at se.