繁体   English   中英

根据网址路径显示结果

[英]Display results based on URL path

我正在尝试创建一个显示基于URL路径的结果的脚本。

例如,我可以像一个URL example.com/A/B/C/D/example.com/A/B/C/所有的方式example.com/

  • A =年
  • B =月
  • C =天
  • D =标题

下面的脚本很好地分解了该脚本。

$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$array = explode('/', $path);

数据库中的表具有称为“路径”的列。 该路径包含“ / A / B / C / D /”。 有没有比使用多个if / else语句更简单的方法来做到这一点:

空路径(主页,限制5个结果:

SELECT * FROM table ORDER BY post_date DESC LIMIT 5;

按年份搜索:

SELECT * FROM table WHERE path LIKE '/' . $array[1] . '/%';

按年和月搜索

SELECT * FROM table WHERE path LIKE '/' . $array[1] . '/' . $array[2] . '/%';

按年,月和日搜索

SELECT * FROM table WHERE path LIKE '/' . $array[1] . '/' . $array[2] . '/' . $array[3] . '/%;

按年,月,日和标题搜索

SELECT * FROM table WHERE path LIKE '/' . $array[1] . '/' . $array[2] . '/' . $array[3] . '/' . $array[4] . '/';

显然,如果此人尝试以其他顺序输入值(字母),则不会找到结果,并显示错误页面。

使用数组元素计数生成路径。

if (count($array)) {
  $sql = "SELECT * FROM table WHERE path LIKE '/" . implode($array, '/') . "/%'";
}

请参阅SQL注入

更干净的方法是为每个路径参数定义不同的REST调用。 我会使用像Flight这样的php微框架来处理它。 例如,如果未指定某些参数,则它将被路由到下一个,依此类推。 因此,它将能够处理不同的参数以及特定于参数的数据库调用。 这样可以消除逻辑或任何歧义。

请看这里供参考:

http://flightphp.com/learn#routing

检查传递机制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM