cookie probleem

  • Onderwerp starter Onderwerp starter batch
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

batch

Gebruiker
Lid geworden
29 apr 2009
Berichten
306
Hallo, ik wil graag dat mijn website een cookie opslaat als de gebruiker een keuze heeft gemaakt tussen de afbeeldingen. maar ik zit een beetje te knoeien hoe ik die cookie te voorschijn krijg. de inhoud van de cookie is: <img src=/afbeeldingen/QUBiCA.jpg width=800 height=200 /> de naam van de cookie is QUBiCA. maar hoe krijg ik de inhoud van de cookie op een pagina geschreven? (zodat de afbeelding QUBiCA.jpg verschijnt)

dit is de pagina waar het om gaat: (je kunt even in de broncode kijken)

www.qubica.tk/afbeeldingen/

ik heb dit al geprobeerd:

[JS]
<script type="text/javascript">
document.write(getCookie(QUBiCA);
<script>
[/JS]
dit werkt niet
HTML:
<img src="getCookie(QUBiCA)" width="800" height="200"/>
dit ook niet, hier heb natuurlijk wel de inhoud van de cookie veranderd naar /afbeeldingen/QUBiCA.jpg

dit is de code die ik gebruik om met cookies te werken:

[JS]
<script type="text/javascript">
function getCookie(name){
if (document.cookie.lenth > 0) {
begin = document.cookie.indexOf(name+"=");
if (begin != -1){
begin += name.length+1;
end = document.cookie.indexOf(";", begin);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(begin, end));
}
}
return null;
}
</script>
<script type="text/javascript">
function setCookie(name, expiredays, value, path){
var ExpireDate = new Date ();
ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
document.cookie = name + "=" + escape(value) + ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()) +( ( path ) ? ";path=" + path : "" );
}
</script>
<script type="text/javascript">
function delCookie(name) {
if (getCookie(name)) {
document.cookie = name + "=" + "; expires= Sun, 01 Jan 2012 00:00:01 GMT";
}
}
</script>
[/JS]

de functie getCookie staat natuurlijk op de pagina's waar ik de cookie opvraag. Het pad van de cookie is / (dat is volgens mij de hele server)
 
Dat komt omdat je een variabele gebruikt die niet bestaat. De var QUBiCA heb je nooit gemaakt!

Wat je eigenlijk wilt is dit:
[JS]document.write(getCookie('QUBiCA');
[/JS]Met quotes, dus. Dan is het een string, en geen variabele.
 
Maar ik wil dat de inhoud van de cookie op het scherm komt niet een variabele
 
Hoi batch,
Maar ik wil ...
Euh: eerst lezen, dan (eventueel) maren. :)
De inhoud van een cookie haal je op met wat er in de functie getCookie(name) staat.
Wat That Guy zegt, is dat de "name" die gebruikt wordt, hier geen variabele-naam is (die zonder aanhalingstekens gedeclareerd wordt), maar een text-string (die met aanhalingstekens gedeclareerd moet worden).
De text-string is hier: QUBiCA, dus moet je niet aanvragen getCookie(QUBiCA), maar getCookie('QUBiCA').

Verder zou ik er in regel 3
[JS]if (document.cookie.lenth > 0) {[/JS]
een g tussen zetten:
[JS]if (document.cookie.length > 0) {[/JS]
want de cookie.lenth is nooit groter dan 0, en dan returnt ie dus altijd null en blijven de koekjes in de trommel. :P

Met vriendelijke groet,
CSShunter
 
Nou kom ik er net achter dat het alleen op Google Chrome werkt en niet op Internet Explorer weet één van jullie waarom?
 
In de IE-instellingen zou de beveiliging zo hoog opgeschroefd kunnen zijn, dat er geen enkel cookie meer door komt (menu Extra > Internetopties > Privacy). Maar ik denk niet dat dat het is...

Met vriendelijke groet,
CSShunter
 
Ik heb nu ook werkend onder IE het probleem was dat als de cookie maak bij het aantal dagen exp opgeef i.p.v. bijvoorbeeld 365 (1 jaar):
HTML:
<a href="#" onmouseover="vervang('qubica','QUBiCA.jpg')" onclick="setCookie('QUBiCA','exp','<img src=/afbeeldingen/QUBiCA.jpg width=800 height=200 id=qubica />','/')" ><img src="QUBiCA.jpg" width="160" height="40" /></a>

dit wordt dus:

HTML:
<a href="#" onmouseover="vervang('qubica','QUBiCA.jpg')" onclick="setCookie('QUBiCA','365','<img src=/afbeeldingen/QUBiCA.jpg width=800 height=200 id=qubica />','/')" ><img src="QUBiCA.jpg" width="160" height="40" /></a>

Maar dan had ik nog iets: als de cookie die ervoor zorgt dat er een afbeelding komt niet bestaat staat er null. Hoe kan ik als die cookie niet bestaat er een standaard afbeelding neerzetten?

Je kunt het wel zien op mijn website (WWW.QUBiCA.TK) als je de cookie niet hebt gemaakt staat er helemaal bovenaan elke pagina null. Als je de cookie wel hebt komt er een afbeelding te staan. Je kunt die cookie maken door naar afbeeldingen te gaan op mijn website via het menu aan de linkerkant.
 
Laatst bewerkt:
Hoi batch,
Je kunt het wel zien op mijn website (WWW.QUBiCA.TK) ...
... tenminste als je laptop aan staat, want nu kan ik zelfs de mededeling niet zien dat de site niet werkt als je laptop niet aan staat. :p

Maar ik geloof dat je er al bent als je op elke pagina de standaard
<img src="/afbeeldingen/QUBiCA.jpg" id="qubica" alt=""/>
(en natuurlijk het javascript voor de div. cookie-functies) er in zet, en de regel return null schrapt uit de function getCookie(name).

Die return null fungeert namelijk als een "else" na de "if ... cookie gevonden ... dan return cookie-inhoud". Als het cookie niet gevonden wordt, hoeft er niets te gebeuren met de src van de id="qubica", en dat gebeurt dan ook niet: dan blijft het standaardplaatje gewoon staan.
Er hoeft in dat geval dus ook niets gereturnd te worden. :)

Met vriendelijke groet,
CSShunter

[edit]Heb je er intussen iets bij staan waardoor bij het openen van elke pagina het cookie opgevraagd wordt, en naar aanleiding daarvan het juiste img getoond wordt?
Anders werkt het alleen maar voor de pagina Afbeeldingen (en ook niet meer als je die reload).
[/edit]
 
Laatst bewerkt:
Ik had toevallig net zelf ook wat in elkaar gezet om de cookie op het scherm te krijgen als hij bestaat:

[JS]
<script type="text/javascript">
{
if (getCookie('QUBiCA')) {
document.write(getCookie('QUBiCA'));
}
else {
document.write('<img src=/afbeeldingen/QUBiCA.jpg id=qubica />');
}
}
</script>
[/JS]

dit is de functie om de cookie te lezen:
[JS]
<script type="text/javascript">
function getCookie(name){
if (document.cookie.length > 0) {
begin = document.cookie.indexOf(name+"=");
if (begin != -1){
begin += name.length+1;
end = document.cookie.indexOf(";", begin);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(begin, end));
}
}
return null;
}
</script>
[/JS]

en deze 2 om de cookie te schrijven:
[JS]
<script type="text/javascript">
function setCookie( name, value, expires, path, domain, secure ) {
var today = new Date();
today.setTime( today.getTime() );
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" : "" );
}
</script>
[/JS]

HTML:
<a href="#" onmouseover="vervang('qubica','QUBiCA.jpg')" onclick="setCookie('QUBiCA','<img src=/afbeeldingen/QUBiCA.jpg width=800 height=200 id=qubica />',365,'/','','')" ><img src="QUBiCA.jpg" width="160" height="40" /></a>

en de cookie blijft nu voor 365 dagen als het goed is.

Het werkt nu bedankt voor jullie hulp!

mijn website zet ik trouwens online als ik thuis ben van school (ongeveer 15:15) en ik zet mijn pc of laptop weer uit om 19:30 - 20:00.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan