這篇文章主要介紹了php防止站外遠端提交表單的方法,實例演示了透過session與驗證碼進行提交過濾的方法,非常實用,需要的碼農可以參考下
本文實例講述了php防止站外遠端提交表單的方法,分享給大家參考。具體實現方法如下:
一般來說防止站長提交表單無非就是對每一次打開表單或提交資料都會需要加一個token來進行驗證了,這個其實與驗證碼做法沒什麼兩樣了,下面來看幾個防止站外遠端提交表單的例子。
例子一:我們每一次開啟提交頁面產生一個token然後保存在session中,當表單提交時我們來判斷當前的token值與session是否一致,如果是的就是正常提交否則就是無效提交了。
具體程式碼如下:
<?<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>
還有一種比較明顯的做法就是利用驗證碼了,這種驗證碼的方式與其它的方式是一樣的哦,下面看個簡單的例子
例子二:增加驗證碼
表單提交時候增加驗證碼,可以有效防止灌水機提交資料。但是隨著圖形圖像辨識程式變的更加強大,驗證碼識別也不斷的在提高他的難度,有些驗證碼甚至加入了聲音的識別,一些小站點可以採用這樣的方式。
<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 多個submit提交表單處理方法
php ajax無刷新提交表單
以上就介紹了php防止站外遠端提交表單的方法,包括了提交表單,php方面的內容,希望對PHP教程有興趣的朋友有所幫助。