Ga naar inhoud

php sessie probleem !!!


anoniem

Aanbevolen berichten

Ik heb een script gemaakt om op een site te kunnen inloggen. Na controle in de database registreert het script de gebruikter: session_register("valid_user"); Tot nu toe gaat alles goed. Nu moeten er een aantal pagina´s beveiligd worden die zonder inloggen niet gezien mogen worden. Ik heb gewoon een paar htm pagina´s en bovenaan het volgende toegevoegd: session_start(); $result = session_is_registered("valid_user"); if ($result) echo "U bent ingelogd als $valid_user"; else { echo "Niet ingelogd"; exit; } Vrij simpel lijkt me maar de pagina blijft na inloggen "Niet ingelogd" geven !?!?! Ik begrijp niet wat ik fout doe. Op deze manier moet je toch een pagina kunnen beveiligen?
Link naar reactie
Nog even als aanvulling. Wat ik wil bereiken is een beveiliging zoals op dit forum. Alleen het forum werkt met cookies, ik wil een sessie zonder cookies opzetten. Door dan in iedere pagina die ik wil beveiligen te checken op de sessie variabele kan ik die pagina beveiligen. Nu is het zo dat na het inloggen ik wel een beveiligde pagina kan oproepen die ik opstart via een link vanuit hetzelfde script. Roep ik dezelfde pagina op via de adresbalk of via een menu dan heb ik geen sessie variabel meer. Het lijkt erop alsof er geen sessie meer is
Link naar reactie
Ik weet niet of dit helpt, maar ik deed het altijd met een boolean variable. Dus naast het registreren van de gebruikers naam, ook een variable die bij houdt of de aanmelding goed is verlopen. bijvoorbeel $in_gelogd Op de inlog pagina doe je dan [code:1:b87d3ec3cf] session_start(); $in_gelogd=false; session_register($in_gelogd); // hieronder de validatie .... // als naam goed is $in_gelogd=true; session_register($in_gelogd); [/code:1:b87d3ec3cf] en op de beveiligde pagina's [code:1:b87d3ec3cf] $ingelogd = $HTTP_SESSION_VARS['in_gelogd']; if ($in_gelogd) { ... } else{ echo ( 'niet ingelogd'); } [/code:1:b87d3ec3cf] Is dit wat je bedoeld? Suc6 Groet Rob
Link naar reactie
Rob ik heb het geprobeerd met de volgende eenvoudige scriptjes: <? session_start(); $in_gelogd=true; session_register($in_gelogd); ?> Daarna: <? $ingelogd = $HTTP_SESSION_VARS['in_gelogd']; if ($in_gelogd) echo "ingelogd"; else echo ( 'niet ingelogd'); ?> Ik start de scriptjes gewoon op vanuit de adresbalk van IE. Hij blijft 'niet ingelogd' geven terwijl je zo kan zien dat in_gelogd true is. Zover ik kan zien zijn alle PHP instellingen bij mijn provider geactiveerd voor het gebruik van sessies. Help please.
Link naar reactie
Lees de [url=http://www.php.net/manual/en/function.session-register.php]manual[/quote] eens zou ik zeggen:[quote:db6d553e60]If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister(). [/quote:db6d553e60] Daarnaast kan "session_register($in_gelogd);" helemaal niet, dit is incorrecte code het moet "session_register('in_gelogd');" zijn (zie wederom de manual).
Link naar reactie
Klopt, het was even uitproberen, ook op de volgende manier werkt het niet. Het lijkt erop of de variabele $waarde bij het opstarten van het 2e scriptje verdwenen is. <? session_start(); session_register("waarde"); $waarde="Hallo"; ?> <? session_start(); if (session_is_registered("waarde")) echo "ingelogd"; else echo "niet ingelogd"; ?>
Link naar reactie
Ik ben er inmiddels achter gekomen dat het iets met de cookie instellingen van de browser te maken heeft. De bovenstaande scripts werken wel goed als de "cookies per sessie altijd toestaan"optie onder IE 6.0 aan staat. De gewone cookies instellingen hoeven niet aan te staan. Ik heb ook gelezen over de andere optie door de session-id mee te sturen met de URL. Dit wilde ik niet doen. Met cookies is prima. Als de bezoeker echter de optie "cookies per sessie altijd toestaan" ook heeft uitstaan werkt het geheel niet. Hoe kan ik de bezoeker een melding geven als deze optie uit staat? Maw. ik wil aan het begin van het script controleren of het geheel wel gaat werken.
Link naar reactie
Je maakt de startpagina (of wat dan ook) die een session-id aanmaakt en vervolgens stuur je de gebruiker automatisch door naar een nieuwe pagina. Van dit geheel hoeft de gebruiker zelf niets te merken. Nu weet je zeker dat er een session-id aanwezig moet zijn, en kun je een melding geven als deze toch niet blijkt te werken. - Bas
Link naar reactie
Zet boven elke pagina (voordat je info naar de browser hebt gestuurd) een stuk code dat checkt op de aanwezigheid van een session-id. Is deze afwezig, redirect dan met een header om de test uit te voeren en evt kan je de gebruiker weer terugsturen waar hij vandaan kwam met $_SERVER["HTTP_REFERER"]. Je kunt deze variabele ook checken om te kijken of de gebruiker direct de pagina laadt (de variabele is dan NULL) of dat hij via een link van een andere site komt. Kan je doen met bijv [url=http://www.php.net/strpos]strpos()[/url]. - Bas
Link naar reactie
Het werkt! Ik heb het zo gedaan. Na het inloggen en controle in de database doet het script het volgende: $gebruiker = $login; session_register("gebruiker"); print Header("Location: controleer_login.php"); Het controleer_login script: <? session_start(); if (session_is_registered("gebruiker")) echo "U bent ingelogd als ".$gebruiker; else echo"Uw browser moet session-cookies ondersteunen!"; ?> Als de cookies nu niet geaccepteerd worden krijgt de bezoeker een melding hierover. In een later stadium wil ik wel met session id´s gaan werken maar voorlopig is dit goed. Ik ga er vanuit dat het grootste deel van de bezoekers de session-cookies aan heeft staan. Bas en anderen, bedankt voor de hulp.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...