编写网页以在查看后自毁
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>
希望对您有所帮助。
我有一条消息“我的秘密消息”,我将在 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>
希望对您有所帮助。