Avatar billede xited Praktikant
14. august 2003 - 14:44 Der er 25 kommentarer og
1 løsning

Cookie eller hvad?

Jeg har dette script:

<html><body><iframe border='0' width='180' height='70' src='http://siden.dk/siden.php?id=TvzWWYcQFnmv4dkv'></iframe>

men istedet skal den hente "TvzWWYcQFnmv4dkv" fra en cookie der bliver liggende på brugeren pc


Jeg skal ydermere have noget kode til hvordan den selvsamme cookie kan blive skrevet fra et andet script...
Avatar billede roenving Novice
14. august 2003 - 14:54 #1
<html>
<head>
<script language="javascript" type="text/javascript">
function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1,2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
}
function hentCookie(name){
    if (document.cookie){
        var n = document.cookie.indexOf(name+"=");
        if (n>-1){
            var val = document.cookie.substring(n+name.length+1);
            n = val.indexOf(";");
            if(n>-1)val=val.substring(0,n);
            return unescape(val);
        }
    }
}
function loadSrc(){
cook = hentCookie('side);
frames[side].location.href="http://siden.dk/siden.php?id="+cook;
}
</script>
</head>

<body onload="loadSrc()">
<iframe border='0' width='180' height='70' name='side' src='about:blank'></iframe>
</body>
</html>


Og du skriver værdien med f.eks.
onclick="skrivCookie('side','TvzWWYcQFnmv4dkv',1)"
holder 1 dag
Avatar billede roenving Novice
14. august 2003 - 14:55 #2
Hov

cook = hentCookie('side');
;O)
Avatar billede xited Praktikant
14. august 2003 - 15:01 #3
1 dag ??? den skal holde for evigt...
Avatar billede xited Praktikant
14. august 2003 - 15:03 #4
kan man sætte en onclick på <input type='submit' value='Opret'> ???
Avatar billede xited Praktikant
14. august 2003 - 15:04 #5
og hvad gør:

frames[side].location.href="http://siden.dk/siden.php?id="+cook;

???
Avatar billede roenving Novice
14. august 2003 - 15:06 #6
Ja, da !-)

Men det vil være smartere at bruge andre muligheder: <input type="button">, <button></button> eller <a href="java script:skrivCookie(osv...)"></a>

-- og som jeg læser det jeg har skal der være en expiration date på, så et eller andet stort tal må vel være fint

onclick="skrivCookie('side','TvzWWYcQFnmv4dkv',10000)"
Avatar billede roenving Novice
14. august 2003 - 15:07 #7
Den sætter den side, som har den givne adresse ind i iframen (som jeg har givet et name="side" !-)
Avatar billede xited Praktikant
14. august 2003 - 15:12 #8
Den laver blot about:blank på denne:



<html>

<head>
<script language="javascript" type="text/javascript">
function hentCookie(name){
    if (document.cookie){
        var n = document.cookie.indexOf(name+"=");
        if (n>-1){
            var val = document.cookie.substring(n+name.length+1);
            n = val.indexOf(";");
            if(n>-1)val=val.substring(0,n);
            return unescape(val);
        }
    }
}
function loadSrc(){
cook = hentCookie('side);
frames[side].location.href="http://dumazz.dk/webtimer.php?id="+cook;
}
</script>
</head>
<body onload="loadSrc()">
<iframe border='0' width='180' height='70' name='side' src='about:blank'></iframe>
</body></html>
Avatar billede xited Praktikant
14. august 2003 - 15:13 #9
og kan jeg tjekke om cookien er blevet lavet ???
Avatar billede xited Praktikant
14. august 2003 - 15:14 #10
Bliver skrevet af dette:

<script language="javascript" type="text/javascript">
function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1,2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
</script>

<input type='submit' value='Opret' onclick='skrivCookie('side','$type',10000)'>
Avatar billede roenving Novice
14. august 2003 - 15:21 #11
-- Du fik ikke min rettelse 14:55:37 med !-)

For at teste kan du prøve at indsætte:

function loadSrc(){
cook = hentCookie('side');
alert(cook);
frames[side].location.href="http://dumazz.dk/webtimer.php?id="+cook;
}
Avatar billede xited Praktikant
14. august 2003 - 15:24 #12
Den giver en Undefined...
Avatar billede roenving Novice
14. august 2003 - 15:38 #13
<input type='submit' value='Opret' onclick="skrivCookie('side','$type',10000)'">
Avatar billede roenving Novice
14. august 2003 - 15:39 #14
Hov, der var oz en ' for meget:

<input type='submit' value='Opret' onclick="skrivCookie('side','$type',10000)">
Avatar billede xited Praktikant
15. august 2003 - 10:47 #15
Det virker stadig ikke...

Den giver stadig undefined...
Avatar billede xited Praktikant
15. august 2003 - 10:51 #16
Er der evt. fejl i denne:

<script language="javascript" type="text/javascript">
function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1,2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
</script>


???
Avatar billede xited Praktikant
15. august 2003 - 10:52 #17
Og kan man lave en cookie selv, så man kan fjerne mistanken om at der ikke er fejl i "hent cookie" modulet...
Avatar billede xited Praktikant
15. august 2003 - 10:56 #18
Du får lige hele det script der er beregnet på at skrive cookien:



<html><head>
<script language="javascript" type="text/javascript">
function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1,2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
</script>

</head><body>
<?

echo"<h1>Webtimer Support<p><h3>Siden for Webtimer Support kommer i fremtiden til at indeholde features vedr. nye versioner, multibruger-adds og meget mere<p>Opret ny bruger:<p>

";
function password ($len=8) {
  $chars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789";
  mt_srand( (double) microtime() * 1000000);
  for ($i=1;$i<=$len;$i++) $out .= $chars[mt_rand(0,(strlen($chars)-1))];
return $out;
}
$type= password(16);
echo"

<form action='?index=webtimer' method='post'>
<input type='hidden' name='opret' value='ny'>
<input type='hidden' name='out' value='$type'>
<font size='1'>
<input type='submit' value='Opret' onclick='skrivCookie('side','$type',10000)'>
</form>
";

if($opret){
echo"Bruger id:<p>$out<p>Denne skal gemmes til evt. henvendelse til Dumazz.dk";
}


?>




Er der noget galt med den ???
Avatar billede roenving Novice
15. august 2003 - 12:20 #19
Ja, du har fået nestet javascript stremg-delimiters ulovlig (åbenbart for at undgå php-fejl!-)

så:

echo"

<form action='?index=webtimer' method='post'>
<input type='hidden' name='opret' value='ny'>
<input type='hidden' name='out' value='$type'>
<font size='1'>
<input type='submit' value='Opret' onclick='skrivCookie(\42side\42,\42$type\42,10000)'>
</form>
";
Avatar billede roenving Novice
15. august 2003 - 12:28 #20
-- og der _er_ fejl i skrivCookie -- der er faldet en } ud:

<script language="javascript" type="text/javascript">
function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1,2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
}
</script>
Avatar billede roenving Novice
15. august 2003 - 12:35 #21
Og så fik jeg problemer, så vi må flytte en del af koden udenfor php-koden:
echo"

<form action='?index=webtimer' method='post'>
<input type='hidden' name='opret' value='ny'>
<input type='hidden' name='out' value='$type'>
";?>
<font size='1'>
<input type='submit' value='Opret' onclick='skrivCookie("side","<?$type?>",10000)'>
</form>
<?

-- eller hvad der nu skal stå, når det skrives på den måde ( <?$type?> )
Avatar billede xited Praktikant
29. august 2003 - 14:51 #22
Du kan ligeså godt få hele scriptet, her kommer det, og den skriver ikke en cookie, når man trykker opret, (skal endda overskrive den gamle, ved ikke om det er et problem)





<html><head>
<script language="javascript" type="text/javascript">
function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1,2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
</script>

</head><body>
<?
if($id){

include('connect.php');

$data = mysql_query("SELECT * from webtimer where id ='$id' order by id")or die(mysql_error);
$row = mysql_fetch_array($data);

$time = $row[time]+1;
$dato = date('d-M-Y', time());
if($row[dato]!=$dato){$time=1;}

mysql_query("update webtimer set time = '$time' where id = '$id'");
mysql_query("update webtimer set dato = '$dato' where id = '$id'");
$time=$time/2;
$time = explode(".",$time);
if($time[0]<60){$hour = "00";
$bg="ffffff";
}else{
$bg="ff0000";

$hour = (int) ($time[0]/60);
$time[0] = $time[0]%60;

}
$time[1] = $time[1]*6;
if($time[0]<10){$tag="0";}
if($time[1]<10){$tag1="0";}
echo"<html><body bgcolor='$bg' ondragstart='return false' onselectstart='return false' oncontextmenu='return false'><font face='Arial' size='1'><b>Brugt idag: $hour:$tag$time[0]:$tag1$time[1]<br><a href='http://dumazz.dk/?index=webtimer' target='_blank' title='Første gang du anvender programmet skal du oprette dig'>Opret</a> | © Xited";

}else{

echo"<h1>Webtimer Support<p><h3>Siden for Webtimer Support kommer i fremtiden til at indeholde features vedr. nye versioner, multibruger-adds og meget mere<p>Opret ny bruger:<p>

";
function password ($len=8) {
  $chars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789";
  mt_srand( (double) microtime() * 1000000);
  for ($i=1;$i<=$len;$i++) $out .= $chars[mt_rand(0,(strlen($chars)-1))];
return $out;
}
$type= password(16);
echo"

<form action='?index=webtimer' method='post'>
<input type='hidden' name='opret' value='ny'>
<input type='hidden' name='out' value='$type'>
<font size='1'>
<input type='submit' value='Opret' onclick='skrivCookie('side','$type',10000)'>
</form>

";

if($opret){
$dato = date('d-M-Y', time());
$time=1;


mysql_query("insert into webtimer (time, id, dato) values ('$time','$out','$dato')");
echo"Bruger id:<p>$out<p>Denne skal gemmes til evt. henvendelse";
}

}
?>
Avatar billede roenving Novice
03. september 2003 - 14:44 #23
Ja, undskyld det tog så lang tid at vende tilbage, men da jeg har haft en lang task-list har det været lidt svært også at skulle prøve at gennemskue php-koden ...

-- men der er ihvertfald en fejl af en type som ikke vil virke i linjen hvor submit-knappen skrives (her rettet):

<input type='submit' value='Opret' onclick='skrivCookie(\42side\42,\42$type\42,10000)'>

-- det var den jeg forsøgte at rette med kommentaren 15/08-2003 12:35:57 !-)
Avatar billede xited Praktikant
06. oktober 2003 - 13:29 #24
Takker for hjælpen, pointene ?
Avatar billede roenving Novice
06. oktober 2003 - 14:28 #25
Velbekomme '-)
Avatar billede roenving Novice
28. oktober 2003 - 23:27 #26
-- og tak for points ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester