サポート » 使い方全般 » セッションを使った不正遷移対策

  • 解決済 trip666

    (@trip666)


    固定ページから固定ページへの遷移でセッションを使ってデータへのアクセスを制限したいです。
    ページAに設置したフォームに回答すると、ページBへ遷移しデータのダウンロード可能にし、
    ページBへダイレクトにアクセスした場合は不正遷移とみなして、ダウンロード不可にしたいです。

    functions.phpに
    セッションの開始とフラグを立てる下記のコードを追加し、
    add_action('init', 'init_sessions');
    function init_sessions(){
    	session_start();
    	$_SESSION['dl_flg'] = 1;
    }

    ページB内に設置したダウンロードボタン(submitボタン)を押したときに、
    form actionでWPのルートに置いた下記のプログラムを実行しています。

    <?php session_start(); ?>
    <?php
    if(!isset($_SESSION['dl_flg']) && $_SESSION['dl_flg'] !== 1){
    	// リダイレクト
    	header('Location: http://url');
    	exit();
    }else{
    	// ダウンロード許可
    	$file_name = 'hoge.mp3';
    	$file_path = dirname(__FILE__).'/'.$file_name;
    	header('Content-Type: application/force-download');
    	header('Content-Disposition: attachment; filename="'.$file_name.'"');
    	readfile($file_name);
    }
    ?>

    これですと、ページBヘ直接アクセスした場合もダウンロードができてしまうため、
    考え方が誤っていると思うのですが、アドバイスいただけますでしょうか。

    よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    ページ A で POST されたデータが無い場合にはダウンロードボタンの HTML を出力しなければいいんじゃないでしょうか。
    セッションを使う必要は無いと思います。

    また、WordPress というより PHP プログラミングについてのご質問に見受けられますので、他のフォーラムなどの方が回答が得やすいのではないでしょうか。

    こんにちは。

    仰る通り「ページAのPOSTデータがなければダウンロードボタンを出力しない」で解決できますね…ありがとうございました!

    今後PHPの質問がある場合はそちらに投稿してみたいと思います。

    よろしくお願い致します。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。