passando parametri a php in una forma?
Domanda
Ho il modulo html di base riecheggiato tramite php:
<html>
<body>
<?php
if (isset( Ho il modulo html di base riecheggiato tramite php:
<*>
Vorrei passare il valore di pk a up.php
Modifica azione = " up.php? pk = $ pk " non ha funzionato.
GET["pk"]))
{ $pk = Ho il modulo html di base riecheggiato tramite php:
<*>
Vorrei passare il valore di pk a up.php
Modifica azione = " up.php? pk = $ pk " non ha funzionato.
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>
Vorrei passare il valore di pk a up.php
Modifica azione = " up.php? pk = $ pk " non ha funzionato.
Soluzione
Utilizza un campo nascosto:
<input type="hidden" name="pk" value="<?php echo $pk; ?>">
A proposito, stampare grandi quantità di HTML come te è brutto . Prendi in considerazione la possibilità di uscire da PHP per farlo, utilizzando HEREDOC, un motore di template o un framework.
Modifica :
Come indicato di seguito, non è necessario stampare nuovamente i dati GET e POST sulla pagina senza prima igienizzarli. Supponendo che pk sia una chiave primaria, dovresti racchiudere $ pk
sopra con intval funzione, almeno .
Altri suggerimenti
Sono d'accordo con tutti i commenti su un qualche tipo di controllo di input della variabile $ _GET ['pk']. Consiglierei il modulo filtro in php, che credo sia un modulo installato di default credo.
<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>
Puoi trovare ulteriori informazioni sul modulo filtro qui: testo del link
Sono anche d'accordo con Paolo Bergantino, questo non è il modo più carino per farlo, e un template engine, heredocs o regexp potrebbe essere un modo migliore per aumentare la leggibilità e la manutenibilità del sistema.
Non puoi usare una variabile all'interno di una stringa a virgoletta singola:
$pk = 123;
echo 'Hello $pk'; // echos Hello $pk
echo "Hello $pk"; // echos Hello 123
echo 'Hello ' . $pk; // echos Hello 123
Il modo migliore per passarlo sarebbe come un campo nascosto all'interno del modulo
Prova sth in questo modo:
<html>
<body>
<?php
$params = "";
if (isset( Prova sth in questo modo:
<*>
Ovviamente dovresti essere consapevole che $ _GET [" pk "] può contenere praticamente qualsiasi cosa, quindi pensa a qualche tipo di sanificazione dell'input.
GET["pk"]))
{ $params = "?pk=" . Prova sth in questo modo:
<*>
Ovviamente dovresti essere consapevole che $ _GET [" pk "] può contenere praticamente qualsiasi cosa, quindi pensa a qualche tipo di sanificazione dell'input.
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>
Ovviamente dovresti essere consapevole che $ _GET [" pk "] può contenere praticamente qualsiasi cosa, quindi pensa a qualche tipo di sanificazione dell'input.