передача параметров в php в форме? - PullRequest
1 голос
/ 29 апреля 2009

У меня есть основная HTML-форма, которая отображается через 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>

Я бы хотел передать значение pk в up.php

Изменение действия = "up.php? Pk = $ pk" не сработало.

Ответы [ 4 ]

13 голосов
/ 29 апреля 2009

Использовать скрытое поле:

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

Кстати, печать большого количества HTML, как у вас, есть некрасиво . Для этого рассмотрите возможность выхода из PHP с использованием HEREDOC, механизма шаблонов или фреймворка.

EDIT

Как отмечено ниже, вы не должны печатать данные GET и POST обратно на страницу без предварительной их очистки. Предполагая, что pk является первичным ключом, вы должны обернуть $pk выше с помощью функции intval , как минимум .

2 голосов
/ 29 апреля 2009

Я согласен со всеми комментариями относительно какого-либо управления вводом переменной $ _GET ['pk']. Я бы порекомендовал модуль фильтра в php, который, по моему мнению, является установленным по умолчанию.

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

Более подробную информацию о модуле фильтра можно найти здесь: текст ссылки

Я также согласен с Паоло Бергантино, это не самый красивый способ сделать это, и механизм шаблонов, heredocs или regexp мог бы стать лучшим способом повышения читабельности и удобства обслуживания системы.

1 голос
/ 29 апреля 2009

Нельзя использовать переменную внутри строки в одинарных кавычках:

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

Лучший способ пройти через это - скрытое поле внутри формы

0 голосов
/ 29 апреля 2009

Попробуйте что-то вроде этого:

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

Конечно, вы должны знать, что $ _GET ["pk"] может содержать почти все что угодно, поэтому подумайте о некоторой очистке входных данных.

...