所以在我正在处理的这个应用程序上,它会在我的数据库中搜索一些代码,抓取它,打开一个新页面,并通过获取其 id 将代码(必要时)放在新页面上。
现在,在该代码(来自数据库)中,还有另一种基于用户输入进行处理的形式。我遇到的问题是新表单未在同一页面上处理。它会重定向到未指定数据库中代码的新 URL。例如。。。
当使用数据库中的代码生成新页面时,url 如下所示...
localhost/newpage.php?id=1
然后,当我从数据库中提交代码中的表单时,它会更改为此...
localhost/newpage.php?input1=blah&input2=blah
但我想要这样的东西...
localhost/newpage.php?id=1&input1=blah&input2=blah
仅供参考,此代码必须是动态的。例如,假设我不知道用户要查找的 id,并且该 id 中我不知道有多少输入字段。
如果你们需要一些明确的代码(显然我省略了不必要的东西)......
这是搜索页面.php它搜索数据库并显示所有相关项目。然后用户选择一个包含 id 的项目并生成具有该 id 的新页面.php...
//there is a search query then puts all elements in an associative array
$rows = items->fetch_all(MYSQL_ASSOC);
foreach ($rows as $row) {
$id = $row['id'];
echo "<a href='newpage.php?id=$id>User clicks to generate a newpage</a>";
}
这是从数据库中检索并放置在新页面.php...
<form action="newpage.php" method="GET">
<input name="input1"></input>
//there can be an x amount of input tags here depending on what id is pulled
</form>
这是新页面顶部的 php.php当它生成时...
if (isset($_GET['id'])) {
//retrieves data from specified id from database
if(isset($_GET['inputs'])) {
//do something with user inputs
}
}
有什么办法可以做到这一点吗?感谢所有帮助!谢谢:)
溶液
为此,我必须创建一个存储 id 的会话。因此,我不得不将所有 _GET 美元的变量(处理 id 信息)更改为 _SESSION 美元的变量。但只要您不存储关键/敏感信息,它就可以工作!
这是代码更改...
搜索更改.php ...
//there is a search query then puts all elements in an associative array
$rows = items->fetch_all(MYSQL_ASSOC);
foreach ($rows as $row) {
$id = $row['id'];
$_SESSION['current_id'] = $id;
echo "<a href='newpage.php?id=$id>User clicks to generate a newpage</a>";
}
新页面中的更改.php...
<form action="newpage.php?id=" method="POST">
<input name="input1"></input>
//there can be an x amount of input tags here depending on what id is pulled
</form>
新页面的 php 更改.php ...
if (isset($_SESSION['current_id'])) {
//retrieves data from specified id from database
if(isset($_POST['inputs'])) {
//do something with user inputs
}
}
这一切都归功于...
萨提克汗
您可以在引用的标头中获取查询字符串"id"。您可以在客户端或服务器中附加该查询字符串。
请使用$_SERVER['HTTP_REFERER']
获取引用网址,然后从那里获取ID。如果它是登录用户的ID,出于安全原因,我建议将它们存储在会话中。
根据您的意见,您可以执行以下任一操作,1. 将表单中的 ID 保留为隐藏变量2. 使用 id 作为查询字符串之一更新您的 URL,并发送回客户端进行纠错。3. 将 ID 保留在会话中(如果适用)4. 在重定向之前使用帖子并执行表单验证
谢谢。