我有一条消息" 我的秘密消息"我将在html或php页面上输入。 myexample.com/secretlink.html
我怎么能说当有人访问我的页面时,可能有JS的计时器将启动(简单部分)但是当计时器启动时它会激活破坏页面或可能编辑它的代码,之后它会尝试重新加载页面现在不存在或不包含我的信息。
我在Stackoverflow上发现的与此相似的是" Website Self Destruct from Browser Bar"
答案 0 :(得分:1)
这是一个可能的解决方案:将消息存储在SQL表中。然后,在某个PHP页面上显示该消息,例如example.com/?qid=12345
。
当用户请求页面时,将在数据库中的该消息上设置一个标志,表示已被查看。然后,当计时器用完时,重定向到删除页面,该页面将销毁数据库行并重定向它们(或告诉它们已过期)。
最后,如果页面被请求,并且标记表明它已被已经设置,则可以销毁该消息并说它已被声明。
或者,如果您希望它在一定时间后暂停,您只需添加" first_viewed_at"数据库中的DATETIME字段,如果它过去太远,会导致脚本销毁该消息。
答案 1 :(得分:1)
添加以下“.htaccess”文件,该文件会将任何.html请求重写为add-delete.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需要该文件,然后取消链接()它。要了解有关取消关联的详情,请转到http://php.net/manual/en/function.unlink.php。 delete-page.php文件如下所示:
<?php
// add check to prevent abuse
require($_GET["request"]);
unlink($_GET["request"]);
?>
但是,我可能会将文件保留几分钟,以防它们点击刷新。在这种情况下,我会将干净的请求文件名插入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>
我希望有所帮助。
答案 2 :(得分:0)
https://jsfiddle.net/68733393/
在页面加载时只需启动一个功能,在一段时间后将删除你的秘密。
<div id='secret'>
I am secret
</div>
setTimeout(function(){
document.getElementById('secret').innerHTML = '';
}, 1000)