[PHP] Punt in HTTP_POST_VARS['varnaam']

Pagina: 1
Acties:

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Hoi,

Ik heb iets met PHP waar ik niet uit kom en misschien dat iemand een oplossing weet.

Als er in een form een variabele staat met in de naam een punt, dan wordt die punt vervangen door een underscore in PHP.
Als je bijvoorbeeld hebt:
code:
1
<input type="text" name="test.test" value="abcd">

Dan werkt in PHP:
PHP:
1
2
3
<?
echo $HTTP_POST_VARS['test_test'];
?>

Zolang je dit weet is dit natuurlijk geen probleem. Maar nu moet ik alle variabelen die binnenkomen bij m'n script rechtstreeks doorsturen naar een andere server, en die wil dus gewoon die punt erin hebben.
Maar er kan ook wel is een variabele tussenzitten met een underscore. Die moet dan met een underscore worden doorgegeven.
Is er een manier om dit te scheiden?!?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Denk het niet....

Kan je deze niet meegeven in je form?

Programmer - an organism that turns coffee into software.


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:18

TheDane

1.618

kun je niet die $HTTP_POST_VARS in een nieuwe variabele (array) zetten, en die variabele doorgeven ?

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 23:45
Waarom zou je eigenlijk een punt willen gebruiken in je variabele namen? In sommige talen is die al gereserveerd om de scope van een variabele aan te geven (als ik het me goed herinner).

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Waarom ik het wil?
Ik wil het niet.

Maar ik ben bezig met een soort gateway programma in PHP. En aangezien sommige sites wel punten in hun variabelen hebben, wil ik toch wel de mogelijkheid hebben tot het doorgeven van die variabelen. Zo werkt de verwijder functie bij hotmail nu niet via mijn gateway omdat die grappenmakers daar als naam MSG28373829.293 gebruiken bijvoorbeeld. Dan geeft mijn script MSG28373829_293 door en werkt het dus niet.
Nu kan is doodleuk wel een regexp gebruiken die dit vervangt, maar dan zal het nog alleen maar bij hotmail werken en ik wil dat alle sites met dit soort variabelen werken. Waarom verandert PHP ze eigenlijk? In de naam van een array element mogen toch wel punten voorkomen, dus in HTTP_POST_VARS zou het toch mogen?

  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 14-09 11:45
Ik vermoed omdat . een operator is (String concator).

Een mogelijkheid die je hebt is om van te voren . te vervangen door een %2e en later weer
PHP:
1
2
3
<?
urldecode($varnaam);
?>

te doen.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

MikeN >
als je 't zaakje doorstuurt, kun je het gewoon in een nieuwe array plempen, waarbij de keys geen global variabele meer zijn, zoals bij $HTTP_POST_VARS wel het geval is:
PHP:
1
2
3
4
5
6
<?
foreach ( $HTTP_POST_VARS as $key => $value )
   $send [ str_replace ( "_", ".", $key ) ]= $value;

print_r ( $send );
?>

there you go ;)

hth

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1