Alle get en posts omzetten

Gestart doorWouterp41 reacties253 weergaven

42 berichten · pagina 1 van 3

Wouterp

Lid · Topicstarter

Berichten
1.631
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Heey,

Ik ben bezig met een project en ik wil alle:

$_GET[dit_kan_altijd_verschillend_zijn] omzetten naar een variabel.

Hoe kan ik dit het beste doen?

M.v.g. Wouter
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Het IS al een variabele. Je kan met extract() de boel omzetten, naar een normale variabele, maar dit is zeer lastig met debuggen, en ik kan het alleen maar afraden.
0
Wouterp

Lid · Topicstarter

Berichten
1.631
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik weet dat het een variabel is ik bedoel bijvoorbeeld
$variabels = De get;

Is hier echt geen oplossing voor?
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Ik gaf toch al een oplossing?
0
Berichten
513
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
$hallo = $_GET[Je name];

Dit bedoel je?
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Als je dat wilt, vraag ik me af waarom je dat wilt? Waarom zou je $_GET[name] willen kopieeren naar $hallo? Je kan toch overal in je script toch netjes $_GET[name] gebruiken. het kan zelfs in functions zonder een global te gebruiken.

Kan je nagaan hoe verrot en nutteloos het onnodig overkopieeren is. ALs ik van iedereen die dit deed een euro kreeg, dan lag ik allang aan het zwembad van mijn luxe vakantie-villa in de Franse Reviéra.....
0
Berichten
513
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Quote:
Ik ben bezig met een project en ik wil alle:

$_GET[dit_kan_altijd_verschillend_zijn] omzetten naar een variabel.

Tja ik denk toch echt dat hij die variables wilt kopieeren
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Dan is hij gewoon onlogisch en onhandig bezig.
Als het nou gaat om het als afkorting te gebruiken, want $yaddah is korter dan $_GET[yaddah_blahblah_yaddah], dan sla je de plank mis. Het IS wel zo, maar elke fatsoenlijke editor zal wel de o zo gevreesde lange global $_GET[yaddah_blahblah_yaddah] in zijn auto-complete of global/variabele-overzicht tonen.

Ook raak je zo het overzicht kwijt of iets nu wel of niet een POST of GET was.
Dus doe me een lol, mensen die variabele overschrijven, denk nog eens een keer goed na. Pak een memo-papier, zet mijn advies erop, en hang deze op een zeer hinderlijke plek waar je altijd naar toe kijkt.
0
Berichten
513
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Afbeelding
Helemaal gelijk, phpdeigner 5 doet dit automatisch voor mij
0
Berichten
3.314
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Aarclay schreef:
Dan is hij gewoon onlogisch en onhandig bezig.
Als het nou gaat om het als afkorting te gebruiken, want $yaddah is korter dan $_GET[yaddah_blahblah_yaddah], dan sla je de plank mis. Het IS wel zo, maar elke fatsoenlijke editor zal wel de o zo gevreesde lange global $_GET[yaddah_blahblah_yaddah] in zijn auto-complete of global/variabele-overzicht tonen.

Ook raak je zo het overzicht kwijt of iets nu wel of niet een POST of GET was.
Dus doe me een lol, mensen die variabele overschrijven, denk nog eens een keer goed na. Pak een memo-papier, zet mijn advies erop, en hang deze op een zeer hinderlijke plek waar je altijd naar toe kijkt.
Nah, ben ik het niet mee eens. Als je een variabele $_GET overschrijft naar een ook nog veel kortere variabele kun je veel makkelijker in een klap functies erop toepassen zoals escapes etc. Kan me niet voorstellen dat je niet kunt onthouden of je met gets of posts werkt?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Het is ook zo onveilig als wat omdat je dan in de url de variabelen in je script kan bewerken. Als je $_GET en $_POST hebt dan weet je gewoon dat je die variabelen niet kunt vertrouwen, je weet dat ze geëscaped moeten worden e.d. en je weet zelfs niet eens weet of ze bestaan.

Je hebt er echt helemaal niks aan, het brengt meer nadelen dan voordelen met zich mee.
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Kyron schreef:
Eerdere citaten tonen
Aarclay schreef:
Dan is hij gewoon onlogisch en onhandig bezig.
Als het nou gaat om het als afkorting te gebruiken, want $yaddah is korter dan $_GET[yaddah_blahblah_yaddah], dan sla je de plank mis. Het IS wel zo, maar elke fatsoenlijke editor zal wel de o zo gevreesde lange global $_GET[yaddah_blahblah_yaddah] in zijn auto-complete of global/variabele-overzicht tonen.

Ook raak je zo het overzicht kwijt of iets nu wel of niet een POST of GET was.
Dus doe me een lol, mensen die variabele overschrijven, denk nog eens een keer goed na. Pak een memo-papier, zet mijn advies erop, en hang deze op een zeer hinderlijke plek waar je altijd naar toe kijkt.

Nah, ben ik het niet mee eens. Als je een variabele $_GET overschrijft naar een ook nog veel kortere variabele kun je veel makkelijker in een klap functies erop toepassen zoals escapes etc. Kan me niet voorstellen dat je niet kunt onthouden of je met gets of posts werkt?
Het kost extra geheugen, en maakt je script wel wat minder overzichtelijker. Functies kan je ook prima binnen een query() erop toepassen.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Tijd voor een voorbeeldje.

header.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>[COLOR= #0000BB]<?php[/COLOR] [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$sitenaam[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000] - [/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$paginanaam[/COLOR][COLOR= #007700];[/COLOR] ?></title>
</head>
<body>


footer.php:

<br /><br />
&copy; [COLOR= #0000BB]<?php[/COLOR] [URL="http://www.php.net/echo"]echo[/URL] [URL="http://www.php.net/date"]date[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]Y[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000] [/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$sitenaam[/COLOR][COLOR= #007700];[/COLOR] ?>
</body>
</html>


config.php:

[COLOR= #0000BB]<?php
$sitenaam[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]one2xs[/COLOR][COLOR= #007700];[/COLOR]

[URL="http://www.php.net/extract"]extract[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_GET[/COLOR][COLOR= #007700]);[/COLOR]


index.php:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/include_once"]include_once[/URL] [COLOR= #DD0000]config.php[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #0000BB]$paginanaam[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]homepage[/COLOR][COLOR= #007700];[/COLOR]

[URL="http://www.php.net/include_once"]include_once[/URL] [COLOR= #DD0000]header.php[/COLOR][COLOR= #007700];[/COLOR]

[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$naam[/COLOR][COLOR= #007700]))
{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] htmlentities[COLOR= #007700]([/COLOR][COLOR= #0000BB]$naam[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000], welkom op one2xs![/COLOR][COLOR= #007700];
    
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL]
[COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]Welkom op one2xs![/COLOR][COLOR= #007700];
    
}[/COLOR]

[URL="http://www.php.net/include_once"]include_once[/URL] [COLOR= #DD0000]footer.php[/COLOR][COLOR= #007700];[/COLOR]


Lijkt prima toch?
Je kunt hem aanroepen met:
/index.php
en dan krijg je keurig een welkom te zien en een mooie footer.
Je kunt hem ook met
/index.php?naam=lennard
aanroepen, en dan krijg je een persoonlijk welkom te zien en nog dezelfde footer; XSS werkt niet want daar hebben we HTML entities voor
Maar je kan hem ook zo aanroepen:
/index.php?naam=lennard&sitenaam=GHED
en kijk dan eens naar de footer.....

(al kun je dat met de tweede parameter wel oplossen, maar het idee blijft hetzelfde)

En dat is juist de ellende van die extract(). Het lijkt handig maar het is gewoon totaal onwenselijk, want je kunt geen enkele variabele meer vertrouwen, en dat maakt de kans op bugs en hacks onwijs groot.

Doe het gewoon niet, de PHP ontwikkelaars hebben niet voor niets besloten om het $_GET en $_POST te noemen en niet alles direct naar lokale variabelen te porten.

Er staat ook niet voor niets een grote rode dikgedrukte waarschuwing op de PHP pagina van extract().
0
Wouterp

Lid · Topicstarter

Berichten
1.631
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Nee dit bedoel ik helemaal niet.
$_GET[ is altijd anders] ik wil dus maakt niet uit wat de get is dus de eene keer:
$_GET[aa]
$_GET[bb]
etc dus de get moet altijd $get worden.
0
Berichten
513
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dat is bijna het zelfde

toevoeging op 13 april 2012, 16:46:41:
neem een fatsoenlijke php editor en hij onthoud het voor je zoals: phpdesigner 5
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren