Toon posts:

[PHP] Geen Session en geen cookies *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik werk momenteel aan een site waarop mensen kunnen inloggen ed. Ik heb lokaal een Apache 2.x server draaien met PHP 4.3.9 waarop ik eerst een gedeelte van de site heb gemaakt en getest. Waaronder het inlog gedeelte wat met sessions gebeurt. Thuis, dus op mijn eigen server werkte alles perfect, maar online, op een Unix bak van Ladot, werkt het soms helemaal niet goed. :'(

Namelijk als ik inlog gebeurt het soms dat de session variabelen niet goed worden opgeslagen. Als test echo ik deze variabelen naar het scherm en soms zijn ze leeg, maar druk je dan een paar keer op F5 dan staan ze er soms ineens weer :?
Als je dan op F5 blijft door rammen dan ben je de ene refresh wel ingelogd en de andere niet, dat gaat precies om en om dus.
In het geval dat het inloggen wel gewoon goed gaat, dan raak je binnen 2-3 minuten de sessie weer kwijt. En dat terwijl ik: 'session_cache_expire(120);' steeds aan het begin van de code heb staan. :(

Omdat het maar NIET wou lukken met de sessions (heel internet + forums al afgezocht), heb ik het maar geprobeerd om het met cookies op te lossen. Maar dit werkt ook al niet goed :( zelfde verhaal, lokaal wel, op Die server niet.

Ik ben echt ten einde raad! Zo moeilijk kan het toch niet zijn om een simpel inlog script werkend te krijgen |:(

Zoals uit mijn verhaal blijkt denk ik dus dat het aan die LADOT server ligt, maar daar kan ik zelf geen settings aan veranderen dus wat nu???

HELP!!!!!

Acties:
  • 0 Henk 'm!

  • semicolon
  • Registratie: Mei 2004
  • Niet online
En dat terwijl ik: 'session_cache_expire(120);' steeds aan het begin van de code heb staan.
En wat dacht je van session_start();?
We zien geen code dus weten niet of daar misschien de fout is :)

Faq: Mijn sessie-variabelen worden niet opgeslagen al bekeken? ;)

[ Voor 28% gewijzigd door semicolon op 16-10-2004 19:41 ]

:D/-<


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor alle duidelijkheid nog even wat code
PHP:
1
2
3
4
5
<?php
    session_cache_limiter('private, must-revalidate'); 
    session_cache_expire(120);
    session_start();
?>


Dit heb ik boven iedere pagina gezet waar ik de session gebruik.

Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22-09 13:50

TheDane

1.618

ik heb dit boven alle code die ik uitvoer:
PHP:
1
2
3
4
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");// always modified
header("Cache-Control: no-cache, must-revalidate");// HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0


should do the trick?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
TheDane schreef op 16 oktober 2004 @ 21:40:
PHP:
1
2
3
4
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");// always modified
header("Cache-Control: no-cache, must-revalidate");// HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0

should do the trick?
Ik heb die code gekopieerd en overal bovenaan geplakt, gevolgd door session_start(); Maar het werkt nog steeds niet :|

Voor alle duidelijkheid nog even een schets wat mijn probleem is:
Na het inloggen druk ik op een knop op de pagina, als je daarop drukt, dat echo'd hij alle session variabelen naar het scherm.

Druk ik hier de eerste keer op: Dan staat netjes mijn username daar opgeslagen in de sessie.
Druk ik hier nog een keer op zonder verder iets anders aan te raken: Dan zijn er ineens geen session variabelen opgeslagen.
Druk ik voor de derde keer op deze knop: Dan staat mijn username daar weer WEL tusssen. Het is precies om-en-om zovaak ik ook klik.

Nu heb ik toevallig ook net ondekt dat de browser Opera hetzelfde gedrag vertoond maar dan in een cyclus van Wel-niet-niet-niet-wel-niet-niet-niet-wel. enz....
Super vaag dus 8)7

Ik moet toegeven dat ik geen PHP freak ben dus als er nog slimme sugesties zijn: graag!

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:51

crisp

Devver

Pixelated

Dat soort gedrag krijg je vaak op servers waar register_globals op ON staat, en je in je script variabelen gebruikt gelijk aan je session-indices:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

session_start();

if (isset($_SESSION['foo']) && $_SESSION['foo'] == 'bar')
{
    $foo = 'woei';
    echo $_SESSION['foo'];
}
else
{
    $_SESSION['foo'] = 'bar';
    echo $_SESSION['foo'];
}

?>

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22-09 13:50

TheDane

1.618

Volgens mij _MOET_ je ook, voordat je script afgesloten wordt, een session_write_close() aanroepen. of gebeurt dit ook automagisch?


en verder altijd alle sessie variabelen via $_SESSION["jesessievariable"] bijhouden en geen methodes door elkaar gebruiken. zou toch moeten werken.

Acties:
  • 0 Henk 'm!

  • semicolon
  • Registratie: Mei 2004
  • Niet online
TheDane schreef op 17 oktober 2004 @ 00:11:
Volgens mij _MOET_ je ook, voordat je script afgesloten wordt, een session_write_close() aanroepen. of gebeurt dit ook automagisch?


en verder altijd alle sessie variabelen via $_SESSION["jesessievariable"] bijhouden en geen methodes door elkaar gebruiken. zou toch moeten werken.
session_write_close();
End the current session and store session data.

leuk, is je sessie dus weg ;)

:D/-<


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je hoeft geen eind-administratie te doen voor sessies. Ik neig eerder naar de verklaring van dit verschijnsel aan de hand van het feit dat wellicht je provider meerdere webservers heeft die de sessiedata niet met elkaar delen.
Dat kan je oplossen door de sessie-data in een database te zetten, maar dat is niet perse handig.

Als je alleen maar een login wilt controleren, dan kan je ook naar de HTTP-authenticatie kijken. In de php-manual wordt daar een voorbeeldje voor gegeven hoe je dat in php kan oplossen en de zoekterm 'htaccess' zal je allerlei interessants opleveren voor als je de controle door de webserver wilt laten uitvoeren.
Max v W schreef op 17 oktober 2004 @ 00:18:
session_write_close();
End the current session and store session data.

leuk, is je sessie dus weg ;)
Sessie weg?

[ Voor 15% gewijzigd door ACM op 17-10-2004 00:21 ]


Acties:
  • 0 Henk 'm!

  • semicolon
  • Registratie: Mei 2004
  • Niet online
Sorry mijn fout, ik had t fout gelezen op php.net, te snel, te laat, kan iedereen gebeuren ;) Je sluit gewoon de sessie weer even en kun je m later met session_start(); weer openen heb ik begrepen. achja, ik ga s naar bed.

:D/-<


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
crisp schreef op 17 oktober 2004 @ 00:07:
Dat soort gedrag krijg je vaak op servers waar register_globals op ON staat, en je in je script variabelen gebruikt gelijk aan je session-indices:
Ik had eerst wel srcript vars gelijk aan session-indices, maar ik zag dat het fout ging inderdaad (bij het verwijderen van een user was ik ineens ingelogd als die user :| ). Daarna heb ik de variabelen allemaal goed gerenamed. Maar dit speelde zich allemaal af nog voor de first post....

Maar zou register_globals op OFF moeten staan dan? Of kan het verder geen kwaadop ON?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
TheDane schreef op 17 oktober 2004 @ 00:11:
Volgens mij _MOET_ je ook, voordat je script afgesloten wordt, een session_write_close() aanroepen. of gebeurt dit ook automagisch?
Had ik ook al geprobeerd maar nee :(

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 22-09 00:22

DizzyWeb

Ondertiteld

TheDane schreef op 17 oktober 2004 @ 00:11:
Volgens mij _MOET_ je ook, voordat je script afgesloten wordt, een session_write_close() aanroepen. of gebeurt dit ook automagisch?


en verder altijd alle sessie variabelen via $_SESSION["jesessievariable"] bijhouden en geen methodes door elkaar gebruiken. zou toch moeten werken.
Nog nooit gebruikt en mijn sessions werken allemaal...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
JAAAAA!!!
gevonden!! :*)

Kweet waarom het niet werkte: Het staat allemaal uitgelegd op de site van LADOT.
Al dit gedoe had gewoon te maken met een te-goede beveiliging :S
Gelukkig maar... Want ik had de moet al bijna opgegeven...

onderaan op de pagina kijken....
http://help.active24.nl/support_system/t3.asp?folderid=1051

Allen toch bedankt voor de id-en :)
Pagina: 1