在PHP中为动态页面创建临时url

在PHP中为动态页面创建临时url,php,Php,我正在生成一个对post请求的php响应,如下所示 <?php ob_start(); include_once('includes/headers.php'); require_once('includes/connection.php'); require_once('includes/functions.php'); ?> <!doctype html> <html> <head> <meta charset="utf-8">

我正在生成一个对post请求的php响应,如下所示

<?php
ob_start();
include_once('includes/headers.php');
require_once('includes/connection.php');
require_once('includes/functions.php');
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
</head>
<?php
include($filePath);
?>

这是可行的

但我有一个不同的用例

我想得到这个页面的输出并创建一个页面

然后向用户发送指向该页面的链接

因此,回复将只是一个链接

用户使用完该页面后,该页面将被销毁,无需存储


如何在PHP中实现这一点。

一种直接的技术,可以实现您想要的:

  • 使用mod_rewirte和.htaccess设置“漂亮的URL”
  • 使用index.php接收并处理请求:
  • 为每个“页面”动态创建一个哈希键,并将其存储在数据库中(例如MySQL)
  • “特殊”URL将根据您的域路径和每个页面的哈希键构建(例如)
  • 当用户输入URL时,他将获得与他在URL中使用的密钥相关的输出,并且散列密钥将从数据库中删除(标记为“已删除”)
  • 因此,您创建页面,构建URL(如上所述),并将其作为响应发送回用户

    我将不介绍如何设置mod_rewirte和.htaccess,但这里有一个指向简单指南的链接:

    .htaccess文件的一个示例:

    RewriteEngine ON
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url_params=$1 [L,QSA]
    
    这可以是index.php(伪代码)的一个简单示例:

    通过这种方法,您可以使用与.htaccess、url rewrite、index.php和生成的哈希键相同的概念,但不包括实际的文件,而是从数据库中获取页面内容并进行回显


    希望能有所帮助。

    一种直截了当的方法可以实现您的目标:

  • 使用mod_rewirte和.htaccess设置“漂亮的URL”
  • 使用index.php接收并处理请求:
  • 为每个“页面”动态创建一个哈希键,并将其存储在数据库中(例如MySQL)
  • “特殊”URL将根据您的域路径和每个页面的哈希键构建(例如)
  • 当用户输入URL时,他将获得与他在URL中使用的密钥相关的输出,并且散列密钥将从数据库中删除(标记为“已删除”)
  • 因此,您创建页面,构建URL(如上所述),并将其作为响应发送回用户

    我将不介绍如何设置mod_rewirte和.htaccess,但这里有一个指向简单指南的链接:

    .htaccess文件的一个示例:

    RewriteEngine ON
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url_params=$1 [L,QSA]
    
    这可以是index.php(伪代码)的一个简单示例:

    通过这种方法,您可以使用与.htaccess、url rewrite、index.php和生成的哈希键相同的概念,但不包括实际的文件,而是从数据库中获取页面内容并进行回显


    希望能有所帮助。

    你的意思是,你想存储页面的结果,然后将其显示给任何拥有良好URL的人吗?是的。不是任何人都可以立即使用相同的用户。我这样做是因为cordova InApp Browser只能打开一个链接,而不能打开php响应。你的意思是,你想存储页面的结果,然后将其显示给任何拥有良好URL的人吗?是的。不是任何人都可以立即访问同一个用户。我这样做是因为cordova inappbrowser只能打开一个链接,而不能打开php响应
    CREATE TABLE tb_Pages
    (
      PageID INT AUTO_INCREMENT,
      CreateDate Timestamp,
      HashKey VARCHAR(100) NOT NULL,
      HtmlContent TEXT,
      INDEX(HashKey),
      PRIMARY KEY(PageID)
    )ENGINE=InnoDB CHARACTER SET utf8;