从先前定义的变量设置 $_GET 值 - PHP
Setting A $_GET Value From A Previously Defined Variable - PHP
我在网站每个页面的 header 中都有一个搜索表单,当通过表单的 action
属性进行搜索查询时,该页面将信息提交到另一个页面,即名为 search.php
并获取搜索 <input>
字段的值并将其存储为名为 searchQuery
的变量。使用 PHP 搜索 MySQL 数据库。所有这些都按预期工作。
我希望将搜索输入字段的值放置在处理搜索的页面的 URL 中,即 search.php
.
我从 SO 上的其他问题了解到,您不能向表单的 action
属性添加变量。如果我在 action 属性中添加查询字符串的键,表单仍然有效:
action="search.php?keyword="
据此,我认为我可以使用以下方法在 search.php
页面上设置 $_GET
值:
if(isset($_POST['search-submit'])) {
// make this variable available before HTML output
$searchQuery = htmlspecialchars($_POST['search']);
$_GET['keyword'] = $searchQuery;
}
然而,这不起作用,尽管它不会在我的 PHP 错误日志中抛出任何错误。
因为我是运行 action 属性分配的特定页面上的脚本,我认为我不需要使用$_SESSION
变量?
HTML表格
这是 header
中每一页上的表格
<form action="search.php?keyword=" method="POST">
<label for="search">Enter Search</label>
<input type="search" name="search" id="search">
<button type="submit" name="search-submit" id="search-submit">Search</button>
</form>
在您的表单中将方法设置为 GET
,从 action
属性中删除查询字符串,使其只是 search.php
,将搜索输入字段中的名称更改为 keyword
并删除 submit
按钮上的 name
。
<form action="search.php" method="GET">
<label for="search">Enter Search</label>
<input type="search" name="keyword" id="search">
<button type="submit" id="search-submit">Search</button>
</form>
然后在您的 search.php
页面中,将您的初始代码更改为以下内容:
if(isset($_GET['keyword'])) {
// make this variable available before HTML output
$searchQuery = htmlspecialchars($_GET['keyword']);
} else {
header("Location: index.php"); // use whatever page is your home page or preferred page to redirect to
}
然后在您的搜索查询中确保设置 $_GET
值:
if(isset($_GET['keyword'])) {
// run your search query using the $searchQuery variable
}
我在网站每个页面的 header 中都有一个搜索表单,当通过表单的 action
属性进行搜索查询时,该页面将信息提交到另一个页面,即名为 search.php
并获取搜索 <input>
字段的值并将其存储为名为 searchQuery
的变量。使用 PHP 搜索 MySQL 数据库。所有这些都按预期工作。
我希望将搜索输入字段的值放置在处理搜索的页面的 URL 中,即 search.php
.
我从 SO 上的其他问题了解到,您不能向表单的 action
属性添加变量。如果我在 action 属性中添加查询字符串的键,表单仍然有效:
action="search.php?keyword="
据此,我认为我可以使用以下方法在 search.php
页面上设置 $_GET
值:
if(isset($_POST['search-submit'])) {
// make this variable available before HTML output
$searchQuery = htmlspecialchars($_POST['search']);
$_GET['keyword'] = $searchQuery;
}
然而,这不起作用,尽管它不会在我的 PHP 错误日志中抛出任何错误。
因为我是运行 action 属性分配的特定页面上的脚本,我认为我不需要使用$_SESSION
变量?
HTML表格
这是 header
中每一页上的表格<form action="search.php?keyword=" method="POST">
<label for="search">Enter Search</label>
<input type="search" name="search" id="search">
<button type="submit" name="search-submit" id="search-submit">Search</button>
</form>
在您的表单中将方法设置为 GET
,从 action
属性中删除查询字符串,使其只是 search.php
,将搜索输入字段中的名称更改为 keyword
并删除 submit
按钮上的 name
。
<form action="search.php" method="GET">
<label for="search">Enter Search</label>
<input type="search" name="keyword" id="search">
<button type="submit" id="search-submit">Search</button>
</form>
然后在您的 search.php
页面中,将您的初始代码更改为以下内容:
if(isset($_GET['keyword'])) {
// make this variable available before HTML output
$searchQuery = htmlspecialchars($_GET['keyword']);
} else {
header("Location: index.php"); // use whatever page is your home page or preferred page to redirect to
}
然后在您的搜索查询中确保设置 $_GET
值:
if(isset($_GET['keyword'])) {
// run your search query using the $searchQuery variable
}