在我的网站上,我有一个县的下拉菜单...
<form method="post" action="/people.php" >
<select name="county" onchange="this.form.submit()" >
<option>--Select a County--</option>
<option value="Avon">Avon</option>
<option value="Bedfordshire">Bedfordshire</option>
<option value="Berkshire">Berkshire</option>
</select>
</form>
然后我会在我的人员页面上查询...
$county = $_POST['county'];
$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != '' AND County = :county");
$sth->execute(array(':county' => $county));
我想使用 URL 重写将县包含在我的 url 中,因此当您在选择县后转到该页面时,它不会显示为
'www.mysite.com/people.php'
但显示为
'www.mysite.com/people-in-avon'
我仍然是 PHP 的新手,但如果我想这样做,我是否需要使用 GET 方法,并将我的数据发布到 PHP 页面,然后/strong> 重定向到 people.php?在 PHP 中将查询放在页面上是不好的做法吗?
我希望这是有道理的?
最佳答案
您首先需要使用带有一些基本重定向的 .htaccess 才能使用 people-in-[country] URL。
RewriteEngine on
RewriteRule ^people-in-(.*) /people.php?county=$1 [L]
在你的 people.php 中:
<?php
// you county is set in GET via the .htaccess
$county = $_GET['county'];
// database query
$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != '' AND County = :county");
$sth->execute(array(':county' => $county));
?>
要创建 URL,您应该替换特殊字符、重音符号、空格... 但是如果你的县是一个词,没有特殊字符,你可以这样做:
<?php
// to redirect
$county = $_POST['county'];
$url = '/people-in-' . $county;
// redirect
header('Location:' . $url);
要通过 ID 检索您的县,您可以执行类似的操作(伪代码):
RewriteEngine on
RewriteRule ^people-in-.*-([0-9]+) /people.php?county_id=$1 [L]
要显示县:
// you county_id is set in GET via the .htaccess
$county_id = $_GET['county_id'];
前往县城的路线:
// to redirect
$county_id = $_POST['county_id'];
// fetch the county by id
// BASIC string cleaning
$county = str_replace(' ', '-', $county);
$url = '/people-in-' . $county . '-' . $county_id;
// redirect
header('Location:' . $url);
关于带有 URL 重写的页面上的 PHP 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044481/