Avatar billede blackscorpion Nybegynder
26. november 2004 - 11:57 Der er 35 kommentarer og
1 løsning

Seriøs Session Hjælp.

Hej Eksperter.

jeg har brug for noget seriøs hjælp til sessions.

har før i tiden godt kunne få dem til at virke med måde, men nu virker intet af hvad jeg laver.

har prøvet noget så simplet som at tage et eksempel fra php.net, og det virker heller ikke.

nogle der kan hvorfor og hvordan?

# Index.php ################################
<?php
// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal']  = 'cat';
$_SESSION['time']    = time();

// Works if session cookie was accepted
echo '<br /><a href="index2.php">page 2</a>';

// Or maybe pass along the session id, if needed
echo '<br /><a href="index2.php?' . SID . '">page 2</a>';
?>

# Index2.php ##############################
<?php
// page2.php

session_start();

echo 'Welcome to page #2<br />';

echo $_SESSION['favcolor']; // green
echo $_SESSION['animal'];  // cat
echo date('Y m d H:i:s', $_SESSION['time']);

// You may want to use SID here, like we did in page1.php
echo '<br /><a href="index.php">page 1</a>';
?>


Eksemplet er taget fra: http://dk.php.net/manual/da/function.session-start.php
Avatar billede blackscorpion Nybegynder
26. november 2004 - 11:59 #1
Det der sådan set primært undre mig, er at SID går tabt når man hopper tilbage til side 1. :(

og har ikke helt fundet ud af hvorfor. :(
Avatar billede rhandersen Nybegynder
26. november 2004 - 12:00 #2
Hvad af det kan du ikke få til at virke?
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:02 #3
sådan set bare det hele.

når jeg regger noget i $_SESSION[''] så forsvinder det, og alt går tabt.

og som sagt, i det her eksempel, går SID tabt. :(
Avatar billede rhandersen Nybegynder
26. november 2004 - 12:06 #4
<?
session_start();
$_SESSION["test"] = "test";
$test = $_SESSION["test"];
if($test == "test"){
echo "det virker!";
}
elseif($test != ""){
echo "det virker ikke!";
}
else{
echo "der opstod en fejl";
}
?>


//prøv det script, og sig hvad den siger:D
Avatar billede rhandersen Nybegynder
26. november 2004 - 12:06 #5
sry fejl!
<?
session_start();
$_SESSION["test"] = "test";
$test = $_SESSION["test"];
if($test == "test"){
echo "det virker!";
}
elseif($test != "test"){
echo "det virker ikke!";
}
else{
echo "der opstod en fejl";
}
?>
Avatar billede rhandersen Nybegynder
26. november 2004 - 12:07 #6
sådanna
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:08 #7
Får denne besked: "det virker!" :)
Avatar billede rhandersen Nybegynder
26. november 2004 - 12:09 #8
men tror du ik at du skal afprøve din session på en ny side?
Avatar billede rhandersen Nybegynder
26. november 2004 - 12:09 #9
så virker den jo?
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:09 #10
men det der beviser jo intet, da SID også virker på første side.
men når jeg så hopper tilbage til side 1 så er SId væk...
Avatar billede sukos Juniormester
26. november 2004 - 12:10 #11
SID forsvinder hvis din browser tillader cookies

<?php
ini_set('session.use_cookies', 0);

session_start();

.........................
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:11 #12
prøv at hoppe ind på http://jan.alabit.dk/ og kig på det nederste link.

Der kan du se at den skriver SID i linket.

Tryk så på linket, du kommer til side 2.

og så tryk på linket på side 2 for at komme tilbage til side 1, vup, SID er væk fra det nederste link.
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:12 #13
okey men hvorfor er den der så i første omgang?
Avatar billede sukos Juniormester
26. november 2004 - 12:13 #14
Fordi session.use_trans_sid er sat til 1 i php.ini, formodentlig da!
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:15 #15
okey det forstår jeg ikke særligt meget af, men fred være med det.

man kan se hvad forskel der reelt er når man bruger
ini_set('session.use_cookies', 0);

da på side 1, første link, kværner sessions tiden, og link 2 viser det fint nok.

hvad ville være smartest at bruge?

med eller uden visuel SID ?
Avatar billede sukos Juniormester
26. november 2004 - 12:16 #16
Hov, du be'r jo om at den skal udskrive SID, men i det øjeblik PHP har "fået lov" til at sætte en session cookie, "fjernes den"
Avatar billede rhandersen Nybegynder
26. november 2004 - 12:16 #17
ok prøv at smide det her ind på en side der hedder sideet.php:

<?
session_start();
if($_SESSION["test"] == "test"){
echo "det virker da!";
}
else
{
echo "der er noget galt!";
}
$_SESSION["test"] = "test";
?>
<a href="sideto.php">TEST den</a>

Og det her ind på sideto.php:

<?
session_start();
$test = $_SESSION["test"];
if($test == "test"){
echo "det virker!";
}
elseif($test != "test"){
echo "det virker ikke!";
}
else{
echo "der opstod en fejl";
}
?>
<a href="sideet.php">Gå tilbage og test</a>
Avatar billede sukos Juniormester
26. november 2004 - 12:17 #18
Personligt, vil jeg nu sige uden, fordi du så ikke kommer i "klammeri" med folk som sender et link som indeholder session_id()
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:18 #19
ja noget jeg lige har lavet for at tjekke. ;)

Er ikke en del af det oprindelige eksempel fra php.net.

og hvor smart er det egenligt at bruge session_name() ?

Er nemlig ude i at jeg skal flække en simpel indkøbsvogn sammen til en ven, så kan han lege videre med den, for at lære php/mysql bedre at kende.
Avatar billede rhandersen Nybegynder
26. november 2004 - 12:18 #20
hvad siger den så?
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:20 #21
okey.

har lige smidt dit eksempel op.

kig selv på jan.alabit.dk først siger den der er noget galt, hopper til næste side, og så tilbage for at teste, og så virker det.

hvad betyder det helt?? *er ret grøn med sessions*
Avatar billede sukos Juniormester
26. november 2004 - 12:38 #22
For at sikre det er den samme bruger (så'n nogenlunde da) som ser de forskellige sider

tjek_user.php:

<?php
session_start();

if(!isset($_SESSION["id"], $_SESSION["ip_adr"])) {
$_SESSION["id"] = session_id();
$_SESSION["ip_adr"] = $_SERVER["REMOTE_ADDR"];
}

echo"Id = ". $_SESSION["id"] ."<br>\n";
echo"Ip-adresse = ". $_SESSION["ip_adr"] ."<p>\n";

echo"<a href=\"". $_SERVER["PHP_SELF"] ."\">Reload</a><br>\n";
echo"<a href=\"tjek_user2.php\">side 2</a>";

?>


tjek_user2.php

<?php
session_start();

if(isset($_SESSION["id"], $_SESSION["ip_adr"])) {
    if($_SESSION["id"] != session_id() || $_SESSION["ip_adr"] != $_SERVER["REMOTE_ADDR"]) {
echo"Nix!";
exit;
    }
}else{
echo"Nix!";
exit;
}


echo"Id = ". $_SESSION["id"] ."<br>\n";
echo"Ip-adresse = ". $_SESSION["ip_adr"] ."<p>\n";

echo"<a href=\"tjek_user.php\">side 1</a>";

?>
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:39 #23
prøver
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:40 #24
så var der noget der virkede.

ALT er det samme. ;)
Avatar billede sukos Juniormester
26. november 2004 - 12:40 #25
tjek_user.php kan ses af alle.

Og man skal ha' været på siden, for at kunne se tjek_user2.php
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:43 #26
nice. dvs. når man får en nix, så istedet for at skrive niks, kan man smide folk tilbage til forsiden, eller hvor pokker man nu vil have brugeren starter. ;)

lige en anden ting.

ang. en indkøbsvogn, ville det ikke være smartest først at bruge en session, når brugeren tilføjer den første vare til indkøbskurven?
Avatar billede sukos Juniormester
26. november 2004 - 12:47 #27
njahh, de sider hvor man kan se de forskellige varer, skal jo bruge session_start().
Og du kan jo så tjekke for indhold, for at vise valgte varer, eller skrive "Din kurv er tom" hvis der ikke er valgt nogen.
Jeg ville bruge sessions fra start af
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:51 #28
Okey. så vil jeg gå i krig, men det er nok ikke det sidste spørgsmål jeg smider idag. ;)

Sååå.

Tak for hjælpen, rart endeligt at kunne lave noget nu der virker.

da jeg smed min egen hjemmeside op på mit webhotel, virkede.. 80% af det ikke, eller noget i den stil, og kørte død i hvor det gik galt, så har fjernet de ting som ikke virkede, og min hjemmeside er nu nede på at være 25% af hvad den har været. :(

Ret trist, når det er en frontløber for hvad man kan. *G*

Men tak for hjælpen igen. ;)
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:52 #29
forresten jeg skal ikke bruge session_close(); på nogle af siderne vel? kun når brugeren smutter, så bruger en session_unset(); ?
Avatar billede sukos Juniormester
26. november 2004 - 12:55 #30
For at slette en session helt og aldeles:

$_SESSION = array();
session_destroy();

Hvis du vil slette en enkelt session

unset($_SESSION["navn"]);
Avatar billede blackscorpion Nybegynder
26. november 2004 - 12:55 #31
okey tak. ;)
Avatar billede sukos Juniormester
26. november 2004 - 12:57 #32
Og husk, bliv ved med at registrere dine session med
$_SESSION["var"] = "noget";

ikke noget med at bruge
$var = "noget"
session_register("var");

:O)
Avatar billede blackscorpion Nybegynder
26. november 2004 - 13:00 #33
det nummer tror jeg faktisk aldrig jeg har gjort..

kan lige poste et eksempel fra min hjemmeside som ikke virker. *G*
Avatar billede blackscorpion Nybegynder
26. november 2004 - 13:02 #34
har husket session_start(); i toppen.

og ingen af de 2 ting her virker.

/*
$_SESSION['usr'] = $usr;
$_SESSION['password'] = $password;
$_SESSION['logged_in'] = $logged_in;
$_SESSION['status'] = $status;
$_SESSION['time'] = $time;
*/

session_register("usr");
session_register("password");
session_register("logged_in");
session_register("status");
session_register("time");
/*
session_write_close();
*/

så jo har lavet det nummer men mener det virkede fint i de tidligere udgaver af php.
så røg ret meget på herrens mark, da jeg ikke kunne få noget til at virke. :(
Avatar billede blackscorpion Nybegynder
26. november 2004 - 13:13 #35
hmmm

kan du svare mig på hvorfor dette ikke virker??

<?php

session_start();

if(isset($_SESSION["count"])) {
$_SESSION["count"] = 0;
}
else {
$_SESSION["count"] = $_SESSION["count"] + 1;
}

?>

...

Count: <?php echo $_SESSION["count"]; ?>


????????????
Avatar billede blackscorpion Nybegynder
26. november 2004 - 13:15 #36
hehe never mind, har fundet fejlen. *G*

manglede et ! foran isset. *G*
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