php - 如何检查来自动态 url 请求 php 的数据
问题描述
我正在练习创建一个 CMS。我将所有 url 请求设置为index.php
. 我通过$path
变量获取请求数据。
.ht访问
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]
因此,我获取数据并对页面上的数据$path
发出sql
请求echo
。我的sql
桌子有 2 列data
和url
. 所以,我的代码是:
$sql = "SELECT * FROM post where url='" . $path . "'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
if(is_array($row)) {
echo $row["data"];
}
但是当我创建类别时问题开始了,我想我必须添加一个新列ctg
所以我做到了。现在当我收到请求时localhost/php/how-to-make-a-page
,我想我必须这样做:
if (strpos($path, '/') !== false) {
$array = explode("/", $path);
$url = end($array);
$sql = "SELECT * FROM post where url='" . $url . "'";
}
但我对这个想法很幼稚。因为localhost/php/how-to-make-a-page
和localhost/Anything/how-to-make-a-page
给我一样的结果。请任何人都可以解释处理这种类型的请求吗?
解决方案
我的建议是你从一个易于学习的框架开始,它是如何“ codeigneiter ”的,当你去编写文档时,你会理解什么是路由、控制器、模型等等。现在关于你的代码,你没有对类别进行分组,因为你应该有这样的语法,“category / php / how-to-make-a-page”和这样的查询:“SELECT * FROM post WHERE category =" php "AND url =" how-to-make-a-page " 和 php 示例将是:
<?php
$parts_of_url = explode('/', $path);
if($parts_of_url[0] === 'category') {
$sql = "SELECT * FROM post where category_id= :category_id AND url= :url";
}
?>
在此处检查 sql 语句中的参数是什么http://php.net/manual/en/pdostatement.bindparam.php
但我会坚持,如果你想很好地了解路由的工作原理、数据库查询、驱动程序、表单验证。好吧,你应该参考我之前提到的框架。
推荐阅读
- ios - 如何从 tableview 将数据上传到 firebase?
- javascript - 在空格或“/”处或在Javascript中一定数量的字符之后的最大字符之后分割字符串
- python - 如何显示所有 GitHub 用户存储库的列表?
- django - 如何正确设置 docker-compose、pytest、Selenium Driver 和 geckodriver/chromedriver
- r - 选择性地采样光栅像素
- ios - 如何通过在 didFinishLaunchingWithOptions 方法中单击通用链接来检查应用程序是否已打开
- apache-spark - Spark LightGBM 预测与输出数据类型的 printSchema 不同的数据帧数据类型
- node.js - 如何在 NodeJS 中等待来自 MongoDB 的新数据?
- google-cloud-platform - Webhook 调用失败:DialogFlow v2 Fulfillments 中的 URL_REJECTED 错误
- bash - 在一个函数的一行中组合多个输出