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] Sessions

Zeeuw
14 antwoorden
  • Hoe zit het precies met sessions? Ik heb een aantal artikelen erover gelezen, maar één ding is me nog niet duidelijk:

    Als ik variabelen uit een sessie moet hebben gebruik ik session_start(). Op php.net staat dit:
    [quote:db565ffa03]session_start() creates a session (or resumes the current one based on the session id being passed via a GET variable or a cookie).[/quote:db565ffa03]
    vooral bij dat laatste gedeelte (or resumes …) volg ik het niet meer. Hoe moet je session_start() duidelijk maken over welke session_id je het hebt? Kan dat gewoon met session_start($sessionid) ofzo?

    [b:db565ffa03][mod-edit][/b:db565ffa03]
    Iets duidelijkere titels graag.
    [b:db565ffa03][/mod-edit][/b:db565ffa03]

    _________________
    Music was my first love
    and it will be my last

    [ Dit bericht is bewerkt door: Bill Gates op 2002-04-29 21:15 ]
  • Als ik de manual een beetje goed interpreteer dan is het niet nodig om een sessionid mee te sturen met de functie. Deze wordt automatisch bepaald door de functie uit de GET of COOKIE.

    uit de manual:
    session_start([b:2bc30f6d14]void[/b:2bc30f6d14])

    en void betekend "niets".
  • Hoi Dan,

    Om een variabele in een session te stoppen gebruik je :

    session_register("naamvanvariabele");

    Let op de syntax, dus géén:

    session_register("$naamvanvariabele");

    Om vervolgens session-variabelen te gebruiken/aan te kunnen roepen is het volgende voldoende:

    session_start();

    Iedere pagina gedefinieerd met deze functie zal de variabele(n) kunnen gebruiken, op de normale manier; met het $-teken.

    Succes,

    :grin:

    Djurre
  • Maar dan moet wel "register_globals" aanstaan in php.ini (en ik dacht dat deze tegenwoordig standaard uit staat). Veel beter is het om $_SESSION["variable"] te gebruiken. Dat is ook meteen een stuk duidelijker…

    Meer hierover vindt je natuurlijk in de manual.
  • Hallo Bill,

    …dat kan natuurlijk ook,
    beide manieren draaien vooralsog als 'een tierelier'.

    :wink:

    Djurre
  • [quote:74a1c980c5]
    Op 30-04-2002 19:44 schreef nssadmin:
    …dat kan natuurlijk ook,
    beide manieren draaien vooralsog als 'een tierelier'.[/quote:74a1c980c5]Nog wel ja, tot je ineens op een server komt waar het niet meer werkt. Als je toch gaat beginnen, moet je het meteen goed doen. Dit verhaal gaat trouwens ook op voor cookies en form-variabelen (en nog een zooitje andere)…

    Zoals je hier kunt lezen werkt jouw constructie dus "default" niet meer.
  • Je hebt gelijk :smile:

    Djurre
  • [quote:63266f8872]
    Op 30-04-2002 19:55 schreef Bill Gates:
    Nog wel ja, tot je ineens op een server komt waar het niet meer werkt. Als je toch gaat beginnen, moet je het meteen goed doen. Dit verhaal gaat trouwens ook op voor cookies en form-variabelen (en nog een zooitje andere)…
    [/quote:63266f8872]
    Nou dat zijn dus:
    $_POST Post variabele
    $_GET Get variabele
    $_COOKIE cookie variable
    $_ENV omgevingsvariable
    $_SERVER Server variable/instellingen
    $_SESION Sesion waarde
    $_REQUEST Alle post en get waarden
    $_FILES Uploaden

    Ze zijn makkelijk weer te geven met het volgende script:

    [code:1:63266f8872]
    <?PHP
    error_reporting(E_ALL);
    echo "<HR><B>$_get</B><P><PRE>";
    print_r($_GET);
    echo "</PRE><HR><B>$_post</B><P><PRE>";
    print_r($_POST);
    echo "</PRE><HR><B>$_cookie</B><P><PRE>";
    print_r($_COOKIE);
    echo "</PRE><HR><B>$_server</B><P><PRE>";
    print_r($_SERVER);
    echo "</PRE><HR><B>$_env</B><P><PRE>";
    print_r($_ENV);
    echo "</PRE><HR><B>$_session</B><P><PRE>";
    print_r($_SESSION);
    echo "</PRE><HR><B>$_request</B><P><PRE>";
    print_r($_REQUEST);
    echo "</PRE><HR><B>$_files</B><P><PRE>";
    print_r($_FILES);
    ?>
    [/code:1:63266f8872]
  • Briljant stukje programmeerwerk, maar vergeet er vooral niet bij te vertellen dat dat allemaal pas vanaf PHP 4.1.0 werkt en dat 99% van de servers op dit moment een oudere versie draait. Waarbij je dus gewoon lekker ouderwets de deprecated $HTTP_POST_VARS e.d. moet gebruiken.
  • [quote:4cb04558e4]
    Op 01-05-2002 11:03 schreef Jurriaan R:
    maar vergeet er vooral niet bij te vertellen dat dat allemaal pas vanaf PHP 4.1.0 werkt en dat 99% van de servers op dit moment een oudere versie draait.[/quote:4cb04558e4]Ow? Volgens mij draait juist bijna iedereen 4.1.2 in verband met de security fix…
  • Helaas werkt dat niet zo bij veel hostingproviders.

    Vuurwerk draait een oude versie, volgens mij 4.0.3
    Xs4all de laatste keer dat ik keek ook
    Vevida: PHP Version 4.0.3pl1
    NLHosting: PHP Version 4.0.6 (dat is al een update)
    Internetman: PHP Version 4.0.3pl1

    productieservers worden helaas niet altijd goed gepatched, onder het motto.. "het werkt, wat zeur je nou?"
  • Sowieso zijn veel beheerders nogal huiverig met het lukraak installeren van patches op productieservers.
    Het "eerst-de-kat-uit-de-boom-kijken" idee, zeg maar.

    Andere redenen zijn vaak:
    - luiheid
    - onwetendheid
    - geen testservers
    - geen stagiaires om lastig te vallen
    :razz:
  • Hmmm, lekker is dat dan… Hebben ze dan maar gewoon de file-uploads uit gezet of zo?

    Mijn hostingbedrijf (deHeeg) had het binnen een dag al wel voor elkaar.
  • Hmm, op een of andere manier heb ik de laatste tijd een aantal gratis (!) php ondersteunende hosters gevonden en zelfs die draaien allemaal op php > 4.1.0

Beantwoord deze vraag

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