Pergunta

Eu tenho a forma básica HTML ecoada através do PHP:

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

Eu gostaria de passar o valor de pk para up.php

Modificando ação = "up.php? Pk = $ pk" não funcionou.

Foi útil?

Solução

Use um campo oculto:

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

A propósito, imprimir grandes quantidades de html como você tem feio. Considere sair do PHP para fazê -lo, usando o heredoc, um mecanismo de modelo ou uma estrutura.

EDITAR:

Como observado abaixo, você não deve imprimir e postar dados de volta à página sem higienizá -los primeiro. Supondo que PK seja uma chave primária, você deve envolver $pk acima com o intval função, pelo menos.

Outras dicas

Concordo com todos os comentários sobre algum tipo de controle de entrada da variável $ _Get ['PK']. Eu recomendaria o módulo de filtro no PHP, que é praticamente um módulo instalado padrão, acredito.

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

Você pode encontrar mais informações sobre o módulo de filtro aqui: Texto do link

Também concordo com Paolo Bergantino, essa não é a maneira mais bonita de fazê -lo, e um mecanismo de modelo, Heredocs ou Regexp pode ser uma maneira melhor de aumentar a legibilidade e a manutenção do sistema.

Você não pode usar uma variável dentro de uma string de citação única:

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

A melhor maneira de passar por isso seria como um campo oculto dentro do formulário

Experimente sTH assim:

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

É claro que você deve estar ciente de que $ _Get ["PK"] pode conter praticamente qualquer coisa, então pense em algum tipo de higienização de insumos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top