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] 2 manieren om variabele uit URI te halen, welke beter?

Remytje
9 antwoorden
  • Heb twee codes om een variable uit een link te halen (www.blaa.nl/index.php?[b:1e4a9cd235]deel[/b:1e4a9cd235]
    [code:1:1e4a9cd235]
    <?php
    $deel = $_REQUEST["deel"];
    if(!$deel || trim($deel) == "")
    {
    $inhoud = $_REQUEST["inhoud"];
    if(!$inhoud || trim($inhoud) == "")
    {
    $bestand = "home";
    }
    ….
    [/code:1:1e4a9cd235]

    en deze; gewoon als variable gebruiken

    [code:1:1e4a9cd235]
    $deel = blaat etc.
    [/code:1:1e4a9cd235]

    Ik dacht dat ik gelezen had dat de bovenste beter was, om veiligheidsreden. Is dat zo?
  • '$_GET[]' is de beste.
  • eeh, en waarom?

    't Gaat me eigenlijk meer om het 'praktische'. Het is de bedoeling dat ik het geheel in m'n site druk. Dat hoeft duz op zich niet superbeveiligd te worden ofzo, maar toch. Wou het eigenijk wel graag weten.
  • Het heeft ermee te maken dat mensen anders ook op andere manieren variabelen kunnen doorgeven waardoor je beveilingsgaten kunt creeeren. Ik weet het niet heel exact helaas.

    $_REQUEST is in ieder geval onhandig, omdat deze tevens de $_POST array bevat en wellicht ook nog de $_COOKIE (kijk even op php.net voor het fijne). $_GET is wat dat betreft veel specifieker, en daardoor weet je ook wat je terugkrijgt.

    Waarschijnlijk staat er op php.net wel wat meer uitleg over.
  • Het kan ook nog met $url = $_SERVER['QUERY_STRING']; dat geeft alles achter het ?

    wimb
  • Over die beveiliging: Als jij iets specifieks met POST variabelen aan het doen bent, maar je haalt ze op met $_REQUEST, dan kan ik die POST data 'na-apen' door er GET variabelen mee te sturen, oftewel achte de url zetten (?var1=b).

    Als jij bijvoorbeeld een POST variabele(ingelogd=true) gebruikt om te kijken of iemand ingelogd is (sowieso verkeerd) kan ik net doen alsof ik ingelogd ben (…ex.php?ingelogd=true). Als je $_REQUEST gebruikt. Dit werkt hetzelfde met $_COOKIE, want die variabelen worden ook in $_REQUEST gezet.

    Niet echt veilig dus.
  • [quote:b397780ab9="[m]"]Niet echt veilig dus.[/quote:b397780ab9]
    En een post kan je niet na-apen? Daar heeft het dus niets mee te maken.

    De reden waarom je beter de superglobals kan gebruiken is dat de kans dat je een lek introduceert in je pagina veel kleiner wordt. Variabelen die niet geinitialiseerd worden maar "ineens" gebruikt worden kunnen via de verkeerde weg aan hun waarde komen (bijvoorbeeld via de querystring).
    Maar het is, afaik, wel gewoon mogelijk om veilige code te schrijven zonder deze superglobals. Je zal dan alleen al je variabelen moeten declareren/initialiseren voor je deze gebruikt.
  • Dankje, et begint me duidelijk te worden. Ben nog betrekkelijk nieuw in de wereld van PHP :D
  • [quote:c4e7e04b98="Johnny321"]Dankje, et begint me duidelijk te worden. Ben nog betrekkelijk nieuw in de wereld van PHP :D[/quote:c4e7e04b98]

    Vroeger stond die 'register globals' instelling standaard aan, maar tegenwoordig staat ie standaard uit als je php installeert.
    Je wordt dus gemotiveerd om $_GET["bla"], $_POST["bla"], enz.. te gebruiken en ik moet zeggen dat ik het stukken fijner vind werken.
    Bijkomend voordeel is namelijk dat je gelijk aan de variabele kunt zien waar ie vandaan komt. Ook handig bij bijvoorbeeld het debuggen van een lang script.

Beantwoord deze vraag

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