编写网页以在查看后自毁

Code a webpage to self destruct after viewed

我有一条消息“我的秘密消息”,我将在 html 或 php 页面上输入它。 我的例子。com/secretlink.html

我怎样才能做到当有人访问我的页面时可能会使用 JS 启动计时器(简单部分)但是当计时器启动时它会激活破坏页面或可能编辑页面的代码,然后它会尝试重新加载该页面现在将不存在或不包含我的消息。

我在 Whosebug 上发现的唯一类似的是“Website Self Destruct from Browser Bar

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

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

最后,如果该页面被请求,并且已经已经设置了表明它已被查看的标志,您可以销毁该消息并说它已被认领.

或者,如果你想让它在一定时间后超时,你可以在数据库中添加一个 "first_viewed_at" DATETIME 字段,如果过去太久,会导致用于销毁消息的脚本。

https://jsfiddle.net/68733393/

在页面加载时启动一个功能,该功能会在一段时间后删除您的密码。

<div id='secret'>
  I am secret
</div>

setTimeout(function(){
  document.getElementById('secret').innerHTML = '';
}, 1000)

添加以下“.htaccess”文件,它将重写任何 .html 请求以添加-delete.php。页面添加-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 需要文件然后取消链接()它。要了解有关取消链接的更多信息,请转到 http://php.net/manual/en/function.unlink.php 。 delete-page.php 文件看起来像这样:

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

但是,我可能会将文件保留几分钟,以防他们点击刷新。在这种情况下,我会将干净的请求文件名插入 MySQL 数据库 table。

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

然后需要文件。然后将 Crono 事件添加到 运行 一个 PHP 脚本,该脚本通过 运行 在每个结果上取消链接来删除 table 中的所有文件名。

$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>

希望对您有所帮助。