题
我有基本的html表单通过php回显:
<html>
<body>
<?php
if (isset(我有基本的html表单通过php回显:
<*>
我想将pk的值传递给up.php
修改动作=&quot; up.php?pk = $ pk&quot;没用。
GET["pk"]))
{ $pk = 我有基本的html表单通过php回显:
<*>
我想将pk的值传递给up.php
修改动作=&quot; up.php?pk = $ pk&quot;没用。
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
修改动作=&quot; up.php?pk = $ pk&quot;没用。
解决方案
使用隐藏字段:
<input type="hidden" name="pk" value="<?php echo $pk; ?>">
顺便说一句,像你一样打印大量的HTML 丑陋。考虑使用HEREDOC,模板引擎或框架,逐步退出PHP。
修改强>:
如下所述,您不应首先将GET和POST数据打印回页面而不进行清理。假设pk是主键,您应该使用 intval 将 $ pk
包装在上面。功能,至少。
其他提示
我同意关于$ _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>
您可以在此处找到有关过滤器模块的更多信息:链接文字一>
我也同意Paolo Bergantino,这不是最漂亮的方式,而模板引擎,heredocs或regexp可能是提高系统可读性和可维护性的更好方法。
您不能在单引号字符串中使用变量:
$pk = 123;
echo 'Hello $pk'; // echos Hello $pk
echo "Hello $pk"; // echos Hello 123
echo 'Hello ' . $pk; // echos Hello 123
传递它的最佳方式是作为表单中的隐藏字段
试试这样:
<html>
<body>
<?php
$params = "";
if (isset(试试这样:
<*>
当然你应该知道$ _GET [&quot; pk“]几乎可以包含任何东西,所以想想某种输入清理。
GET["pk"]))
{ $params = "?pk=" . 试试这样:
<*>
当然你应该知道$ _GET [&quot; 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 [&quot; pk“]几乎可以包含任何东西,所以想想某种输入清理。
不隶属于 StackOverflow