1/***************************************************************************** 2 * Firma: Hehner Reus Systems GmbH 3 * Projekt: com.cerno.basis 4 * Datei: Cookie.js 5 * Erstellung: 26.11.2015 6 * Verwendung: Vereinfachtes Cookie-Handling. 7 * 8 * $Id: Cookie.js,v 1.5 2024/03/12 10:29:59 lpo Exp $ 9 * $Author: lpo $ 10 *****************************************************************************/ 11 12/** 13 * Funktion liefert den Wert eines Cookies mit dem Namen name. 14 * 15 * @param {string} name Der Name des gesuchten Cookie. 16 * @returns Der Wert des Cookie oder ein Leerstring. 17 */ 18function HRGetCookie(name) 19{ 20 var wert = ''; 21 try 22 { 23 if (!name || typeof(name) != 'string' || name.length <= 0) 24 return wert; 25 26 var cookies = document.cookie.split(';'); 27 var len = cookies.length; 28 for(var i = 0; i < len; i++) 29 { 30 var cookie = cookies[i]; 31 var pair = cookie.split('='); 32 if (pair && pair.length > 1) 33 { 34 var key = pair[0]; 35 var val = pair[1]; 36 try 37 { 38 key = key.trim(); 39 val = val.trim(); 40 } 41 catch(e) 42 {} 43 if (key == name) 44 { 45 wert = val; 46 } 47 } 48 } 49 } 50 catch (e) 51 { 52 if (typeof(HRLogError) == 'function') 53 HRLogError(e); 54 } 55 return wert; 56} 57 58/** 59 * Setzt einen Cookie. 60 * 61 * @param name {string} Der Name des Cookie. 62 * @param wert {string} Der Wert des Cookie. 63 * @param config {object} Optionale Configuration für das Setzen des Cookie 64 * mit folgenden möglichen Werten: 65 * expires: Zeit, bis der Cookie abläuft. Im Standard in ms. 66 * Kann durch expiresUnit auch anders angegeben werden. 67 * Ohne Angabe von expires wird nur ein Sitzungscookie gesetzt. 68 * expiresUnit: Einheit in der expires angegeben ist: 'days', 'hours', 'minutes', 'seconds'. 69 * Ohne Angabe wird expires in ms interpretiert. 70 * path: Der Pfad für den Cookie z.B.: '/'. 71 * domain: Die Domain unter der der Cookie gesetzt werden soll. 72 * secure: Cookie wird nur über https übermittelt. 73 */ 74function HRSetCookie(name, wert, config) 75{ 76 if (!name || !wert) 77 return; 78 79 try 80 { 81 var cookieStr = name + '=' + wert; 82 if (config) 83 { 84 if (typeof(config.expires) == 'number' || typeof(config.expires) == 'string') 85 { 86 var expires = (typeof(config.expires) == 'number' ? config.expires : parseInt(config.expires)); 87 var expireDate = new Date(); 88 if (typeof(config.expiresUnit) == 'string' && config.expiresUnit.length > 0) 89 { 90 switch(config.expiresUnit) 91 { 92 case 'days': 93 expireDate.setTime(expireDate.getTime() + (expires * 24 * 60 * 60 * 1000)); 94 break; 95 case 'hours': 96 expireDate.setTime(expireDate.getTime() + (expires * 60 * 60 * 1000)); 97 break; 98 case 'minutes': 99 expireDate.setTime(expireDate.getTime() + (expires * 60 * 1000)); 100 break; 101 case 'seconds': 102 expireDate.setTime(expireDate.getTime() + (expires * 1000)); 103 break; 104 default: 105 expireDate.setTime(expireDate.getTime() + expires); 106 break; 107 } 108 } 109 else 110 { 111 expireDate.setTime(expireDate.getTime() + expires); 112 } 113 cookieStr = cookieStr + '; expires=' + expireDate.toGMTString(); 114 } 115 if (typeof(config.path) == 'string' && config.path.length > 0) 116 { 117 cookieStr = cookieStr + '; path=' + config.path; 118 } 119 if (typeof(config.domain) == 'string' && config.domain.length > 0) 120 { 121 cookieStr = cookieStr + '; domain=' + config.domain; 122 } 123 if (typeof(config.secure) === 'boolean' && config.secure) 124 { 125 cookieStr = cookieStr + '; secure'; 126 } 127 } 128 document.cookie = cookieStr; 129 } 130 catch (e) 131 { 132 if (typeof(HRLogError) == 'function') 133 HRLogError(e); 134 } 135} 136 137/** 138 * Ermittelt alle Cookies und gibt diese als Array zurück. 139 * 140 * @return cookiesArray Alle Cookies in einem Array oder null, falls etwas schief gelaufen ist. 141 */ 142function HRGetAllCookies() 143{ 144 var cookiesArray = null; 145 try 146 { 147 var cookiesLine = document.cookie;
148 if (cookiesLine) 149 { 150 cookiesArray = cookiesLine.split(';') 151 } 152 } 153 catch (e) 154 { 155 if (typeof(HRLogError) === 'function') 156 HRLogError(e); 157 } 158 return cookiesArray; 159} 160 161/** 162 * Entfernt das angesprochene Cookie. 163 * 164 * Achtung: Cookies werden nicht eindeutig durch ihren Namen bestimmt. Um ein Cookie 165 * eindeutig anzusprechen, müssen Domain und Path bekannt sein! 166 * 167 * @param name Der Name des Cookies. 168 * @param domain Die Domain des Cookies. 169 * @param path Der Pfad des Cookies. 170 */ 171function HRRemoveCookie(name, domain, path) 172{ 173 try 174 { 175 if (!name || typeof(name) !== 'string' || name.length <= 0) 176 return; 177 178 if (!domain || typeof(domain) !== 'string' || domain.length <= 0) 179 return; 180 181 if (!path || typeof(path) !== 'string' || path.length <= 0) 182 return; 183 184 document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=' + path + ';domain=' + domain; 185 } 186 catch (e) 187 { 188 if (typeof(HRLogError) === 'function') 189 HRLogError(e); 190 } 191} 192 193/** 194 * Entfernt alle Cookies zu übergebenem Path und Domain. 195 * 196 * Achtung: Cookies werden nicht eindeutig durch ihren Namen bestimmt. Um ein Cookie 197 * eindeutig anzusprechen, müssen Domain und Path bekannt sein! 198 * 199 * @param domain Die Domain des Cookies. 200 * @param path Der Pfad des Cookies. 201 */ 202function HRRemoveAllCookies(domain, path) 203{ 204 try 205 { 206 if (!domain || typeof(domain) !== 'string' || domain.length <= 0) 207 return; 208 209 if (!path || typeof(path) !== 'string' || path.length <= 0) 210 return; 211 212 var cookies = HRGetAllCookies(); 213 if (cookies) 214 { 215 var i; 216 var l = cookies.length; 217 for (i = 0; i < l; i++) 218 { 219 if (cookies[i]) 220 { 221 // 222 // Um sicherzustellen, dass der Cookie gelöscht wird, wird der Löschstring auch einmal ohne Domain gesetzt. 223 // Die Domainangabe des Cookie unterscheidet sich häufig nur durch die Subdomain www. 224 // 225 document.cookie = cookies[i].split('=')[0] + '=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=' + path; 226 HRRemoveCookie(cookies[i].split('=')[0], domain, path); 227 } 228 } 229 } 230 } 231 catch (e) 232 { 233 if (typeof(HRLogError) === 'function') 234 HRLogError(e); 235 } 236} 237 238/** 239 * Funktion liefert den Wert des Cookies mit dem Namen "name". 240 * Beim Cookie-Namen wird dabei zwischen Groß- und Kleinschreibung 241 * unterschieden. 242 * Wird der Cookie nicht gefunden, wird ein Leerstring zurückgegeben. 243 * 244 * @param name Der Name des gesuchten Cookie-Werts. 245 * @return Der Wert des Cookies oder ein Leerstring. 246 */ 247function HRGetCookieValue(name) 248{ 249 try 250 { 251 var a = document.cookie; 252 var alleCookies = document.cookie.split(";"); 253 var i = 0; 254 255 for (var i = 0; i < alleCookies.length; i++) 256 { 257 var keyValue = alleCookies[i].split("="); 258 if (keyValue.length > 1 && keyValue[0].trim() === name) 259 { 260 return keyValue[1].trim(); 261 } 262 } 263 } 264 catch (e) 265 { 266 if (typeof(HRLogError) === 'function') 267 HRLogError(e); 268 } 269 return ""; 270}
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.