【问题标题】:How to check data from dynamical url request php如何检查来自动态 url 请求 php 的数据
【发布时间】:2018-04-25 01:47:26
【问题描述】:

我正在练习创建一个 CMS。我将所有 url 请求设置为index.php。我通过$path 变量获取请求数据。
.htAccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]

所以,我在$path 上获取数据,并在页面上向echo 数据发出sql 请求。我的 sql 表有 2 列 dataurl。所以,我的代码是:

$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-pagelocalhost/Anything/how-to-make-a-page 给了我同样的结果。请问谁能解释一下处理这种类型的请求?

【问题讨论】:

    标签: php mysql sql .htaccess


    【解决方案1】:

    我的建议是你从一个易于学习的框架开始,它是怎样的“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

    但我坚持认为,如果您想很好地了解路线的工作原理、数据库查询、驱动程序、表单验证。好吧,你应该参考我之前提到的框架。

    【讨论】:

      猜你喜欢
      • 2016-03-06
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多