Avatar billede spiritusanta Nybegynder
09. april 2004 - 01:55 Der er 22 kommentarer og
1 løsning

Session cookies

Hey
Har hørt at en sessioncookie vil komme ind på computeren selv om brugeren har slået cookies fra, er denne påstand korrekt?

Dvs at cookien gemmes på brugerens computer indtil han vælger at lukke websiden?

Hvordan opretter man sådan en sessioncookie?
programmere i php.
Avatar billede mcgoat Nybegynder
09. april 2004 - 02:15 #1
$_SESSION ligger i "browseren" indtil man lukker "browser vinduet".. men man kan så bruge en normal cookie istedet som kan ligge i "x antal" tid på brugerns computer.. hvis da bruger har accepteret det...

Hvis man vil lave en cookie som f.eks varer en time..

:

setcookie("TestCookie", $value, time()+3600);
Avatar billede mcgoat Nybegynder
09. april 2004 - 02:17 #2
men hvis du skal bruge en SESSION cookie.. så skal du på hver ad de sider hvor du skal tilgå den SESSION skrive session_start(); som det først på alle siderne... og derefter kan du bare tilgå dem
Avatar billede mcgoat Nybegynder
09. april 2004 - 02:20 #3
Du har f.eks side 1.php hvori der står:
<?
session_start();
?>

EN masse HTML

<?

$_SESSION['felt1'] = "MITNAVN";

?>

på side 2.php:
<?
start_session();
?>

EN masse HTML

<?

print mit navn en $_SESSION['MITNAVN'];

?>

bare et eks..
Avatar billede mcgoat Nybegynder
09. april 2004 - 02:22 #4
side2.php : (fejl før)

på side 2.php:
<?
start_session();
?>

EN masse HTML

<?

print "Mit navn er: " . $_SESSION['felt1'];

?>
Avatar billede spiritusanta Nybegynder
09. april 2004 - 02:34 #5
oki, så det du har lavet der er faktisk det man kalder en session cookie og den vil da blive liggende på computeren indtil brugeren lukker vinduet, ligemeget om brugeren har accepteret cookies eller ej?
Avatar billede mcgoat Nybegynder
09. april 2004 - 02:38 #6
tror faktisk at det er session_start() istedet... men....

du kan læse om det på http://dk2.php.net/manual/en/function.session-start.php ... men tror at en session bliver gemt både på klient og på server... men er ikke sikker
Avatar billede sukos Juniormester
09. april 2004 - 02:49 #7
session_start();

er det.
Men hvis brugeren slår cookies fra, vil brugeren få tildelt en ny session på næste side, medmindre man sender SID med på hvert link.

http://dk2.php.net/manual/en/ref.session.php
Avatar billede spiritusanta Nybegynder
09. april 2004 - 02:56 #8
Er ved at være lidt træt, men SKAL lige have lavet det her færdigt :)

Jeg vil gerne have lavet variablen sprog, der skal kunne bruges på næste side, denne variabels værdi bliver erklæret via de to links i tabellen.
hvordan får jeg nu smidt dem ind i den globale variabel sprog?

Hvis i kan hjælpe mig det kan jeg gå glad i seng :)
=========================
Kode herunder

<html>
<head>
<?
session_start();
?>
</head>
<body>

<?
$_SESSION['felt1']="Herskullesprogetgernestå";
echo "Mit navn er: " . $_SESSION['felt1'];
?>

<center>
<table border='1' width='200'>
  <tr>
    <td colspan='2'>

    </td>
  </tr>
  <tr>
    <td>
      <a href='side1.php?sprog=dansk'>Dansk</a>
    </td>
    <td>
      <a href='side1.php?sprog=engelsk'>English</a>
    </td>
  </tr>
</table>
</body>
</html>
Avatar billede mcgoat Nybegynder
09. april 2004 - 02:57 #9
er der hvis mange opsætninger der gør.. jeg har f.eks b-one og når man har startet SESSION så laver en automatisk alle links om til at den sender PHP SESID med... om det er smart eller ikke kan selvfølgelig godt diskuteres
Avatar billede sukos Juniormester
09. april 2004 - 02:59 #10
<?php
if(isset($_GET["sprog"])) {
echo $_GET["sprog"];
}
?>

Du behøver jo ikke bruge sessions hvis du sender links med en var.
Avatar billede spiritusanta Nybegynder
09. april 2004 - 03:11 #11
Ideen er at denne variabel skal være global, så alle de efterfølgende sider kan "læse" hvilket sprog brugeren har valgt.
Avatar billede mcgoat Nybegynder
09. april 2004 - 03:14 #12
du har selvfølgelig en hovedside hvor intet sprog et valgt endnu.. så det skal du vælge som start for dem "f.eks enten dk eller eng".. så har du 2 links
"'side1.php?sprog=dansk'" og
"'side1.php?sprog=English'"..

og på side1.php skal du så:
<?
session_start();
$_SESSION['SPROG'] = $_GET['sprog'];
?>

så har du så sproget gemt i din SESSION som du så altid kan hente frem igen
Avatar billede sukos Juniormester
09. april 2004 - 03:27 #13
mcgoat -> pr. default er "session.use_trans_sid" slået fra i php.ini, hvilket vil sige PHP ikke selv medsender SID i f.eks. links.

og til spm.

Jeg ville nok lave en side du linker til, som vælger sprog for dig:

get_lang.php:
<?php
session_start();

$sprog = array("da", "en", "de");

if(isset($_GET["sprog"]) && in_array($_GET["sprog"], $sprog)) {
$_SESSION["lang"] = $_GET["sprog"];
}

redir............
?>
Avatar billede sukos Juniormester
09. april 2004 - 03:29 #14
Men det nemmeste vil være blot at bruge cookies, men så får du jo ikke fat i dem som slår cookies fra. Hvis du vil ha' det, bliver det lidt mere kringlet at lave.
Avatar billede mcgoat Nybegynder
09. april 2004 - 03:31 #15
så skal man til at gemme IPO på bruger samt hvor lang tid man har været der osv... man bliver næsten nødt til at lave en side som om at "en bruger" har slået cookies til....
Avatar billede spiritusanta Nybegynder
09. april 2004 - 03:33 #16
Nej netop :)
Men må sige denne kode virker efter hensigten.

Men så lige et sidste spørgsmål før sengetid, hvis i vil svare :)

Kan jeg ikke lave $_SESSION['sprog'] om til variablen $sprog?
sådan at jeg eks. kan skrive

echo "Dit sprog er $sprog";

istedet for at skulle skrive

echo "Valgte sprog:" . $_SESSION['sprog'];

min kode herunder
====================
<html>
<head>
<?
session_start();
$_SESSION['sprog'] = $_GET['sprog'];
?>
</head>
<body>
<center>
<table border='1' width='200'>
  <tr>
    <td colspan='2'>
      <?
    echo "Valgte sprog:" . $_SESSION['sprog'];
      ?>
    </td>
  </tr>
  <tr>
    <td>
      <a href='side1.php?sprog=dansk'>Dansk</a>
    </td>
    <td>
      <a href='side1.php?sprog=engelsk'>English</a>
    </td>
  </tr>
</table>
</body>
</html>
Avatar billede mcgoat Nybegynder
09. april 2004 - 03:36 #17
tror jeg godt man kan, men kommer an på hvad man har slået til i sine indstillinger... tror den anden måde virker lige meget hvad....
Avatar billede sukos Juniormester
09. april 2004 - 03:37 #18
1. Sørg for først at tjekke om en f.eks. $_GET er sat if(isset($_GET["sprog"]))
2. Lav et array med dine forskellige sprog
Avatar billede spiritusanta Nybegynder
09. april 2004 - 03:40 #19
Der er vel ikke den store grund til at oprette et array, når den førhen viste kode fungere fint efter hensigten :)

Men det var mere om jeg har mulighed for at lægge variablen $_SESSION['sprog'] ind i $sprog, da den er lidt nemmere at bruge, synes jeg :p

Er ikke så rutineret i php endnu :)
Avatar billede sukos Juniormester
09. april 2004 - 03:49 #20
Den sidste kode virker vel ikke?
Du skal bruge session_start() førend du laver output.
array'et er for at tjekke det er korrekt.
En lille omskrivning af de sidste eks.

<?php
session_start();

$sprogvars = array("da", "en", "de");

if(isset($_GET["sprog"]) && in_array($_GET["sprog"], $sprogvars)) {
$_SESSION["lang"] = $_GET["sprog"];
}else{
$_SESSION["lang"] = "da";
}

$sprog = $_SESSION["lang"];

?>
<html><head><title>Sprog</title></head>
<body>
<center>
<table border='1' width='200'>
  <tr>
    <td colspan='2'><?php echo "Valgte sprog: " . $sprog; ?></td>
<?php
foreach($sprogvars as $link) {
echo"</tr><tr>\n";
echo"    <td><a href=\"". $_SERVER["PHP_SELF"] ."?sprog=". $link ."\">". $link ."</a></td>\n";
}
?>
</tr>
</table>
</body>
Avatar billede spiritusanta Nybegynder
09. april 2004 - 03:58 #21
hehe sukos, du vil bare have det script det ;)
Men vil nu hellere bruge det andet, da det er meningen at på min rigtige hjemmeside, skal være 2 flag i bunden, så brugeren enten kan vælge dansk eller engelsk, derfor 2 links :)

www.bjerrumsoft.frac.dk

Men det hele virker nu, mange tak til jer begge :D

Herunder min færdige kode
==============================
<html>
<head>
<?
session_start();
$_SESSION['sprog'] = $_GET['sprog'];
$sprog = $_SESSION["sprog"];
?>
</head>
<body>
<center>
<table border='1' width='200'>
  <tr>
    <td colspan='2'>
      <?
    echo "Du har valgt $sprog";
      ?>
    </td>
  </tr>
  <tr>
    <td>
      <a href='side1.php?sprog=dansk'>Dansk</a>
    </td>
    <td>
      <a href='side1.php?sprog=engelsk'>English</a>
    </td>
  </tr>
</table>
</body>
</html>
Avatar billede sukos Juniormester
09. april 2004 - 04:00 #22
IKKE:
<html>
<head>
<?
session_start();
$_SESSION['sprog'] = $_GET['sprog'];
$sprog = $_SESSION["sprog"];
?>

Men:

<?
session_start();
$_SESSION['sprog'] = $_GET['sprog'];
$sprog = $_SESSION["sprog"];
?>
<html>
<head>

:O)
Avatar billede spiritusanta Nybegynder
09. april 2004 - 04:02 #23
ahh retter det med det samme, ellers har jeg sikkert glemt det i morgen :D
mange tak :)
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