我使用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
我将不胜感激任何帮助或建议。
答案 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。