サポート » 使い方全般 » wp_nonce_field の出力を隠したい

  • wordpressで
    自作問い合わせフォームを作成しております。

    問い合わせフォームの確認画面(form1.php)から、「送信」を押した際(form2.phpへpost)、
    セキュリティ強化のためにwp_nonce_field()を使い、wp_verify_nonce()でチェックできるようにしました。問題なくデータを渡して処理はできたのですが、
    トークンがinput=”hidden”で出力されているのが気になり始め、
    フォーラムを参照し、

    wp_nonce_field( ‘my_action’ ,’my_nonce’, true, false);
    wp_referer_field();

    と設定しましたところ、うまく処理が進まなくなってしまいました。

    nonceを非表示にして次ページに渡すにはどうしたらよろしいでしょうか?
    (また<input type=”hidden”>で渡してもセキュリティ的に問題ないでしょうか? タグに出力されているのが気になっております。)

    どなたかご存知でしたらご指摘いただけましたら幸いです。

    //form1.php

    <form method="post" action="form2.php">
    <?php 
      wp_nonce_field( 'my_action' ,'my_nonce', true, false);
      wp_referer_field();
    ?>
    
    <input type="submit" valuer="送信する"> 
    </form>

    //form2.php

    <?php
    if (
      ! isset($_POST['my_nonce']) 
      || ! wp_verify_nonce( $_POST['my_nonce'], 'my_action' )
    ){
    
      echo '正しい処理がされませんでした';
    
    }else{
    
      echo '正しく処理されました';
    }
    ?>
    • このトピックはnonowithが4年、 10ヶ月前に変更しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは。

    Codex によると

    $echo を falseに、$referer を trueにした場合は、wp_referer_field() を使ってリファラーのフィールドを取得する必要があります。

    と記載されています。

    wp_referer_field() | Function | WordPress Developer Resources

    トピック投稿者 nonowith

    (@nonowith)

    Tsuyoshi 様

    ご返信ありがとうございます。

    私もcodexを参照しまして、まさにその2行にぶちあたっているような気がします。。。

    最初、wp_nonce_field( ‘my_action’ ,’my_nonce’);で出力した際、
    リファラーがその直下に出力されていたので、

    wp_nonce_field( 'my_action' ,'my_nonce', true, false);
    wp_referer_field();

    と修正した次第です。ですがやはり、form2.phpで’正しい処理がされませんでした’と返されてしまいます。。。恥ずかしながら、リファラーのフィールドを取得する事を理解していないかも知れません。。。

    wp_nonce_field( 'my_action' ,'my_nonce', true, false);
    wp_referer_field();

    の表記は間違ってますでしょうか?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「wp_nonce_field の出力を隠したい」には新たに返信することはできません。