在PHP

2016-09-15 103 views
0

为动态页面创建临时网址我生成一个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"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> 
</head> 
<?php 
include($filePath); 
?> 

这个工程,是OK。

但我有一个不同的用例。

我想获取此页面的输出并创建一个页面。

然后向用户发送链接到该页面。

因此,响应将只是一个链接。

该页面在用户完成后将被销毁,不需要存储。

这怎么能在PHP中完成。

+0

你是说,你想存储页面的结果,然后显示给任何有良好的网址? – Bobot

+0

是的..不是任何人立即同一个用户。我这样做是因为cordova inappbrowser只能打开链接而不是php响应 – krv

回答

0

一个直截了当的技术来实现你想要的:

  1. 使用mod_rewirte和的.htaccess设置“漂亮网址”
  2. 有一个index.php来接收请求,并进行处理:
  3. 为每个“页面”动态创建一个散列键,将其存储在数据库(例如MySQL)中。
  4. “特殊”的网址会从你的域路径构造和每个页面的哈希键(如http://www.my-domain.com/pages/azXi39444
  5. 当用户输入URL时,他会得到有关他有密钥的输出用于URL中,并且哈希键将从数据库中删除(标记为“已删除”)

因此,您创建页面,构建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; 

    } 
?> 

如果您希望页面完全虚拟,则可以将概念f包括实际文件并将页面内容存储在数据库表中,然后从数据库中提取数据并相应地显示给出的页面散列\ 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重写,index.php文件相同的概念和产生的哈希键,而是包括实际文件 - 您正在从数据库中提取页面内容并进行回显。

希望它有一点帮助。