Parameterübergabe in einer Form php?
Frage
Ich habe das grundlegende HTML-Formular durch php hallt:
<html>
<body>
<?php
if (isset($_GET["pk"]))
{ $pk = $_GET["pk"];}
echo '<form action="up.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>';
?>
</body>
</html>
Ich möchte den Wert von pk passieren up.php
Aktion Ändern = "up.php? Pk = $ pk" hat nicht funktioniert.
Lösung
Verwenden Sie ein verstecktes Feld:
<input type="hidden" name="pk" value="<?php echo $pk; ?>">
Durch die Art und Weise, Druck große Mengen an HTML, wie Sie haben, gibt es hässlich . Betrachten Sie entweder einen Schritt aus PHP zu tun, mit HEREDOC, einem Template-Engine, oder einen Rahmen.
Bearbeiten :
Wie weiter unten erwähnt, sollten Sie nicht auf die Seite drucken GET und POST-Daten zurück, ohne es zuerst zu Desinfizieren. Unter der Annahme, pk ist ein Primärschlüssel, sollten Sie $pk
wickeln oben mit der intval Funktion, an dem sehr dest .
Andere Tipps
Ich bin mit allen Kommentaren in Bezug auf irgendeine Art von Eingabesteuerung des $ _GET [ ‚pk‘] Variable. Ich würde das Filtermodul in PHP empfehlen, das Modul so ziemlich ein standardmäßig installiert ist, glaube ich.
<html>
<body>
<?php
$param = filter_input(INPUT_GET, 'pk', FILTER_SANITIZE_ENCODED);
?>
<form action="up.php<?php echo (isset($param) && $param != false) ? '?pk=' . $params : ''); ?>" method="post"enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
Sie können mehr Informationen über das Filtermodul finden Sie hier: Linktext
ich auch mit Paolo Bergantino zustimmen, ist dies nicht der schönste Weg, es zu tun, und ein Template-Engine, Heredocs oder regexp könnte ein besserer Weg, der die Lesbarkeit und Wartbarkeit des Systems erhöht wird.
Sie können nicht eine Variable innerhalb eines Strings in einfachen Anführungszeichen verwenden:
$pk = 123;
echo 'Hello $pk'; // echos Hello $pk
echo "Hello $pk"; // echos Hello 123
echo 'Hello ' . $pk; // echos Hello 123
Der beste Weg, um es zu durchlaufen als verstecktes Feld in der Form sein würde
Versuchen etw wie folgt aus:
<html>
<body>
<?php
$params = "";
if (isset($_GET["pk"]))
{ $params = "?pk=" . $_GET["pk"];}
echo '<form action="up.php' . $params . '" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>';
?>
</body>
</html>
Natürlich sollten Sie sich bewusst sein, dass $ _GET [ „pk“] kann so ziemlich alles enthalten, so denken über eine Art Eingabe sanitization.