この記事では、サイト外へのフォームのリモート送信を防ぐための PHP の方法を主に紹介しており、セッションと検証コードを介して送信をフィルタリングする方法を示しています。この記事は非常に実用的です。フォームがサイト外に送信されないようにする PHP の例については、参考のためにリモートからフォームを送信する方法について説明します。具体的な実装方法は次のとおりです:
一般に、ウェブマスターがフォームを送信できないようにすることは、フォームが開かれるかデータが送信されるたびに検証用のトークンを追加することに他なりません。これは、実際には検証コードの方法と何ら変わりません。サイト外へのリモート フォーム送信を防止する例をいくつか見てみましょう。
例 1: 送信ページを開くたびにトークンを生成し、それをセッションに保存します。フォームが送信されると、現在のトークンの値がセッションと一致しているかどうかを判断します。一致している場合、それは正常です。そうでない場合は、無効な提出になります。
具体的なコードは次のとおりです:
<?<span>php </span><span>session_start</span><span>(); </span><span>if</span> (<span>$_POST</span>['submit'] == "go"<span>){ </span><span>//</span><span>check token </span><span>if</span> (<span>$_POST</span>['token'] == <span>$_SESSION</span>['token'<span>]){ </span><span>//</span><span>strip_tags </span><span>$name</span> = <span>strip_tags</span>(<span>$_POST</span>['name'<span>]); </span><span>$name</span> = <span>substr</span>(<span>$name</span>,0,40<span>); </span><span>//</span><span>clean out any potential hexadecimal characters </span><span>$name</span> = cleanHex(<span>$name</span><span>); </span><span>//</span><span>continue processing.... </span> }<span>else</span><span>{ </span><span>//</span><span>stop all processing! remote form posting attempt! </span><span> } } </span><span>$token</span> = <span>md5</span>(<span>uniqid</span>(<span>rand</span>(), <span>true</span><span>)); </span><span>$_SESSION</span>['token']= <span>$token</span><span>; </span><span>function</span> cleanHex(<span>$input</span><span>){ </span><span>$clean</span> = <span>preg_replace</span>("![\][xX]([A-Fa-f0-9]{1,3})!", "",<span>$input</span><span>); </span><span>return</span><span>$clean</span><span>; } </span>?> <form action="<?php echo <span>$_SERVER</span>['PHP_SELF'];?>" method="post"> <p><label <span>for</span>="name">Name</label> <input type="text" name="name" size="20" maxlength="40"/></p> <input type="hidden" name="token" value="<?php echo <span>$token</span>;?>"/> <p><input type="submit" name="submit" value="go"/></p> </form>
もう 1 つのわかりやすい方法は、確認コードを使用する方法です。簡単な例を見てみましょう
例 2: 確認コードを追加します。
フォームを送信するときに確認コードを追加すると、水充填機がデータを送信するのを効果的に防ぐことができます。ただし、グラフィックスおよび画像認識プログラムがより強力になるにつれて、検証コードの認識はさらに困難になり、一部の小規模サイトでは音声認識も使用されます。
<span>if</span>(<span>$_POST</span>['vcode'] !=<span> get_vcode()) { </span><span>exit</span>('验证码校验失败,无法入库'<span>); }</span>
具体的な例に興味のある読者は、関連する検証の例をオンラインで多数見つけることができます。
元のアドレス: http://www.manongjc.com/article/678.html
関連書籍:
php はクロスドメインフォーム送信を防止します
js jsonp メソッドでクロスドメインリクエストを解決します
php は次のことを決定しますフォームを送信するとき ($_POST[submit]) および if(isset($_POST[sub
php 複数の送信送信フォーム処理メソッド
php ajax 更新なし送信フォーム
)上記では、フォームや PHP コンテンツの送信を含む、サイト外へのフォームのリモート送信を防ぐ PHP の方法を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。