Avatar billede bengun Novice
10. juli 2005 - 13:28 Der er 36 kommentarer og
1 løsning

Session_Start() virker ikke efter hensigten

Hej

Jeg kan ikke få session_start() til at virke efter hensigten. Når den er sat skal jeg beholde den session_id som jeg tildeles første gang, men jeg får en ny hver gang.....

Mit lille program:
<?php
session_start();

session_save_path('c:\temp');

if(!isset($_SESSION['counter']))
{
    $_SESSION['counter']=1;
}

$cid = session_id();
$cpath = session_save_path();

echo "ID: $cid<br>";
echo "Path: $cpath<br>";

echo('Du har set denne side '.$_SESSION['counter'].' gange');

$_SESSION['counter']++;

?>

Hvad gør jeg forkert ???????????
Avatar billede barklund Nybegynder
10. juli 2005 - 13:32 #1
virker counteren ikke? Tæller den rigtigt op?
Avatar billede bengun Novice
10. juli 2005 - 13:38 #2
Nej, den tæller kun til én hver gang og jeg får et nyt sesion ID hver gang...
Avatar billede barklund Nybegynder
10. juli 2005 - 13:54 #3
Ligger session-filerne i c:\temp? Modtager du en cookie fra serveren? Sender du denne cookie til serveren bagefter?
Avatar billede kimg Nybegynder
10. juli 2005 - 13:59 #4
Hvis jeg forstår dig rigtigt, vil du gemme "session_id" til næste besøg ?
Så skulle du overveje at sætte en cookie med "session_id", da en sessions dør når browseren lukkes.

Kim
Avatar billede barklund Nybegynder
10. juli 2005 - 14:01 #5
Jeg går ud fra at browseren forbliver åben. Og session-id'et bliver gemt i en cookie - men en cookie uden udløbstid og dermed en session-cookie (som browseren flusher, når den lukkes ned)
Avatar billede bengun Novice
10. juli 2005 - 14:35 #6
Browseren forbliver åben og jeg tryker ku på "refresh" og der bliver ikke gemt noget i c:\temp
Avatar billede bengun Novice
10. juli 2005 - 14:59 #7
Selv om jeg definerer session_id, så bliver der ikke oprettet nogen fil i c:\temp og det er det jeg ikke forstår noget af..........
Avatar billede ksoren Nybegynder
10. juli 2005 - 16:17 #8
session_save_path('c:\temp');

skal kaldes før session_start() hvis den skal have effekt
Avatar billede bengun Novice
10. juli 2005 - 16:28 #9
hej ksoren

Jeg har nu byttet rundt som du beskriver, men desværre ikke med nogen ændring i resultatet......
Avatar billede sukos Juniormester
10. juli 2005 - 16:30 #10
Prøv:

<?php
ini_set('display_errors', 1);
ini_set('error_reporting', "E_ALL");


session_start();

session_save_path('c:\temp');

if(!isset($_SESSION['counter']))
{
    $_SESSION['counter']=1;
}

$cid = session_id();
$cpath = session_save_path();

echo "ID: $cid<br>";
echo "Path: $cpath<br>";

echo('Du har set denne side '.$_SESSION['counter'].' gange');

$_SESSION['counter']++;

?>
Avatar billede sukos Juniormester
10. juli 2005 - 16:30 #11
Og. selvf sætte save_path før session_start() :O)
Avatar billede bengun Novice
10. juli 2005 - 16:32 #12
Hej sukos

Hvad gør:
ini_set('display_errors', 1);
ini_set('error_reporting', "E_ALL");
Avatar billede sukos Juniormester
10. juli 2005 - 16:33 #13
Viser alle fejlmeddelser, hvis ellers du har lov til at bruge ini_set()
Avatar billede sukos Juniormester
10. juli 2005 - 16:36 #14
Virker fint for mig:

<?php
ini_set('session.save_path', "C:/temp/");

session_start();

if(!isset($_SESSION['counter']))
{
    $_SESSION['counter']=1;
}

$cid = session_id();
$cpath = session_save_path();

echo "ID: $cid<br>";
echo "Path: $cpath<br>";

echo('Du har set denne side '.$_SESSION['counter'].' gange');

$_SESSION['counter']++;

?>
Avatar billede bengun Novice
10. juli 2005 - 16:40 #15
Jeg er ked af at sige det, men counter forbliver på 1........ :o(

Er der noget generelt, jeg kan mangle ????
Avatar billede bengun Novice
10. juli 2005 - 16:42 #16
Hvis det kan hjælpe noget så er mit link her.

http://www.holbaek-sejlklub.dk/andet/counter_2.php
Avatar billede sukos Juniormester
10. juli 2005 - 16:46 #17
Hmm, bruger du ini_set() med fejlmeddelser

Er det din egen server?

Og sourcekode til fil er jo altid godt! :O)

<?php
ini_set('session.save_path', "C:/temp/");

session_start();


if(!isset($_SESSION['counter']))
{
    $_SESSION['counter']=1;
}

$cid = session_id();
$cpath = session_save_path();

echo "ID: $cid<br>";
echo "Path: $cpath<br>";

echo('Du har set denne side '.$_SESSION['counter'].' gange');

$_SESSION['counter']++;

echo"<p>";

show_source($_SERVER["SCRIPT_FILENAME"]);

?>
Avatar billede bengun Novice
10. juli 2005 - 16:48 #18
Min kode er her:

<?php

ini_set('display_errors', 1);
ini_set('error_reporting', "E_ALL");

ini_set('session.save_path', "C:/temp/");

session_start();

session_id('testtest');

if(!isset($_SESSION['counter']))
{
    $_SESSION['counter']=1;
}

$cid = session_id();
$cpath = session_save_path();

echo "ID: $cid<br>";
echo "Path: $cpath<br>";

echo('Du har set denne side '.$_SESSION['counter'].' gange');

$_SESSION['counter']++;

?>
Avatar billede bengun Novice
10. juli 2005 - 16:50 #19
Nej det er ike min egen server
Avatar billede sukos Juniormester
10. juli 2005 - 16:57 #20
Prøv med sidste script jeg postede!

Og vil du definere session_id() skal du også gøre før start, vil jeg mene.
Og hvorfor gøre det iøvrigt?
Avatar billede bengun Novice
10. juli 2005 - 21:49 #21
Session_id var kun for at prøve noget andet.......

Jeg har prøvet dit eksempel og nu opretter den en fil på c:\temp , men filen indeholder ingenting og Counter tælles ikke op....
Avatar billede bengun Novice
11. juli 2005 - 08:57 #22
Hej sukos

Det er kun lykkedes mig en gang at få den til at oprette en sess_ fil på c:\temp. Alle andre gange der trykkes på Refresh, tildeles der et nyt Session_id
Avatar billede sukos Juniormester
11. juli 2005 - 09:06 #23
Det er ikke din server, men du har adgang til C:\temp???
Anyway, hvis nu du ikke definerer session.save_path, virker det så?
Altså IKKE noget med at definere noget, blot bruge sessions
Avatar billede sukos Juniormester
11. juli 2005 - 09:09 #24
<?php
session_start();

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

echo $_SESSION["count"];

?>
Avatar billede barklund Nybegynder
11. juli 2005 - 12:37 #25
Hey? session-savepath er altså stien hvor session gemmes på serveren - ikke på din computer. Fjern alt det med savepath og lad serveren gemme, hvor den har lyst. Serveren er desuden en *nix-maskine (Server: Apache-AdvancedExtranetServer/2.0.48 (Mandrake Linux/6mdk) mod_perl/1.99_11 Perl/v5.8.3 auth_mysql/1.11 mod_ssl/2.0.48 OpenSSL/0.9.7c PHP/4.3.4), så der findes slet ikke noget, der hedder c:\temp
Avatar billede bengun Novice
11. juli 2005 - 16:36 #26
hej

nu har jeg prøvet det simple som sukos har foreslået, men den viser 1 og ikke andet, uanset hvor mange gange jeg trykker på Refresh.
Avatar billede ksoren Nybegynder
11. juli 2005 - 16:41 #27
Har du undersøgt det med cookien?

Når du står på siden, så prøv at kør denne kode i adressefeltet:

java script:alert(document.cookie)

så kan du se om browseren har accepteret cookien fra serveren
Avatar billede bengun Novice
11. juli 2005 - 16:46 #28
Hej barklund

Hvordan kan jeg så, få session_save.path til at pege på en directory på serveren, i det område som jeg har adgang til ??

På serveren hedder, det jeg har adgang til /public_html
Avatar billede bengun Novice
11. juli 2005 - 16:47 #29
Hej ksoren

DEn returnerer en tom alert med en OK knap
Avatar billede ksoren Nybegynder
11. juli 2005 - 17:07 #30
Så får/accepterer du ingen cookies. Den skal gerne vise noget med PHPSESSID
At du kontrolleret opsætningen i browseren?

/public_html er til de dokumenter som brugere udefra kan hente. Det har intet med sessions at gøre
Avatar billede bengun Novice
11. juli 2005 - 18:02 #31
Jeg bruger IE 6.0.29, men jeg kan ikke umiddelbart finde nogle steder der har noget med cookies at gøre.........
Avatar billede bengun Novice
11. juli 2005 - 20:30 #32
Jeg har tjekket opsætningen på min browser og alt vedr. Cookies skulle være tilladt. Så jeg begriber ikke hvorfor det ikke virker...
Avatar billede sukos Juniormester
11. juli 2005 - 20:38 #33
Gider du prøve at uploade flg. til dit host, og smide et link her?

<?php
session_start();

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

echo $_SESSION["count"];

show_source($_SERVER["SCRIPT_FILENAME"]);

?>

Mere fordi, det link jeg hidtil har fulgt er der ingen opdatering af session!
Men jeg aner jo ikke hviken kode du har bruger der?

nu har du vel ikke noget "skjult" (.htaccess, f.eks.), hvor der includes en php fil ved hver request?

Og gerne et link til en

<?php phpinfo(); ?>

også :O)
Avatar billede bengun Novice
11. juli 2005 - 21:00 #34
Hej sukos

Så vidt jeg ved, har jeg ikke noget med .htaccess på denne side.

Her er linket: http://www.holbaek-sejlklub.dk/andet/counter_5.php
Avatar billede bengun Novice
11. juli 2005 - 23:58 #35
Hej alle der er med på dette spørgsmål. Jeg tager på ferie nu, så hvis jeg ikke svarer inden for de næste 14 dage, så er det ikke af ond mening, men skyldes at jeg ikke har adgang til internettet. Men jeg jeg skal nok vende tilbage....... :o)
Avatar billede bengun Novice
01. november 2006 - 12:52 #36
.
Avatar billede barklund Nybegynder
01. november 2006 - 12:59 #37
Det var en lang ferie...
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