[PHP] Formfield vullen met POST data

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Iedereen die met php werkt is wel bekend dat je via $_POST een formfield kunt vullen met data welke vanaf een andere pagina komt.

Nu heb ik een formfield in een pagina welke ik kan vullen doormiddel van

form.php?formfieldnaam=dit-is-input

En in het formfield komt te staan: dit-is-input.

Is het mogelijk om in de HTML, dus niet de PHP code de "formfieldnaam=dit-is-input" op te nemen zodat dit dezezelfde werking heeft als form.php?formfieldnaam=dit-is-input ?

De reden dat ik dit wil is omdat ik het formulier include in een pagina en per pagina andere content in deze formfield wil plaatsen.

Ik denk dat ik geen optie heb, maar wellicht heeft iemand een "fancy" idee :)

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ja en nee...
Met pure html ga je dit niet voor elkaar krijgen. Met javascript kun je het misschien wel voor elkaar krijgen. Maar waarom wil je dit?
Waarom maak je er trouwens een PHP topic van als je het met html wil oplossen?

[ Voor 21% gewijzigd door bigbeng op 28-05-2008 13:28 ]


Acties:
  • 0 Henk 'm!

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Zet in je html het volgende:

HTML:
1
<input type="hidden" name="formfieldnaam" value="dit-is-input" />

[ Voor 3% gewijzigd door Face_-_LeSS op 28-05-2008 14:03 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Het is niet echt duidelijk wat je nou precies bedoelt..

Wat bedoel je met formfield? <INPUT> tags? <FORM> tags? Die url die je geeft, geef je die als action mee aan je form tag?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bigbeng schreef op woensdag 28 mei 2008 @ 13:27:
Waarom maak je er trouwens een PHP topic van als je het met html wil oplossen?
Omdat ik toch met $_POST de variabele in de pagina zal moeten krijgen.
Face_-_LeSS schreef op woensdag 28 mei 2008 @ 13:27:
Zet in je html het volgende:

HTML:
1
<input type="hidden" name="formfieldnaam" value="dit-is-input" />
Je krijgt dan dus 2 formfields met zelfde naam waarvan 1 hidden en de andere visible bedoel je ?

Zou je geen gebruik van "title" kunnen maken om het formfield te indentificeren ?

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Niet dus, dat moet met $_GET.
Je geeft toch aan dat het via de querystring wordt doorgegeven?

edit:

Ik weet trouwens niet of je in PHP $_POST en $_GET met elkaar kan mixen, ik ben meer een ASP.NET man en dan kun je met Request.QueryString bij querystring variabelen.

[ Voor 49% gewijzigd door bigbeng op 28-05-2008 13:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bigbeng schreef op woensdag 28 mei 2008 @ 13:43:
Niet dus, dat moet met $_GET.
Je geeft toch aan dat het via de querystring wordt doorgegeven?

edit:

Ik weet trouwens niet of je in PHP $_POST en $_GET met elkaar kan mixen, ik ben meer een ASP.NET man en dan kun je met Request.QueryString bij querystring variabelen.
Klopt, ik moet dus dat query string verhaal in de "code" zien te krijgen zodat de formfield deze oppakt, zonder dat ik de formfield hoef aan te passen.

Dat is het doel, de query string in de code verplaatsen zodat de URL "schoon" bijft en "niet" aan te passen is

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Okee, je bent me kwijt. Wat is het probleem dat je wil oplossen?

Wat ik meen te begrijpen:

Je hebt een php pagina met daarin een (deel van een) form die je dynamisch wilt kunnen vullen. Normaalgesproken vulde je hem alleen vanuit de post, maar je wilt nu querystring variabelen gaan gebruiken.
Klopt dit zover?

Vervolgens kom je met een (voor mij) onnavolgbaar verhaal over het schoonhouden van de URL en het niet aanpasbaar maken van de URL. Met welk doel?

Acties:
  • 0 Henk 'm!

  • l1dert
  • Registratie: Oktober 2007
  • Laatst online: 26-08 12:19
als ik het goed lees bedoel je dus dan je een form include op verschillende pagina's. Maar dan kun je toch gewoon in de pagina voor het include variabelen aanmaken en die dan met het formuliertje uitlezen.

Acties:
  • 0 Henk 'm!

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 03-08 17:53

Yoozer

minimoog

Verwijderd schreef op woensdag 28 mei 2008 @ 13:46:
Dat is het doel, de query string in de code verplaatsen zodat de URL "schoon" bijft en "niet" aan te passen is
Dan ben je wel heel omslachtig bezig.

Na het uitvoeren van de $_POST mik je de inhoud van de $_POST in een $_SESSION-variabele, en eventueel nog wat sanity checks erover.

Vervolgens komt er bij je 2e formulier waar je naartoe post gewoon dit te staan:

PHP:
1
<input type="text" id="bla" name="bla" value="<?=$_SESSION['form']['veldnaam']?>" />


Is dat een probleem dat je veel in de $_SESSION dumpt? Nee, helemaal niet.

teveel zooi, te weinig tijd


Acties:
  • 0 Henk 'm!

  • H004
  • Registratie: Maart 2006
  • Laatst online: 28-05 19:55
Volgens mij wil je $_GET-data plaatsen in een met include($page) geinclude bestand. Maar je wil niet dat er een ? met get-data achter de URL wordt geplaatst? En $_POST wil je niet, omdat je dan problemen met backbuttons krijgt etc?

PHP:
1
2
3
4
5
6
7
8
// index.php

// Tekst haal je uit je database, ofzo?
$tekst = "dit-is-input"; 
include("form.php");

//form.php
echo "<input type=\"text\" name=\"formnaam\" value=\"".$tekst."\" />";

Geen "vervuilde" url, maar wel "get"-data...

@Muer: ten eerste, het is inderdaad ook helemaal niet nodig, bovenstaande werkt ook (gewoon variabelen meegeven is al genoeg, hoeft niet eens in een $_GET. Ten tweede, ik snap dat het untrusted is, maar zolang men niet form.php aan kan spreken in de browser zal je clientside toch weinig met $_GET-data kunnen doen? Probeer maar: index.php?formfield=test (met mn oude voorbeeld)

[ Voor 31% gewijzigd door H004 op 28-05-2008 14:14 . Reden: Scipt aangepast, werkt gewoon zonder $_GET... ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Je bent met server-side scripting bezig, wat moet je in de url met die waarden? Dit is wel zo ontiegelijk basis form handling, dit krijg je in elke php tutorial voorgeschoteld.

@H004:
Je wil niet dingen in je $_GET array gaan plaatsen. Je $_GET array is een untrusted source, net als $_POST.

[ Voor 25% gewijzigd door MueR op 28-05-2008 14:09 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem is dat ik geen PHP code kan toepassen in het form dat ik include, ikmoet dus de URL gebruiken met de waarden of iets in mijn PHP/HTML.

Als ik een value "<? $_POST['fieldname']; ?>" doe als ik via een klein formpje naar mijn geinclude form post om dit formulier te vullen krijg ik gewoon keihard:

<li>

<input value="<? $_POST['fieldname']; ?>" name="formname"/>
</li>

Te zien in de HTML, dus ook pagina.

De formfields gebruiken standaard $_GET, dus vandaar dat ik de url variabele wel kan gebruiken, maar dit niet wil omdat dit te simpel aan te passen is.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Als je geen controle hebt over het formulier wat je laat prefillen en die neemt alleen GET (dus geen POST) vars aan dan kan het niet.

"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!

Verwijderd

Topicstarter
Creepy schreef op woensdag 28 mei 2008 @ 14:58:
Als je geen controle hebt over het formulier wat je laat prefillen en die neemt alleen GET (dus geen POST) vars aan dan kan het niet.
Dat dacht ik dus ook, wilde het even zeker weten ;)

Dank je !

Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
<?php
$_GET = $_POST;
include('formulierding.php');
?>

Ik heb geen flauw idee of het werkt ook niet echt een nette manier volgens mij :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
rewind. schreef op woensdag 28 mei 2008 @ 15:16:
<?php
$_GET = $_POST;
include('formulierding.php');
?>

Ik heb geen flauw idee of het werkt ook niet echt een nette manier volgens mij :P
Ik heb code wise, kan ik niet uitleggen aangezien je de tool er voor moet kennen, al iets gevonden.

Ik gebruik een variabele string-replace welke ook in de applicatie wordt gebruikt :)

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Misschien ligt het aan mij, maar ben je nu niet enorm moeilijk aan het doen?
Je kunt toch ook een variabel stukje javascript maken wat je opbouwt in je main php pagina en vervolgens afvuurt in de onload van de body tag?
Conceptueel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?
code processing etc
?>
<html>
<head>
<script>
function MyObj( key, value)
{
this.key = key
this.value = value
}

<?
en dan hier een stukje php dat een array van GET variabelen samenstelt:
var arr = new Array();
echo "arr[0] = new MyObj('$formfield1', '$value');";
?>

// en tenslotte een functie die de array afloopt en formfields zet
function walkFieldArray()
{
   for ( i=0; i < arr.length; i++ )
   {
      var field = document.getElementById(arr[i].key);
      if ( field != null )
      {
          field.value = arr[i].value
      }
   }
}
</script>
<body onload="walkFieldArray()">
... rest van HTML en PHP, inclusief de include()

Redelijk uit de losse pols, dus geen garanties, maar het geeft de essentie redelijk aan.
Pagina: 1