带有 URL 重写的页面上的 PHP 函数?

标签 php mysql url pdo

在我的网站上,我有一个县的下拉菜单...

<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/

相关文章:

javascript - AngularJS 未加载我的页面之一

mysql - SQL 中 LEFT JOIN 之前的 AND 运算符

java - 用Java测试网站有效性

java - 从命令行运行java程序时无法加载资源

php - 如何使用 Yii 创建带有确认对话框的链接?

php - 在 SELECT 查询的情况下,我应该担心 sql 注入(inject)吗

php - 我想对两个表求和,然后将两个值相加以获得收入

php - Facebook 成员(member)资格(错误 : MySql)

javascript - Jquery LOAD 作为 IFRAME 的替代品或类似品

php - 如何转发由 PHP 和 IMAP 下载的电子邮件?