Question

j'ai la forme html de base reprise par php:

<html>
<body>
<?php 
if (isset(

j'ai la forme html de base reprise par php:

<*>

Je voudrais passer la valeur de pk à up.php

Modification de l'action = "up.php? pk = $ pk " n'a pas fonctionné.

GET["pk"])) { $pk =

j'ai la forme html de base reprise par php:

<*>

Je voudrais passer la valeur de pk à up.php

Modification de l'action = "up.php? pk = $ pk " n'a pas fonctionné.

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>

Je voudrais passer la valeur de pk à up.php

Modification de l'action = "up.php? pk = $ pk " n'a pas fonctionné.

Était-ce utile?

La solution

Utilisez un champ caché:

<input type="hidden" name="pk" value="<?php echo $pk; ?>">

Soit dit en passant, imprimer de grandes quantités de HTML comme vous le faites est laid . Envisagez de sortir de PHP pour le faire, en utilisant HEREDOC, un moteur de template ou un framework.

MODIFIER :

Comme indiqué ci-dessous, vous ne devez pas imprimer les données GET et POST sur la page sans les nettoyer au préalable. En supposant que pk soit une clé primaire, vous devriez envelopper $ pk ci-dessus avec le intval . fonction, au minimum .

Autres conseils

Je suis d'accord avec tous les commentaires concernant une sorte de contrôle d'entrée de la variable $ _GET ['pk']. Je recommanderais le module de filtrage en php, qui est à peu près un module installé par défaut, je crois.

<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>

Vous trouverez plus d'informations sur le module de filtrage ici: texte du lien

Je suis également d'accord avec Paolo Bergantino, ce n'est pas la meilleure façon de le faire, et un moteur de template, heredocs ou regexp pourrait être un meilleur moyen d'accroître la lisibilité et la maintenabilité du système.

Vous ne pouvez pas utiliser une variable dans une chaîne entre guillemets simples:

$pk = 123;
echo 'Hello $pk'; // echos Hello $pk
echo "Hello $pk"; // echos Hello 123
echo 'Hello ' . $pk; // echos Hello 123

La meilleure façon de le transmettre serait comme un champ caché à l'intérieur du formulaire

Essayez ça comme ça:

<html>
<body>
<?php 
$params = "";
if (isset(

Essayez ça comme ça:

<*>

Vous devez bien entendu savoir que $ _GET ["pk"] peut contenir à peu près n'importe quoi, alors pensez à une sorte de nettoyage des entrées.

GET["pk"])) { $params = "?pk=" .

Essayez ça comme ça:

<*>

Vous devez bien entendu savoir que $ _GET ["pk"] peut contenir à peu près n'importe quoi, alors pensez à une sorte de nettoyage des entrées.

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>

Vous devez bien entendu savoir que $ _GET ["pk"] peut contenir à peu près n'importe quoi, alors pensez à une sorte de nettoyage des entrées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top