20. august 2007 - 22:54
Der er
54 kommentarer og 1 løsning
Opret og læs cookie
Hej... Mit problem er lidt at ASP-cookie læser den på den forkerte måde så jeg vil prøve med javascript cookie... Jeg skal have et script til at læse en cookie der hedder: "count" Og så skal jeg have et script der laver en cookie der hedder "count" ud fra et parmeter fra ASP !!! NOgle der kan hjælpe med dette problem...?
Annonceindlæg fra Computerworld
20. august 2007 - 23:24
#2
Hvis du via ASP udskriver værdien til JavaScript, kan JavaScript bruge værdien.. Eksempel: <script type="text/JavaScript"> var besked = "hello <% response.write "world" %>"; alert(besked); </script> Så vil JavaScript udskrive (via en alert/dialogbox): hello world
21. august 2007 - 00:04
#3
Nu laver den en ASP-fejl... Er det noget du kan rode ud af ?
21. august 2007 - 12:34
#4
<ole> "Nu laver den en ASP-fejl..." >> mon ikke det var idé at fortælle, hvad fejlen siger? ;o) /mvh </bole>
21. august 2007 - 12:35
#5
- og vise koden, der udløser fejlen
21. august 2007 - 15:24
#6
Hej Ole... havde besluttet mig og lave scriptet om... Men det har resulteret i en fejl på Javascriptet... Har denne kode: <script> function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return "" } alert('henter cookie:'+ getCookie('count')) </script> den kan simpelhen ikke finde nogen værdi...!
21. august 2007 - 15:26
#7
Hele koden ser således ud...: værdi "sætter cookie:" = "51" værdi "henter cookie:" = "" <script> alert('sætter cookie:<%=cookie_count%>') function setCookie(c_name,value,expiredays) {var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } setCookie('count',<%=cookie_count%>,'365') function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return "" } alert('henter cookie:'+ getCookie('count')) </script>
21. august 2007 - 15:38
#8
Det her spiller som en mis: <script type="text/JavaScript"> alert('sætter cookie: 0.5') function setCookie(c_name,value,expiredays) {var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } setCookie('count',0.5,'365') function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return "" } alert('henter cookie:'+ getCookie('count')) </script>
21. august 2007 - 15:41
#9
- men jeg ville nu slette gåseøjnene om dag-antallet: setCookie('count',0.5,365); Du kan teste forskellen på med og uden gåseøjne her: function setCookie(c_name,value,expiredays) {var exdate=new Date() alert(exdate.getDate()+expiredays) exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } setCookie('count',0.5,365); setCookie('count',0.5,'365'); - pokkers til forskel ;D
21. august 2007 - 17:13
#11
Det ser da meget rigtigt ud ... jeg får både sat og læst kagen =)
21. august 2007 - 17:15
#12
Ahhhh .... nu forstår jeg. Kagen sættes/læses under ét domæne (i iframe'en) og det går fint - men den kan ikke aflæses under et andet domæne
21. august 2007 - 17:27
#13
- men der er nu andre meget væsentlige problemer med sitets kode. Har du set den i andet end IE? =8-O En tredie ting er navigationen med transparente png-24 billeder. Læg mærke til, de transparente områder ikke er aktive som links, når browseren er IE6 :)
22. august 2007 - 08:31
#14
Men er vi ikke enige om at den sætter cookie og derefter sætter den i samme vindue! Hvordan kan man få det til at virke ?? Og hvad for en browser kigger du siden igennem med ??
22. august 2007 - 08:32
#15
Navigationen ville jeg lave om på... så den fik et transperant gif billede foran...! :)
27. august 2007 - 01:10
#16
Ole... er det muligt og lave at lave sådan så hvis der f.eks. ikke findes nogle cookie på brugerens pc så vil den gå i et iframe-vindue loade en side hvor der så bliver retuneret en værdi tilbage til hoved-vinduet... alt sammen uden at hovedvinduet bliver reloadet ?
27. august 2007 - 03:35
#17
Du kan ikke scripte på tværs af domæner - det gælder også for brug af cookies. Hvis du fortæller præcis, hvad det er, du vil opnå, kan det være, vi kan komme med et alternativ
27. august 2007 - 14:08
#18
Hej ole... jeg prøver...
Jeg kalder siden
http://www.ibetthat.net/ for hoved-vindue
og iframe-siden for under-vindue...
I under-vindueet loades der et script der sender oplysninger omkring besøgene (statestik) og der for hver bruger et unikt nummer via en cookie i henhold til brugerens IP...
Også så for at fastslå om brugern i hoved-vinduet er 1, 2 eller 3 gangs besøgene skulle den gerne kunne finde den cookie...!
Håber jeg har forklaret det nogenlunde godt...?
27. august 2007 - 17:20
#20
mollo.dk kan sætte en kage, mollo.dk kan læse - men ikke en, ibetthat.net kan læse
27. august 2007 - 17:30
#21
Og det kan ikke lade sig gøre eller hvad ? Hvis nej... Hvordan kan man så løse problemmet ? Hmm...
27. august 2007 - 22:11
#22
thomas_b> Hvad er det du vil med den cookie?
27. august 2007 - 22:11
#23
Hehehe.. havde liget overset 27/08-2007 14:08:26.. :-)
27. august 2007 - 22:13
#24
I stedet for at sætte en cookie, hvor der f.eks. står = "visninger=30", skal du smide det i urlen.. Eksepel: mollo.dk?visninger=30 Så kan mollo.dk aflæse det, selvom linket kommer fra ibetthat.net..
28. august 2007 - 14:58
#25
Jo det kan den godt... Men lad os antage at der er 100 computere på en skole en lære går ind og kigger på siden... og for logget sin IP samt et unikt nummer... måske 5... Så skal den næste computer fra skolen der kommer ind på siden... den skal jo så hede 6 og det skal den jo ind og chekke i min database på mollo.dk! Så den skal tjekke hvilket tal den skal give den nye bruger, sende det til mollo.dk som så skal retunere en værdi til ibetthat.net
28. august 2007 - 15:01
#26
Du skal retænke hele opbygningen af din statistik-service - og måske vente, til du har helt styr på, hvad man kan og ikke kan ;o)
28. august 2007 - 15:02
#27
Men igen... det må jo være muligt... Hvordan har alle de andre countere så lavet deres ? Hmm
28. august 2007 - 15:10
#28
1) Hvis det er en service, du har i sinde at udbyde, skylder du evt. kunder at vide noget mere! 2) Du kan ikke scripte på tværs af domæner ... det er der ingen, der kan 3) Du er havnet i en blindgyde, hvor du ikke kommer længere og er nødt bruge helt andre fremgangsmåder
28. august 2007 - 15:55
#29
Der er ikke noget i vejen for, at ibetthat.net kalder et scripet på mollo.dk, som henter id ud fra en database, og derefter returnere det, for at ibetthat kan sætte værdien i en cookie..
Eksempel med pseudo kode:
Definitioner:
ibetthat.net = A
mollo.dk = B
A:
<script type="text/javascript" src="
http://www.B.dk/stat.php"></script> <script type="text/javascript">
function lavstat
{
v = LæsCookie;
HVIS v ER TOM
{
CookiensVærdi = SætStatId
} ELLERS {
// ELLERS-betingelsen er muligvis overflødig
}
}
</script>
Og filen stat.php, hvor nedenstående kode er pseudo kode, ser nogenlunde sådan ud:
function SætStatId
{
id = <?php
sql = "select top 1 from TabellensNavn where ip = '" . KaldetsIP . "'";
// afvikel sql
ResultatID = row["IdFeltet"];
echo ResultatID;
?>;
return id;
}
Det burde vel virke, hvis man fik lavet koden rigtigt, i stedet for pseudo koden.. eller noget.. :-)
28. august 2007 - 16:30
#30
Jeg laver i asp... :/
28. august 2007 - 16:45
#31
Så sådan da :-) id = <% ' opret forbindelse til databasen, og så: sql = "select top 1 from TabellensNavn where ip = '" & KaldetsIp & "'" set rs = conn.execute(sql) if not rs.bof or rs.eof then id = rs("IdFeltet") else id = 1 end if rs.close set rs = nothing conn.close set conn = nothing response.write id %>; Jeg har ikke testet ASP koden, men det kunne du jo gøre.. :-)
28. august 2007 - 16:48
#32
Ja... men hvordan sender jeg den til ibetthat.net ?`?
28. august 2007 - 17:36
#34
thesurfer >> Hvordan læser B en kage, som A har sat? :)
Din kunde 'ibetthat.net' skriver dette i stedet for en iframe:
<script type="text/JavaScript" src="
http://www.mollo.dk/sti/til/fil.asp?usernr=0701203402"></script> I dokumentet 'fil.asp' står de to cookie-scripts. Lad os sige, du aflæser cookie-værdien i 'fil.asp' og lægger værdien i variablen 'cookVal'. Så laver du en ny forbindelse til din server med denne kode, som også står i 'fil.asp':
var o = document.createElement("script");
o.setAttribute("type", "text/JavaScript");
o.setAttribute("src", "
http://www.mollo.dk/sti/til/stat.asp?count=" + cookVar + "&usernr=0701203402");
document.getElementsByTagName("head")[0].appendChild(o);
- hvor dette er skrevet dynamisk ind i JS-koden af 'fil.asp':
usernr=0701203402
28. august 2007 - 17:55
#35
Man kan stadig ikke læse cookies på tværs af domæner :-) Men man kan sende indholdet af cookien til de andre domæner, via urlen.. :-) Ellers var der ikke nogen ide i at bruge JavaScript til at indkludere en ASP fil på det andet domæne..
28. august 2007 - 18:05
#36
Hvorfor virker dette ikke... nu jeg vil teste det med en alert...? <script type="text/javascript"> function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return "" } function setCookie(c_name,value,expiredays) {var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } if (getCookie('count') == "") { cookiensvaerdi = SætStatId(id) } ELLERS { cookiensvaerdi = getCookie('count') } setCookie('count',cookiensvaerdi,'365') cokny = getCookie('count') alert ('-'+ cokny +'-') </script>
28. august 2007 - 18:21
#37
"ELLERS" ? :-)
Det er jo pseudokode, dvs, ikke rigtig kode..
Pseudokode bruges til at *beskrive* noget kode..
Eksempel fra
http://en.wikipedia.org/wiki/Pseudocode#Examples_of_pseudocode: En beskrivelse af koden:
<?php
if (is_valid($cc_number)) {
execute_transaction($cc_number, $order);
} else {
show_failure();
}
?>
kunne f.eks. være:
if credit card number is valid
execute transaction based on number and order
else
show a generic failure message
end if
28. august 2007 - 18:22
#38
Husk at afslutte alle dine sætninger/linier med semi-koden: if (getCookie('count') == "") { cookiensvaerdi = SætStatId(id); } else { cookiensvaerdi = getCookie('count'); } osv..
28. august 2007 - 18:32
#39
Hehe... laver ikke js normalt... Øhhhm... Hvis du reloader ibetthat.net alskelige gange kommer den med en fejl...!
28. august 2007 - 18:45
#40
Hvordan ser hele din kode ud?
28. august 2007 - 18:52
#41
A:
<script type="text/javascript" src="
http://www.mollo.dk/www/mollo.dk/stat.asp?url=<%=Request.ServerVariables ("REMOTE_ADDR")%>"></script>
<script type="text/javascript">
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
function setCookie(c_name,value,expiredays)
{var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
if (getCookie('count') == "") {
cookiensvaerdi = SætStatId(id);
} else {
cookiensvaerdi = getCookie('count');
}
setCookie('count',cookiensvaerdi,'365')
cokny = getCookie('count')
alert ('-'+ cokny +'-')
</script>
B:
function SætStatId(id){
id = <%
SQL = "SELECT top 1 * FROM log WHERE ip='"& Request.QueryString("url") &"' ORDER BY count desc"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Conn,1, 2
if rs.EOF=false then
sidst_tal_count = rs("count")+1
else
sidst_tal_count = "1"
end if
%>;
}
28. august 2007 - 19:11
#42
Så vidt jeg ved, er ÆØÅ og andre specialtegn ikke tilladt i JavaScript-scripting. Id skal også returneres med: return id; Jeg kan ikke lige se, hvad det er du sender med her: cookiensvaerdi = SætStatId(id); Så hvad er det lige at du tager imod her?: function SætStatId(id){ Her det alt hvad der er i HTML filen, som du har dit JavaScript i?
28. august 2007 - 19:13
#43
Rettelse: Er det alt hvad der er i HTML filen, som du har dit JavaScript i? Husk at læse hele forrige indlæg, flere gange, hvis nødvendigt for at du forstår/følger det.. Hvis der er noget du ikke forstår, skal du sige det øjeblikkeligt, så vi ikke spilder tid på noget jeg *tror* at du ved.. :-)
28. august 2007 - 19:15
#44
Og så er IP-delen overflødig:
?url=<%=Request.ServerVariables("REMOTE_ADDR")%>
Så vidt jeg ved, kan du altid aflæse IP adressen på computeren der kalder din fil, ved at bruge Request.ServerVariables("REMOTE_ADDR")..
Så du kan nøjes med:
<script type="text/javascript" src="
http://www.mollo.dk/www/mollo.dk/stat.asp"></script> Men mon ikke at det er en god ide, at sende usernr med (hvad end det skal bruges til)..?
28. august 2007 - 19:34
#45
Hvis du får en fejl, kopier hele fejlmeddelelsen, og linien der er fejl i.. Indlæg som "kommer den med en fejl" kan jeg ikke bruge til en sk!.. :-) Hvis jeg siger til dig "der gik noget galt", aner du jo heller ikke hvad jeg snakker om.. :-)
28. august 2007 - 20:56
#46
Nu står det således...:
A:
<script type="text/javascript" src="
http://www.mollo.dk/www/mollo.dk/stat.asp"></script> <script type="text/javascript">
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
function setCookie(c_name,value,expiredays)
{var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
if (getCookie('count') == "") {
cookiensvaerdi = statid;
} else {
cookiensvaerdi = getCookie('count');
}
setCookie('count',cookiensvaerdi,'365')
cokny = getCookie('count')
alert ('-'+ cokny +'-')
</script>
B:
function statid{
id = <%
SQL = "SELECT top 1 * FROM log WHERE ip='"& Request.ServerVariables("REMOTE_ADDR") &"' ORDER BY count desc"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Conn,1, 2
if rs.EOF=false then
sidst_tal_count = rs("count")+1
else
sidst_tal_count = "1"
end if
%>;
return id;
}
den kommer med en fejl i linien: "return id;"
28. august 2007 - 20:59
#47
tegnet '(' var ventet
28. august 2007 - 21:01
#48
der går lige en time før jeg svare igen...
29. august 2007 - 19:36
#49
Fejlen er højst sandsynligt her: function statid{ Det skal være: function statid() { Husk at afslutte JavaScript-sætninger med ";" tegnet.. pånær funktion-start-linier, if-linier og ligende..
29. august 2007 - 19:46
#50
og: cookiensvaerdi = statid(); :-)
29. august 2007 - 21:07
#51
Nu er der en fejl på selve siden (nede i venstre hjørne) linie 4 tegn 6 - men i den linie er der ingen Javascript !!!
30. august 2007 - 00:21
#52
Det er JavaScript linier, og ikke almindelige linier.. Som du kan se i mine eksempler, udskriver jeg id.. det gør du ikke. Derfor: response.write sidst_tal_count %>; return id; } Jeg siger det igen: Beskeder som "der er en fejl" kan ikke bruges til en sk!d. Enten skriver du hele fejlmeddelelsen, eller også lader du vær med at skrive noget overhovedet.
05. december 2007 - 09:28
#53
Nogle svar... :)
05. december 2007 - 15:57
#54
Her er et svar :-)
05. december 2007 - 17:07
#55
vers'go :)
Vi tilbyder markedets bedste kurser inden for webudvikling