2016-08-23 8 views
-3

私はHTMLまたはPHPページに入力するメッセージ「私の秘密のメッセージ」を持っています。 myexample.com/secretlink.html閲覧後に自己破壊するWebページをコード

どのように私はそれを作ることができ、誰かが自分のページにアクセスしたときに多分JSとタイマーが(簡単な部分)を開始しますが、タイマーがアップしているとき、それは多分ページを破壊したり、コードを活性化することそれを編集した後、ページを再読み込みしようとしましたが、そのページは現在存在しないか、メッセージを含んでいません。これに似た私はStackOverflowの上で見つかった

だけの事は「Website Self Destruct from Browser Bar

+2

データベース+ AJAXコール+タイムスタンプフィールド。 – ceejayoz

+2

ajaxコールを提供するだけです。サーバーは、メッセージを受け取ったかどうかを追跡します。 – Jecoms

答えて

1

だったここでの可能なソリューションです:SQLテーブルにメッセージを保存するには。次に、特定のPHPページ、たとえばexample.com/?qid=12345でメッセージを利用できるようにします。

ユーザーがページを要求すると、そのメッセージが表示されたことを示すフラグがデータベース内のそのメッセージに設定されます。次に、タイマーがなくなると、データベース行を破棄してリダイレクトする削除ページにリダイレクトします(または期限切れになったことを通知します)。

最後に、ページが要求され、閲覧されたことを示すフラグがの場合、すでにに設定されている場合は、メッセージを破棄して、すでに要求されていると言うことができます。

また、特定の時間が経過してもタイムアウトしたい場合は、データベースに「first_viewed_at」DATETIMEフィールドを追加するだけで済みます。これは、あまりにも過去のものであった場合には、メッセージ。ページのロードの

+0

ありがとう、これは完璧です – Sammy7

0

https://jsfiddle.net/68733393/

だけでいくつかの時間後にあなたの秘密を消去する関数を起動します。

+0

これは、ページがロードされるたびに「私は秘密です」と表示されます – Krease

+0

ああ、私は誤解しているに違いありません。メッセージが1回だけ表示されるべきか、 OP。シンプルなJSがやったときにコンテンツが消えるようにページをリロードしなければならないという誤った発言だったかもしれません。 –

+0

@AlexeiDarminはい、私は永遠に削除されたいので、ページをリロードしようとすると何も表示されません。 – Sammy7

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にファイルを要求してからunlink()します。リンク解除の詳細については、http://php.net/manual/en/function.unlink.phpをご覧ください。削除-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スクリプトを実行します。

$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でそれをやってみたかった場合は、私はそれが役に立てば幸いサーバに

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

をXMLHTTPリクエストを送信するよりも、タイマーを持っているを行うことができます。

+0

私はリロードを気にしませんし、2番目のバージョンは少し難しいです。 .htaccessの例がどのように動作するかを更新することができますか?ありがとう – Sammy7

+0

どのように私はそれを 'リンクを解除することができますか? – Sammy7

+0

<?php unlink( "home.html"); ?> http://php.net/manual/en/function.unlink.php – mrheroux

関連する問題