Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

php sessie probleem !!!

GameSurfer
10 antwoorden
  • 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?
  • 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
  • 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
  • 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.
  • Lees de manual 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).
  • 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";
    ?>
  • 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.
  • 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
  • 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?
  • 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 strpos().

    - Bas

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.