ホームページ > バックエンド開発 > PHPチュートリアル > サイト外へのフォームのリモート送信を防ぐための PHP メソッド PHP でフォームを送信する方法。

サイト外へのフォームのリモート送信を防ぐための PHP メソッド PHP でフォームを送信する方法。

WBOY
リリース: 2016-07-29 08:53:40
オリジナル
1361 人が閲覧しました

この記事では、サイト外へのフォームのリモート送信を防ぐための 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 チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート