[PHP] Variabele gebruiken in include.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 21-09 13:44
Het probleem:

Waarden in $_POST niet te gebruiken in een ge-include-d PHP script.

Omschrijving:

http://aaa.aaa/bestand.php include http://bbb.bbb/include.php. Include.php doet wat verwerkingen en geeft vervolgens een formulier weer met action="" method="POST", dus de waarden die gesubmit worden komen uit op bestand.php.

In include.php zouden deze waarden moeten worden opgevangen maar een print_r($_POST); in include.php geeft niets weer!

Vraag:

Iemand een idee? Is het handiger om method="GET" te gebruiken?

.


Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 00:22

DizzyWeb

Ondertiteld

Hoe include je? Relatief pad of geeft je de volledige url op? Inc. http://bbb.bbb/ enzo?

Acties:
  • 0 Henk 'm!

  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 21-09 13:44
De include:

PHP:
1
<? include('http://www.bbb.bbb/include.php'); ?>

.


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Dat kan volgens mij niet eens, een PHP script includen over een fsockopen wrapper (tenzij je de parser op die server niet aan hebt staan, maar dat lijkt me stug en zwaar onveilig)

De fout die je maakt volgens mij is dat je op het moment dat jij include doet vanuit bestand.php al de (geparste) OUTPUT van include.php krijgt :)

[ Voor 3% gewijzigd door SchizoDuckie op 22-04-2005 15:29 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Eijkb schreef op vrijdag 22 april 2005 @ 15:28:
De include:

PHP:
1
<? include('http://www.bbb.bbb/include.php'); ?>
doe eens gewoon
PHP:
1
include('include.php');


;)

je include nu een file die je eerst ophaalt van de server welke dus door je server al geparsed wordt -> werkt niet

Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 23:05
Erkens schreef op vrijdag 22 april 2005 @ 15:30:
[...]

doe eens gewoon
PHP:
1
include('include.php');


;)

je include nu een file die je eerst ophaalt van de server welke dus door je server al geparsed wordt -> werkt niet
PHP:
1
include "include.php";

Komt op hetzelfde neer, of zijn die haakjes eromheen "veiliger" ?

Acties:
  • 0 Henk 'm!

  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 21-09 13:44
Klinkt inderdaad logisch, maar het bestand staat ook extern :D

Maar goed, optie 2:

PHP:
1
include('http://bbb.bbb/include.php?post='.$_POST);


Dan komt in de include wel $_GET[post] aan maar dan in een of andere vreemde array.

PHP:
1
print_r($_GET[post]);


geeft Array terug. Hoe kan ik die weer uitlezen?

PHP:
1
print_r(print_r($_GET[post]));


geeft 1 terug (wat wel kan kloppen met de eerste index natuurlijk.... argh. Iemand een ander idee hoe op te lossen?

Het is belangrijk dat er alleen 1 regel komt te staan op de externe site (De include regel).

.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

En waarom niet die ene regel als get parameter doorgeven?
code:
1
include ('http://www.blaat.nl/dinges.php?regel=' . $regel);

Overigens staat dit prima uitgelegd in de PHP documentatie bij include.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ID-College schreef op vrijdag 22 april 2005 @ 15:40:
[...]

PHP:
1
include "include.php";

Komt op hetzelfde neer, of zijn die haakjes eromheen "veiliger" ?
veiliger niet, maar duideljiker wel imo :)
Eijkb schreef op vrijdag 22 april 2005 @ 15:43:
Klinkt inderdaad logisch, maar het bestand staat ook extern :D
kan je die file dan niet lokaal zetten?

Acties:
  • 0 Henk 'm!

  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 21-09 13:44
Creepy schreef op vrijdag 22 april 2005 @ 15:49:
En waarom niet die ene regel als get parameter doorgeven?
code:
1
include ('http://www.blaat.nl/dinges.php?regel=' . $regel);

Overigens staat dit prima uitgelegd in de PHP documentatie bij include.
De regel waar ik het over heb is juist

PHP:
1
include('http://bbb.bbb/include.php?post='.$_POST);


Ben nu maar begonnen de $_POST vars uit te lezen met foreach loops en ze apart mee te geven als $_GET waardes.

.


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Eijkb schreef op vrijdag 22 april 2005 @ 15:43:
Klinkt inderdaad logisch, maar het bestand staat ook extern :D

Maar goed, optie 2:

PHP:
1
include('http://bbb.bbb/include.php?post='.$_POST);
Snap je wel wat je aan het doen bent eigenlijk :? Probeer eens een serialize over je $_POST heen te gooien, of post de variabelen netjes zoals het hoort met libCurl :)

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 21-09 13:44
Wat ik probeer te doen is simpelweg hetvolgende:

Een webmaster wilt een quizje. Hij include van mijn site quiz.php. Die quiz.php geeft wat vragen weer en moet na een submit ook de antwoorden verwerken. Maar die $_POST waarden komen dus niet bij de include aan :+

.


Acties:
  • 0 Henk 'm!

  • DiLDoG
  • Registratie: Oktober 2002
  • Laatst online: 18-09 08:45
PHP:
1
2
3
4
<?
$postdata = serialize($_POST);
include('http://bbb.bbb/include.php?post='.postdata);
?>


dan in include.php
PHP:
1
2
3
4
<?
$postdata = unserialize($_GET['post']);
print_r($postdata);
?>


vind het nog steeds een beetje een lelijke oplossing, maarja t werkt wel.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

DiLDoG schreef op vrijdag 22 april 2005 @ 16:16:

vind het nog steeds een beetje een lelijke oplossing, maarja t werkt wel.
tot je serialized (POST) data te veel wordt, een URL heeft een maximale lengte ;)

Acties:
  • 0 Henk 'm!

  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 21-09 13:44
Met serialize werkt het inderdaad.

Op de externe server (waar het formulier ge-include wordt) doe ik eerst een serialize, vervolgens een urlencode. Dan op in het ge-include bestand een stripslashes en een unserialize Fantastisch. Mijn dank gaat uit naar DilDog!

.


Acties:
  • 0 Henk 'm!

  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 21-09 13:44
Je kunt het overigens zelf testen:

Maak een php bestandje aan met de volgende inhoud:

PHP:
1
2
3
4
5
<? 
$postdata = serialize($_POST);
$postdata = urlencode($postdata);
include('http://www.mobiwin.nl/extquiz.php?aantal=5&post='.$postdata);
?>


Sla dit bestand op op je eigen domein / server (als tie maar php ondersteunt) en roep het aan.

En zie: een kwis met 5 vragen :p. Je krijg iedere keer random vragen met de antwoorden in random volgorde. De reden dat het zo moeilijk moet is dat de vragen / controles etc allemaal in een intern script gebeurd en dit evt. later gaat werken als affiliate gedoe.

.

Pagina: 1