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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top