代码网页自毁后查看


Code a webpage to self destruct after viewed

我有一个消息"我的秘密消息",我将在html或php页面上键入。 myexample.com/secretlink.html

我怎么能使它,当有人访问我的页面一个定时器可能与JS将开始(简单的部分),但当定时器是它激活破坏页面或编辑它的代码,之后它试图重新加载页面,现在不存在或不包含我的消息。

我在Stackoverflow上发现的唯一类似的东西是"网站自毁从浏览器栏"

这是一个可能的解决方案:将消息存储在一个SQL表中。然后,让消息在某个PHP页面上可用,比如example.com/?qid=12345

当用户请求该页时,将在数据库中的该消息上设置一个标志,表示该消息已被查看。然后,当计时器用完时,重定向到一个删除页面,该页面将销毁数据库行并重定向它们(或告诉它们该行已过期)。

最后,如果页面被请求,并且表示页面已被查看的标志设置为already,则只需销毁该消息并声明它已被声明。

或者,如果您希望它只是在一定时间后超时,您可以在数据库中添加一个"first_viewed_at" DATETIME字段,如果它在过去太久,则会导致脚本销毁消息。

添加以下"。Htaccess"文件,它将重写任何.html请求以添加-删除.php。页面add-delete.php将处理实际的页面删除请求。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)'.html$ add-delete.php?request=%{REQUEST_URI} [L,QSA]
</IfModule>

然后让add-delete.php要求文件,然后unlink()它。要了解更多关于unlink的信息,请访问http://php.net/manual/en/function.unlink.php。delete-page.php文件如下所示:

<?php
// add check to prevent abuse
require($_GET["request"]);
unlink($_GET["request"]);
?>

然而,我可能会让文件保持几分钟,以防他们点击刷新。在这种情况下,我会将clean请求文件名插入MySQL数据库表中。

$db->bind("request",$_GET["request"]);
$db->query("INSERT INTO `delete_pages` (`page_name`) VALUES (:request);");

然后要求文件。然后添加一个Crono事件来运行PHP脚本,该脚本通过对每个结果运行unlink来删除表中的所有文件名。

$results = $db->query("SELECT `page_id`, `page_name` FROM `delete_pages` WHERE `timestamp` > NOW() - INTERVAL 1 MINUTE); // leave up for 1 or unlink asap
foreach($result as $row){
 unlink($row["page_name"]);
 $db->bind("page_id",$row["page_id"];
 $db->query("DELETE FROM `delete_pages` WHERE `page_id` = :page_id");
}

如果你真的想用Javascript来做你可以做一个定时器然后发送一个xmlhttp请求到服务器

<script> 
window.onload = function(page_name) { 
xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET","delete-page.php?page="+page_name, false); xmlhttp.send(null); document.getElementById("delete-update").value=xmlhttp.responseText; } 
</script>

https://jsfiddle.net/68733393/

在页面加载时启动一个函数,它会在一段时间后擦除你的秘密。

<div id='secret'>
  I am secret
</div>
setTimeout(function(){
  document.getElementById('secret').innerHTML = '';
}, 1000)