anoniem Geplaatst: 27 februari 2003 Delen Geplaatst: 27 februari 2003 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? Quote Link naar reactie
anoniem Geplaatst: 28 februari 2003 Auteur Delen Geplaatst: 28 februari 2003 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 Quote Link naar reactie
anoniem Geplaatst: 28 februari 2003 Auteur Delen Geplaatst: 28 februari 2003 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 Quote Link naar reactie
anoniem Geplaatst: 28 februari 2003 Auteur Delen Geplaatst: 28 februari 2003 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. Quote Link naar reactie
anoniem Geplaatst: 28 februari 2003 Auteur Delen Geplaatst: 28 februari 2003 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). Quote Link naar reactie
anoniem Geplaatst: 28 februari 2003 Auteur Delen Geplaatst: 28 februari 2003 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"; ?> Quote Link naar reactie
anoniem Geplaatst: 1 maart 2003 Auteur Delen Geplaatst: 1 maart 2003 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. Quote Link naar reactie
anoniem Geplaatst: 1 maart 2003 Auteur Delen Geplaatst: 1 maart 2003 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 Quote Link naar reactie
anoniem Geplaatst: 1 maart 2003 Auteur Delen Geplaatst: 1 maart 2003 De controle werkt inderdaad goed zoals je me uitlegde. Ik start alleen het controle scriptje nu zelf op. Hoe doe ik dit automatisch vanuit het eerste script? Quote Link naar reactie
anoniem Geplaatst: 1 maart 2003 Auteur Delen Geplaatst: 1 maart 2003 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 Quote Link naar reactie
anoniem Geplaatst: 1 maart 2003 Auteur Delen Geplaatst: 1 maart 2003 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. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen