使用php从数据库创建页面[就像framework或cms所做的那样]

使用php从数据库创建页面[就像framework或cms所做的那样],php,sql,wordpress,.htaccess,Php,Sql,Wordpress,.htaccess,嗨,我有一个数据库表和一个php表单,我可以在其中插入表项。例如,我有一个表单,可以在其中添加帖子标题和帖子内容。因此在表中我有4列(1)post\u id,(2)post\u title,(3)post\u content,(4)post\u url。因此,目前我在表格中填写了title=“red color”content=“redcolor是如此明亮和吸引人”。所以它将存储在数据库中 现在我需要的是,当表中有一个条目时,我还必须生成页面url。这里是example.com/red colo

嗨,我有一个数据库表和一个php表单,我可以在其中插入表项。例如,我有一个表单,可以在其中添加帖子标题和帖子内容。因此在表中我有4列(1)post\u id(2)post\u title(3)post\u content(4)post\u url。因此,目前我在表格中填写了title=“red color”content=“redcolor是如此明亮和吸引人”。所以它将存储在数据库中

现在我需要的是,当表中有一个条目时,我还必须生成页面url。这里是
example.com/red color.
有些网站可以使用
example.com/red color
我需要显示内容,而谷歌boot需要自动获取页面

我知道这是一个复杂的过程,就像wordpress所做的一样,当用户将内容插入到帖子中时,它将创建具有唯一url的新页面

我只需要一些基本的想法就可以继续了

如果有人知道,请分享知识


首先:您需要有一种机制将所有请求重定向到路由器。 对于Apache,您可以添加带有下一个内容的.htaccess文件:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
对于Nginx(示例配置的一部分,主逻辑在@rewrite stream和try_files指令中)

在index.php文件中,您可以访问最初请求的路径
$\u服务器['REDIRECT\u URL']

这里(在index.php文件中):(如果该变量已设置)尝试在表中查找
$\u SERVER['REDIRECT\u URL']
的值,以防您发现:显示标题、内容等。 如果你找不到它,你应该显示404页(包含找不到的信息)

用最简单的方法——也就是说

祝您好运:)

首先,对于“干净的URL”,您需要编辑
.htaccess
文件:

RewriteEngine On
RewriteRule ^([^/]*)$ /showpage.php?page=$1 [L]
脚本showpage.php:

<?php
IF (isset($_GET["page"]))
  {
  $URL=$_GET["page"];  
  $DTB->new mysqli($Mysql_Server,$Mysql_User,$Mysql_Password,$Mysql_Database);
  $PageData = $DTB->query("SELECT * FROM table WHERE post_url ='URL' LIMIT 1");
  IF ($PageData->num_rows>0)
    {
    $Data=$PageData->fetch_array();
    echo('... html code of header etc.');
    echo('<body>'.$DATA["post_content"].'</body>');
    echo('... html code of footer etc.');
    }
  else
    {
    // show error404.page or redirect to index
    }
  }
?>

我不能帮你用谷歌机器人“可读”,也许这个?

您是否检查了此链接,同时确保在wp admin中设置了pemalink结构

    $color    = "red color" ;
    $content  = "red color is so bright and attractive ";
    $slug     = "red-color";
    $postarr  = array('post_title' => $color,
                'post_content' => $content,
                'post_name' => $slug
              );

    // The post ID on success. The value 0 or WP_Error on failure.
    wp_insert_post($postarr)

我想你知道如何在wordpress中创建/插入post,现在重要的部分是你想创建自定义端点,比如框架,所以在我看来你应该检查wordpress REST API

,这会让你对它有更好的了解。您还可以查看woocommerce端点,我的帐户页面是如何在woocommerce中创建的,这也是端点概念。这有一些创建自定义端点的代码,您可以查看它。我在我的一些项目中使用过它,如果你需要,我可以与你分享

在核心PHP中,您可以基于URL、HTTP谓词和查询参数创建路由和处理请求

基本示例

rotes.php

<?php
$router->define([
    'project' => 'controllers/index.php',
    'project/about' => 'controllers/about.php',
    'project/contact' => 'controllers/contact.php',
]);
<?php
require 'core/bootstrap.php';
require Router::load('routes.php')->direct(Request::uri());
<?php
$app = [];
$app['config'] = require 'config.php';
require 'core/Router.php';
require 'core/Request.php';
require 'core/database/Connection.php';
require 'core/database/QueryBuilder.php';

$app['database'] = new QueryBuilder(
    Connection::make($app['config']['database'])
);
index.php

<?php
$router->define([
    'project' => 'controllers/index.php',
    'project/about' => 'controllers/about.php',
    'project/contact' => 'controllers/contact.php',
]);
<?php
require 'core/bootstrap.php';
require Router::load('routes.php')->direct(Request::uri());
<?php
$app = [];
$app['config'] = require 'config.php';
require 'core/Router.php';
require 'core/Request.php';
require 'core/database/Connection.php';
require 'core/database/QueryBuilder.php';

$app['database'] = new QueryBuilder(
    Connection::make($app['config']['database'])
);

是的,这是个好主意。这是一位非常乐于助人的朋友。我会检查这一点,然后再给你回复。朋友,我给这个答案加分。如果你对这个话题有更多的想法,请更新这篇文章。这会有帮助的你现在有什么问题吗?我不能更新答案,如果我没有问题:这是一个好点的朋友。但问题是,我并不是在讨论wordpress中的自定义端点。我只是举个例子。因此,我可以将其应用于普通phpIn和普通PHP,您需要为请求类型、url和查询参数创建路由。如果你想我可以编辑我的答案,我已经创建了一个非常基本的mvc框架,所以实现非常基本,你会有想法的,但我不建议在实时项目中使用它。@abilasher,现在检查我的答案,我希望这能指导你。是的,朋友,你能解释一下这段代码是在哪个阶段从数据库中获取标题并基于标题创建url的吗。
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase /project/
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
   #RewriteRule ^(.*)project/(.*)$ /index.php [L,R=301]
</IfModule>