Pregunta

Tengo el formulario html básico reflejado en php:

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

Tengo el formulario html básico reflejado en php:

<*>

Me gustaría pasar el valor de pk a up.php

Acción de modificación = " up.php? pk = $ pk " no funcionó.

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

Tengo el formulario html básico reflejado en php:

<*>

Me gustaría pasar el valor de pk a up.php

Acción de modificación = " up.php? pk = $ pk " no funcionó.

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>

Me gustaría pasar el valor de pk a up.php

Acción de modificación = " up.php? pk = $ pk " no funcionó.

¿Fue útil?

Solución

Use un campo oculto:

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

Por cierto, imprimir grandes cantidades de HTML como el que tiene allí es feo . Considere salir de PHP para hacerlo, utilizando HEREDOC, un motor de plantillas o un marco.

EDITAR :

Como se indica a continuación, no debe imprimir los datos GET y POST de nuevo en la página sin desinfectarlos primero. Suponiendo que pk es una clave principal, debe ajustar $ pk arriba con el intval función, como mínimo .

Otros consejos

Estoy de acuerdo con todos los comentarios sobre algún tipo de control de entrada de la variable $ _GET ['pk']. Recomendaría el módulo de filtro en php, que es prácticamente un módulo instalado por defecto, creo.

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

Puede encontrar más información sobre el módulo de filtro aquí: texto del enlace

También estoy de acuerdo con Paolo Bergantino, esta no es la forma más bonita de hacerlo, y un motor de plantillas, heredocs o regexp podría ser una mejor manera de aumentar la legibilidad y el mantenimiento del sistema.

No puede usar una variable dentro de una cadena entre comillas simples:

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

La mejor manera de pasarlo sería como un campo oculto dentro del formulario

Pruebe algo como esto:

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

Pruebe algo como esto:

<*>

Por supuesto, debe tener en cuenta que $ _GET [" pk "] puede contener casi cualquier cosa, así que piense en algún tipo de desinfección de entrada.

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

Pruebe algo como esto:

<*>

Por supuesto, debe tener en cuenta que $ _GET [" pk "] puede contener casi cualquier cosa, así que piense en algún tipo de desinfección de entrada.

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>

Por supuesto, debe tener en cuenta que $ _GET [" pk "] puede contener casi cualquier cosa, así que piense en algún tipo de desinfección de entrada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top