[php] sessie op willekeurige momenten weg

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • muis
  • Registratie: Oktober 2001
  • Laatst online: 18-11-2022
Ik heb hier voor een website een soort van intranet.
de errors die mysql geeft log ik en nu zie ik soms dat de query niet goed is omdat de id van de member (ingelogd op intranet) leeg is.

Ik gebruik een functie om te controleren of de sessie bestaat:

PHP:
1
2
3
4
function login() {
    session_start();
    if (!ISSET($_SESSION["memberid"])) Header("Location: login.php");
 }


hier komt ie gewoon voorbij, maar wanneer ik kijk welke query er werd uitgevoerd dan is de memberid leeg, bv:

PHP:
1
mysql_query("SELECT naam FROM table_members WHERE member_id = ".$_SESSION["memberid"]);

geeft (soms):
PHP:
1
"SELECT naam FROM table_members WHERE member_id = "


In mijn zoektocht kwam ik al wel iets tegen over de garbage collection van php, die heb ik in de betreffende virtual host van apache maar op 0 gezet:
php_admin_value session.gc_probability 0

Heeft iemand nu een ideetje hoe het toch komt dat af en toe de sessie geen waarde heeft maar wel bestaat?

.modbreak: php tags om je code geplaats. Denk hier voortaan zelf aan, dat leest namelijk wat makkelijker

[ Voor 12% gewijzigd door .oisyn op 08-01-2004 16:23 ]

Een vergissing is menselijk maar om er een puinhoop van te maken heb je een computer nodig (met mij erachter)


Acties:
  • 0 Henk 'm!

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
waar draait je PHP op? Win32/64 of een *nix? Is het mogelijk dat de tempdir waar de sessionvars worden gestored, gewiped wordt?

Acties:
  • 0 Henk 'm!

Verwijderd

Na die Location header moet je de uitvoering van het script ook wel even stoppen, met die(); of exit();.

Acties:
  • 0 Henk 'm!

  • muis
  • Registratie: Oktober 2001
  • Laatst online: 18-11-2022
HunterPro schreef op 04 januari 2004 @ 15:37:
waar draait je PHP op? Win32/64 of een *nix? Is het mogelijk dat de tempdir waar de sessionvars worden gestored, gewiped wordt?
Draait op linux, redhat 7.3
de temp dir waar de sessies staan wordt niet leeggehaald.

ik heb ook het vermoeden dat wanneer je een reload van de pagina doet, dat ie het dan wel doet namelijk. Het lijkt dus wel of de sessie soms niet gelezen wordt maar toch wel bestaat, anders werd je weer geredirect naar de login pagina
Verwijderd schreef op 04 januari 2004 @ 15:39:
Na die Location header moet je de uitvoering van het script ook wel even stoppen, met die(); of exit();.
ff d'r bij zetten, thnx

[ Voor 18% gewijzigd door muis op 04-01-2004 16:35 ]

Een vergissing is menselijk maar om er een puinhoop van te maken heb je een computer nodig (met mij erachter)


Acties:
  • 0 Henk 'm!

Verwijderd

Je login()-functie wordt wel elke keer aangeroepen? Toch zinnig om dit eens te controleren. Anders staat er een waarde in $_SESSION["member_id"] die evalueert naar "" (bijvoorbeeld 0, FALSE of een lege string). Ik zou dat toch eens goed debuggen. Het heeft vast niets met garbage collection te maken. No offense, maar dit lijkt me toch echt een menselijke fout. Kan je anders niet wat meer code posten (in elk geval alle stukjes waar $_SESSION["member_id"] wordt bewerkt)?

Nog een idee: doe je soms ergens
PHP:
1
2
3
4
if ($_SESSION["member_id"] = "")
{
   ...
}

Komt zomaar even bij me op. Let dus op de enkele "=" in het if-statement.

Het zou ook kunnen dat je session om één of andere reden geen cookies kan gebruiken. Als je dan ergens een header("Location: ...") gebruikt, dan moet je achter je URL nog de session id plakken:

PHP:
1
header("Location: pagina.php?".SID);

[ Voor 48% gewijzigd door Verwijderd op 04-01-2004 17:43 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou de session_start() helemaal bovenaan in je script zetten. Dit om header already started problemen te voorkomen. Als je daaronder print_r($_SESSION); doet dan kan je een beetje kijken wat je wanneer nog precies in je sessie hebt.

Acties:
  • 0 Henk 'm!

  • muis
  • Registratie: Oktober 2001
  • Laatst online: 18-11-2022
ik heb nu exit() erbij gezet na de redirect header,
als ik het script aanriep zonder dat ik was ingelogd dan werd ik dus wel geredirect maar zag ik een zelfde foutmelding als die ik postte.

Dus hopelijk was dat het probleem, ik ga nog maar even afwachten of het probleem zich nu niet meer voordoet.

Een vergissing is menselijk maar om er een puinhoop van te maken heb je een computer nodig (met mij erachter)

Pagina: 1