[PHP] Array uitlezen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb even de volgende vraag over het uitlezen van een array. De informatie is eerder door een form gepost met method post en dus op te roepen als $_POST[var]. Bij mijn vorige server echter kon ik deze informatie gewoon oproepen als $var. Al mijn scripts zijn dus hierop gebasseerd en ik heb eerlijk gezegd niet veel zin om al die stukken php weer door te gaan lezen en alle eventuele vars tussen [] te gaan zetten met $_POST ervoor. Nu weet ik dat ik mijn register_globals op TRUE kan zetten, maar deze methode werkt niet ?!?! (werkt wel, maar de server zet hem weer op FALSE nadat het script is uitgevoerd, dus onthoudt ie de waardes nog niet tot aan de volgende pagina)

Ik wil nu het volgende maken om boven alle pagina's te zetten:

PHP:
1
2
3
4
for($i=0;$i<length($_POST);$i++) {
 $waarde=$_POST[waarde];
 next($_POST);
}


Het is dus zeg maar de bedoeling dat ik in een kleine lus alle $_POST[vars] naar mijn oude $vars kan omtoveren. Ik weet alleen niet hoe ik nu van de naam [waarde] $waarde maak want ik weet niet van te voren hoe ik al mijn vars heb genoemd.

Chaotische vraag, ik hoop dat iemand snapt wat ik bedoel, bedankt in ieder geval alvast :*)

edit: sorry voor het niet plaatsen van [php] in de titel :'(

[ Voor 4% gewijzigd door Verwijderd op 03-11-2005 19:21 . Reden: titel-tags ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Het is een array, dus kun je beter een foreach-loop gebruiken. Daarnaast is er een mogelijkheid tot dubbele $-tekens:
PHP:
1
2
3
$a = 'test';
$$a = 'blah';
echo $test; // 'blah'

Dus dan krijg je:
PHP:
1
2
3
foreach($_POST as $key => $value) {
  $$key = $value;
}

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

.htaccess :
code:
1
php_flag register_globals on

??

[ Voor 15% gewijzigd door Snake op 03-11-2005 19:25 . Reden: off => on ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

Verwijderd

Je kunt volgens mij toch beter je code gaan herschrijven, dat is een stuk netter. Is wel even werk, maar dan blijkt direct uit je code of het een post-variabele of een interne variabele is. Ik heb dit probleem ook een keer gehad :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dank je, van de $$ methode wist ik niet, dat zou moeten helpen.

waarom de register_globals naar 1 zetten niet werkt moet je mij ook niet vragen. Op een of andere mannier wil dat gewoon niet... Ik ga maar weer eens verder knooien ;)

en code herschrijven... pff, dat is nogal wat :), het werkt zoals het werkt, ik ben het ermee eens dat het netter is maar sommige delen stammen nog uit een vroeg verleden zeg maar :P

allen veel dank!

[ Voor 28% gewijzigd door Verwijderd op 03-11-2005 19:33 ]


Acties:
  • 0 Henk 'm!

  • Superdeboer
  • Registratie: December 2002
  • Niet online

Superdeboer

Sa-weee-tah

Ten eerste: register_globals staat niet voor niets default uit sinds PHP 4.2.0, zoals je uitgebreid kunt lezen bij PHP Security Consortium. Het kan voor veel onveilige situaties zorgen als iemand door een variabele in een querystring in te vullen in feite wélke variabele uit jouw script dan ook maar van een waarde kan voorzien.
Voordat je dus roept dat je te lui bent om je scripts na te gaan kijken, kun je je beter afvragen wat 'best practice' is en hoe je zo veilig mogelijk je scripts in elkaar kunt zetten.

Mocht je na het lezen van die securitypage waar ik naar linkte, toch van mening zijn dat je geen tijd of zin hebt om je scripts aan te passen, dan kun je altijd nog het volgende bovenaan in je code zetten, wat tig keer simpeler werkt dan loopen, of wat je ook van plan was. Blijft mijn stelling dat dat geen nette manier is om het register_globals-verhaal te omzeilen! Werken met dubbele $-tekens zoals hierboven werd gesuggereerd is trouwens ook geen sjieke oplossing.
PHP:
1
2
if(!empty($_GET)) extract($_GET);
if(!empty($_POST)) extract($_POST);

When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.


Acties:
  • 0 Henk 'm!

  • PierreAronnax
  • Registratie: Maart 2002
  • Niet online
import_request_variables -- Importeer GET/POST/Cookie variabelen in de globale scope

Een erg nette oplossing is het niet, maar het heeft het zelfde effect.
In jou geval moet je dus de prefix leeglaten, daardoor wordt overigens wel een E_NOTICE gegenereerd. Bovenstaande functie in combinatie met volledige error_reporting is dus geen optie.

Pierre - Motormedia.nl - Motor-Forum.nl - Motorshopper.nl - Motormeuk.nl - Motorstek.nl


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 01:59

aex351

I am the one

Gebruik anders eens het onderstaande om te debugen. Dat werkt stukken sneller dan zelf te moeten zoeken of de waarde uberhaubt wel bestaat.

PHP:
1
2
//laat de inhoud van post zien
print_r ( $_POST ) ;

< dit stukje webruimte is te huur >

Pagina: 1