有没有办法重新使用上一页的表单数据?

时间:2014-01-30 17:58:02

标签: php forms get

我使用GET方法将page1.php中的数据发送到page2.php。所以在URL中,我得到的值为:

http://mydomain.com/page2.php?value1=myname&value2=xyz123

现在,在这里,在page2.php中我要添加另一个表单,我希望在提交时发送到page2.php(self),格式如下:

http://mydomain.com/page2.php?value1=myname&value2=xyz123&value3=1234

我想要做的是在URL中的先前值的末尾添加新值。

有什么方法可以重用我从上一页获得的数据?我试过以下代码

<form method="get" action="'."http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'">

但是它将值发送到http://mydomain.com/page2.php?value3=1234而不是http://mydomain.com/page2.php?value1=myname&value2=xyz123&value3=1234

我将不胜感激任何帮助或建议。

2 个答案:

答案 0 :(得分:1)

您应该使用POST方法(而不是GET)来避免URL中的密码。

使用GET,数据会显示在网址中。使用POST时,数据将包含在HTTP请求中,但不会显示在URL中。使用POST,用户认为更安全


关于你的问题,一种方法是在表单中加入一些隐藏的输入:

<input type="hidden" name="uname" value="<?php echo $_GET['uname']; ?>" />
<input type="hidden" name="pass" value="<?php echo $_GET['pass']; ?>" />

但同样,这不是一个好主意,因为密码在源代码中可见

另一种方法是设置 session 变量,如下所示:

<?php

$_SESSION['uname'] = $_GET['uname'];
$_SESSION['pass'] = $_GET['pass'];

?>

但同样,将密码存储到会话数组并不是一个好主意。如果您想避免这种情况,可以将每个用户的唯一ID存储到$_SESSION['id']

要使用会话,您需要在html之前调用session_start()(避免任何空格)。

您可以在the documentation中找到有关会话的更多信息。

答案 1 :(得分:0)

您需要在表单上使用隐藏的输入。因此,当page1发布到page2时,生成的page2的HTML将包含这些值。稍后当提交page2时,它将发送这些隐藏字段的值+输入的电话值。如下所示:

  <form>
    <input type="hidden" name="uname" value="<?= $uname ?>" />
    <input type="hidden" name="pass" value="<?= $pass ?>" />

    <input type="text" name="phone" value="" />
  </form>

请记住在将HTML放在'value属性之前转义HTML。

相关问题