我正在生成对帖子请求的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中完成。
答案 0 :(得分:1)
实现您想要的直接技术:
因此,您创建页面,构建URL(如上所述) - 并将其作为对用户的响应发回。
我不会介绍如何设置mod_rewirte和.htaccess,但这里有一个指向简单指南的链接: https://code.tutsplus.com/tutorials/using-htaccess-files-for-pretty-urls--net-6049
.htaccess文件的示例:
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url_params=$1 [L,QSA]
这可以是index.php(伪代码)的简单示例:
<?php
$params = explode('/',$_GET['url_params']);
$hash = $params[0];
// not a real database adapter - but you get the idea..
$db = new DatabaseAdapter('username','password','database');
$result = $db->querySingle("SELECT pageFileName FROM tb_Pages WHERE hash = %1", $hash);
if($result){
// delete the used hash
$db->query("DELETE FROM tb_Pages WHERE hash = %1", $hash);
// include the path of the page for display
include('/mySecretFolder/'.$result->pageFileName );
}else{
echo 'Page not found';
exit;
}
?>
如果您希望页面完全是虚拟的,您可以放弃包含实际文件的概念并将页面内容存储在数据库表中,然后从数据库中提取数据并相应地显示页面hash \ id得到了。
用于存储虚拟页面的数据库表的伪示例:
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;
使用这种方法,您可以使用.htaccess,url rewrite,index.php和生成的哈希键的相同概念,但不是包含实际文件 - 您从数据库中获取页面内容并回显它。
希望它有所帮助。