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] variabelen: kan dit makkelijker

Anoniem
marientje
8 antwoorden
  • kan dit makkelijker?

    [code:1:405b58de18]if($sub == "about") $menu = $about;
    elseif($sub == "prog") $menu = $prog;[/code:1:405b58de18]
  • switch?
  • ja, ok, maar ik hoopte meer op iets dat alle gevallen in een neemt
    Zoiets als $menu = $($sub)
    maar dit werkt -natuurlijk- niet
  • werkt dit niet:

    $menu = $$sub

    Overigens moet je wel altijd checken wat je aan invoer binnenkrijgt. "Never trust user input."

    Je kunt overigens wel een array van $menu maken, en dan $($sub) toepassen, vang je meteen ongeldige opties af.
  • dat werkt idd
    Ik had eerder al $menu = "$$sub" geprobeerd, zat dus wel dichtbij, maar net niet dichtbij genoeg :wink:

    Dat checken zit wel goed volgens mij, of zijn er nog leuke truukjes uit te halen met HTML-tags? vast wel, maar kan je me dan uitleggen hoe die te ondervangen?
  • Ligt er maar net aan hoe je script verder werkt. De klassieke fout is ongecontroleerd variabelen doorgeven. De al aangegeven array werkt simpel en effectief. Niet bestaande opties worden afgevangen en zij daarmee bij voorbaat onschadelijk.
  • [code:1:08c6e23763]$about = "tekst about"
    $prog = "tekst prog"


    $sub = $_GET['sub'];
    $menu = "";

    $menu = $$sub;
    if($menu == "") echo("error");
    else echo($menu);[/code:1:08c6e23763]

    dit is zeg maar wat er gebeurt. $about en $prog zijn eigenlijk string met wat HTML erin.
    Volgens mij kan er niets mis gaan. Op t moment dat de variabele niet bestaat, blijft ($menu == "") gelden. Of heb ik t mis…

    Ja, ik heb t mis: vars waarvan ik niet wil dat ze getoond worden (bijv. sub zelf) moeten eruit. Dan is een array idd beter.
  • een andere manier in het geval van 2 keuzes is:

    $menu = ($sub == 'about') ? $about : $prog;

    Ik weet niet of het hier handig is, maar het is een manier

Beantwoord deze vraag

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