Ich habe auf meiner Seite ein Formular mit einer Reihe von Eingaben und einigen versteckten Feldern. Ich wurde gebeten, diese Daten über ein "Post-Array" zu übergeben.
Hier ist ein Ausschnitt davon, was ich gerade mache
<form enctype="multipart/form-data" action="process.php" method="POST">
...
more inputs
...
<!-- Hidden data -->
<input type="hidden" name="TimeToRenderHoursInput" value="<?php echo $RenderHours; ?>" />
<input type="hidden" name="TimeToRenderDaysInput" value="<?php echo $RenderDays; ?>" />
<input type="hidden" name="TimeToRenderYearsInput" value="<?php echo $RenderYears; ?>" />
<input type="hidden" name="ContentMinutesInput" value="<?php echo $ContentMinutes; ?>" />
<input type="hidden" name="ContentMinutesSelector" value="<?php echo $ContentMinutesSelector; ?>" />
<input type="hidden" name="PriorityInput" value="<?php echo $Priority; ?>" />
<input type="hidden" name="AvgFrameRenderTimeInput" value="<?php echo $AverageFrameRenderTime; ?>" />
<input type="hidden" name="AvgFrameRenderTimeSelector" value="<?php echo $AverageFrameRenderSelector; ?>" />
<input type="hidden" name="CoresInTestInput" value="<?php echo $CoresInTest; ?>" />
<input type="hidden" name="EstPriceInput" value="<?php echo $EstPrice; ?>" />
<!-- End hidden -->
<input type="image" src="http://www.venndigital.co.uk/testsite/renderbutton/_includes/images/button/submit.jpg" alt="Submit" value="Submit" style="border:0!important;" />
In meiner process.php rufe ich dann die Daten als solche auf ...
$first_name = $_POST['first_name'];
$company_name = $_POST['company_name'];
$email_from = $_POST['email'];
$address = $_POST['address'];
$postcode = $_POST['postcode'];
$RenderHours = $_POST['TimeToRenderHoursInput'];
$RenderDays = $_POST['TimeToRenderDaysInput'];
$RenderYears = $_POST['TimeToRenderYearsInput'];
$ContentMinutes = $_POST['ContentMinutesInput'];
$ContentMinutesSelector = $_POST['ContentMinutesSelector'];
$Priority = $_POST['PriorityInput'];
$AverageFrameRenderTime = $_POST['AvgFrameRenderTimeInput'];
$AverageFrameRenderSelector = $_POST['AvgFrameRenderTimeSelector'];
$CoresInTest = $_POST['CoresInTestInput'];
$EstPrice = $_POST['EstPriceInput'];
Gibt es eine Möglichkeit, es als Array zu posten? Ist meine Methode überhaupt eine schlechte Praxis?
gib jedem Eingang einen Namen wie
<input type="hidden" name="data[EstPriceInput]" value="" />
dann die in php
$_POST['data'];
print_r($_POST);//print out the whole post
print_r($_POST['data']); //print out only the data array
wird ein Array sein
Wenn Sie diese Daten bereitstellen, werden sie als Array in $ _POST gespeichert.
Sie könnten optional so etwas tun:
<input name="arrayname[item1]">
<input name="arrayname[item2]">
<input name="arrayname[item3]">
und
$item1 = $_POST['arrayname']['item1'];
$item2 = $_POST['arrayname']['item2'];
$item3 = $_POST['arrayname']['item3'];
aber ich verstehe den Punkt nicht. vielleicht mehr klärung bekommen?
Das machst du ja schon. Wenn das Formular gesendet wird, werden die Daten durch ein Post-Array ($ _POST) geleitet. Ihre process.php empfängt dieses Array und verteilt seine Werte als einzelne Variablen.
Warum senden Sie es per Post, wenn Sie es bereits auf der Serverseite (PHP) haben?
Warum speichern Sie das Array nicht einfach in der Variablen $_SESSION
, damit Sie es verwenden können, wenn das Formular gesendet wird. Dies macht es möglicherweise "sicherer", da der Client die Variablen nicht durch Bearbeiten der Quelle ändern kann.
Es hängt davon ab, wie Sie wirklich wollen.
Sie können die eingebaute Funktion verwenden:
extract($_POST);
für jeden Eintrag in $_POST
wird eine Variable erstellt.