[PHP] Variabelen van formulier meegeven (geinclude)

Pagina: 1
Acties:
  • 130 views sinds 30-01-2008

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Ik ben al enige tijd niet meer met PHP bezig geweest (lees een 1,5 jaar) en merk dat je dit echt kwijt raakt. Ik heb voor het volgende hier afgelopen 2 dagen wat zaken gezocht, ook weer dingen tegen gekomen, mijn eigen oude script doorlopen maar ik kom er niet uit.


Wat is het probleem:

Een pagina, met daarin een formulier met een textbox en wat checkboxen (opzich het probleem niet) verzenden naar een 2e pagina. Het formulier was een HTML-pagina die de variabelen van de textboxen verzond naar een PHP-pagina wat allemaal prima verliep; gewoon in dezelfde browser dus.

Nu heb ik het formulier overgezet naar een pagina waarin ik de PHP-pagina met de resultaten wil includen. Het includen is het probleem allemaal niet zo, maar wel het verzenden van de variabele uit het formulier zodat deze meegenomen kunnen worden in het script van de php-pagina.

Er zijn natuurlijk een aantal opties waar ik ook al mee heb zitten rommelen, testen en ga zo maar door.

GET: mogelijke optie, maar niet voor mij ivm dat de variabelen naar een andere pagina verzonden moeten worden en het script dus niet in dezelfde pagina staat.

POST: Hier kom ik dus niet helemaal uit. Ik heb geprobeerd ze te POSTEN naar een sessie-variabele en deze zo weer verder te gebruiken in het script maar dit werkte ook niet, ook omdat ik er niet geheel van overtuigd ben dat dit DE manier is en dit dus nog verder zou moeten testen.

Wanneer ik ?page=scriptpagina.php&var1=var1&var2=var2 werkt het allemaal prima uiteraard. Dit is een mogelijkheid, niet veilig maar wellicht met HTTPS op te lossen.

Wat zijn de opties waar ik even mee moet beginnen ?

- Formulier omzetten in PHP
- Script in dezelfde pagina plakken ?

Wellicht dat iemand direct een tip eeft voor veiligheid.

P.S., geen HELPDESK-topic, anders bel ik wel 0900-helpdesk ;)

Jij bent misschien belangrijk, maar ik ben aardig ;)


Verwijderd

Alle knotsen; en dat ik ook echt próbeer te snappen wat er staat maar dat het niet lukt zeg maar.
Heeft u (...) wellicht wat relevante code? Voorbeelden? Wát gaat er mis? Etc.

Kan hier persoonlijk vrij weinig (lees: niets) mee.

  • Dracula78
  • Registratie: Februari 2002
  • Laatst online: 05-05 16:23
Je POST je variabelen naar de tweede pagina, en daar vraag je ze op met:
$x = $_REQUEST["varnaam"]

En dan kun je ze daar eventueel in een session variabele zetten:
$_SESSION["varnaam"] = $x

3720 Wp @ StecaGrid 3600 Coolcept PVOutput Tech-blog


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Ik heb je post nu drie keer gelezen, maar het is me nog steeds een raadsel wat je precies bedoeld.
BacardiBreezer schreef op vrijdag 08 april 2005 @ 12:28:
Wat is het probleem:

Een pagina, met daarin een formulier met een textbox en wat checkboxen (opzich het probleem niet) verzenden naar een 2e pagina. Het formulier was een HTML-pagina die de variabelen van de textboxen verzond naar een PHP-pagina wat allemaal prima verliep; gewoon in dezelfde browser dus.

Nu heb ik het formulier overgezet naar een pagina waarin ik de PHP-pagina met de resultaten wil includen. Het includen is het probleem allemaal niet zo, maar wel het verzenden van de variabele uit het formulier zodat deze meegenomen kunnen worden in het script van de php-pagina.

Er zijn natuurlijk een aantal opties waar ik ook al mee heb zitten rommelen, testen en ga zo maar door.
Is het mogelijk om eens wat geprobeerde code hier te posten, dat verduidelijkt hopelijk wat.
GET: mogelijke optie, maar niet voor mij ivm dat de variabelen naar een andere pagina verzonden moeten worden en het script dus niet in dezelfde pagina staat.
Wat bedoel je hier precies mee :? Het maakt natuurlijk geen bal uit of het form-verwerkingsscript dezelfde URL (afgezien van de GET-variabelen) heeft als het form.
POST: Hier kom ik dus niet helemaal uit. Ik heb geprobeerd ze te POSTEN naar een sessie-variabele en deze zo weer verder te gebruiken in het script maar dit werkte ook niet, ook omdat ik er niet geheel van overtuigd ben dat dit DE manier is en dit dus nog verder zou moeten testen.
Tussen GET en POST zit maar heel weinig verschil in gebruik. In het formulier zet je method="get" of method="post", en in php haal je ze op met $_GET['var'] of $_POST['var'].
Wanneer ik ?page=scriptpagina.php&var1=var1&var2=var2 werkt het allemaal prima uiteraard. Dit is een mogelijkheid, niet veilig maar wellicht met HTTPS op te lossen.
Dit is een behoorlijke tegenspraak met wat je eerder zei over GET
Wellicht dat iemand direct een tip eeft voor veiligheid.
Als je niet wilt dat de gebruiker de variabelen ziet moet je post gebruiken, verder maakt het volgens mij niet zoveel uit. (Ik meen dat ik een keer iets over maximale lengte van GET-variabelen of de URL oid had gehoord/gelezen, maar dat weet ik niet zeker)

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

BacardiBreezer: Zoals je ziet snappen veel mensen gewoon niet waar je naartoe wil. Wees gewoon concreet in wat je gedaan hebt, en wat er niet lukte, want hier is echt geen touw aan vast te knopen. :)

Zoals Netforce1 hier boven me al zegt, maakt het helemaal niet uit of een formulier niet op dezelfde pagina staat als het PHP-script dat het verwerkt, ook niet als je met GET-vars wil werken. Dat komt omdat het verzenden van een formulier niet iets is wat PHP doet, maar wat gewoon in het HTTP protocol zit. Toch zou ik voor een formulier 9 uit 10 keer voor POST kiezen. :)

Als je al anderhalf jaar niets met PHP hebt gedaan, dan zou je ook nog wel eens problemen kunnen hebben/krijgen met het gebruik van superglobals, dus misschien kun je ook maar beter deze FAQ bekijken: P&W FAQ - PHP: gebruik van superglobals. :)
Dracula78 schreef op vrijdag 08 april 2005 @ 12:42:
Je POST je variabelen naar de tweede pagina, en daar vraag je ze op met:
$x = $_REQUEST["varnaam"]

En dan kun je ze daar eventueel in een session variabele zetten:
$_SESSION["varnaam"] = $x
Waarom de request array, als je toch al weet dat het een postvariabele is? $_POST moet je dus hebben. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Oops.... niemand snapt het O-)

Het superglobals verhaal is me bekend en daar werk ik ook mee, of ikzet het om wanneer ik iets werkend heb (just the way of working)

Wat gaat er nu mis:

Basic manier:

Fomulier met volgende pagina in de zelfde browser. Heel clean dus:

<FORM action="formulier_action.php" method="POST" name="checkformulier" onsubmit="checkformulier.Check.disabled=true'">

Dit werkt gewoon !!

Nu plaats ik het formulier in een pagina waarin ik formulier_action.php wil includen zodat de resultaten netjes in de pagina terecht komen. Dus lijkt me het volgende redelijk logisch:

<FORM action="?page=formulier_action.php" method="POST" name="checkformulier" onsubmit="checkformulier.Check.disabled=true'">


Nu worden de variabele die in het formulier ingevuld zijn in textvelden niet meegenomen. Ik heb als test dus even het volgende gedaan:

<FORM action="?page=formulier_action.php&var1=<? echo '$var1' ?>&var2=<? echo '$var2' ?>" method="POST" name="checkformulier" onsubmit="checkformulier.Check.disabled=true'">

(dit is even iets dat ik zo snel neer zet, met alle quotes en dingen al geprobeerd, punten enzovoorts, dus daar niet op letten hoor ;))

Dit werkt dus niet, var1 en var worden niet meegenomen in de URL. Waarom deze test ? Omdat dit namelijk wel werkt wanneer ik de url gewoon in de adresbalk zet:

?page=formulier_action.php&var1=var1&var2=var2

Hierbij krijg ik netjes output van het PHP-script, vrij logisch natuurlijk. Het php-script is dus niets mee aan de hand, alleen het verzenden via het formulier wanneer ik het script voor output wil includen.

Hopelijk zo redelijk duidelijk !

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

?page=formulier_action.php :? Je formulier stond toch op een HTML-pagina? Dan krijg je dus blaat.html?page=formulier_action.php, en daar kan je HTML pagina niks mee...

Verder: als je code wel werkt als je zelf alles meegeeft via de URL, dan vang je dus GET af, en niet POST, en dan lijkt dat me gewoon je probleem...

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Denk dat het niet zo moeilijk is.

Wat je waarschijnlijk wil bereiken is een POST met als parameter page=formulier_action.php.

Vul voor action in de form tag dan niets in (of de pagina de de includes regelt) en neem een < input type="hidden" name="page" value="formulier_action.php" > op in je form.

Volgens mij moet het dan wel werken.

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
-NMe- schreef op vrijdag 08 april 2005 @ 14:21:
?page=formulier_action.php :? Je formulier stond toch op een HTML-pagina? Dan krijg je dus blaat.html?page=formulier_action.php, en daar kan je HTML pagina niks mee...

Verder: als je code wel werkt als je zelf alles meegeeft via de URL, dan vang je dus GET af, en niet POST, en dan lijkt dat me gewoon je probleem...
Als je goed leest zie je dat ik het formulier uit de html-pagina haal en in een pagina plaats waarin ik de resultaten wil includen, zal dus een php-pagina moeten zijn.


Hier het POST/GET verhaal...... beide zijn naar mijn idee mogelijk met het script ;)

if ( count( $_GET ) ) {
$invoer = $_GET;
} else {
$invoer = $_POST;
}

@schutje: Zoiets bedoel ik ongeveer !

[ Voor 3% gewijzigd door BacardiBreezer op 08-04-2005 14:30 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ja, nogal logisch dat dat wat Schutje zegt werkt dan. 8)7 Je bent GET en POST door elkaar aan het gebruiken, maar de manier waarop je $invoer vult, zorgt ervoor dat er alleen naar die page wordt gekeken.

Je vult een heel formulier in en verstuurt dat met POST naar een pagina waar je ook een GET-var voor opgeeft. Vervolgens controleer je in je code of er minimaal 1 GET-var geset is, zo ja: dan komt volgens jou alle invoer binnen via de GET-array, zo nee: dan komt alle invoer binnen via POST. Je hebt dus uiteindelijk een variabele $invoer, waar maar één waarde van is op te vragen, namelijk $invoer['page'].

Als je volgende keer weer zo'n probleem hebt, doe dan voor de grap eens een print_r($invoer); neerzetten, dan weet je wat er in die variabele zit. En zet error_reporting(E_ALL); boven je script, want dan had je allang een notice gehad over het gebruik van niet bestaande array-indices. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Het probleem is niet direct opgelost met de optie van schutje, ik moet het nog toepassen :)

De error-report gaf weinig aan iedere keer... dus dan maar een topic :)

Ik zal het print_r even toepassen !

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

BacardiBreezer schreef op vrijdag 08 april 2005 @ 14:17:
<FORM action="?page=formulier_action.php&var1=<? echo '$var1' ?>&var2=<? echo '$var2' ?>" method="POST" name="checkformulier" onsubmit="checkformulier.Check.disabled=true'">
Dit gaat niet werken, de variabelen die je in de action zet worden niet meegenomen met de submit. Als je dus zegt action="index.php?var='bla'" gaat je browser naar index.php?, zonder die var='bla'. Je moet dus, zoals Schutje al opmerkte, met input type="hidden" werken.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
NetForce1 schreef op vrijdag 08 april 2005 @ 17:32:
[...]

Dit gaat niet werken, de variabelen die je in de action zet worden niet meegenomen met de submit. Als je dus zegt action="index.php?var='bla'" gaat je browser naar index.php?, zonder die var='bla'. Je moet dus, zoals Schutje al opmerkte, met input type="hidden" werken.
Input type hidden ? En hoe kan dat textveld dan nog ingevuld worden ? Denk dat hier iets langs elkaar heen gaat !

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Ik snap er nu echt niks meer van. Ik denk dat Netforce1 en schutje de oplossing al hebben gegeven ook al denk je van niet. Door in je form een hidden input veld op te nemen met als naam page en als value action.php heb je ineens een post variabele page welke aangeeft welke page je moet gaan include. Alle overige post variabelen (van je form) blijven dan ook gewoon werken.

Als bovenstaande niet de oplossing is voor je probleem dan ben ik het bij deze kwijt. Ik snap dan echt niet wat je wilt en ik ben aan de reacties te zien niet de enige. Dus vandaar dat ik je topic nu sluit want het wordt echt te vaag.
Je kan een nieuw topic openen maar beschrijf dan kort en bondig
1 - Wat je nu hebt
2 - Wat je uiteindelijk wilt
3 - Wat je nu precies geprobeerd hebt (met de relevante (dus niet alle) code).
4 - En wat daar niet mee lukte.

"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

Pagina: 1

Dit topic is gesloten.