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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top