Rumah > pembangunan bahagian belakang > masalah PHP > PHP如何防止远程提交

PHP如何防止远程提交

王林
Lepaskan: 2023-02-24 16:14:02
asal
2923 orang telah melayarinya

PHP如何防止远程提交

一般来说,防止站外提交表单,无非就是对每一次打开表单或提交数据,都会需要加一个token来进行验证。这个其实与验证码做法没什么两样,下面来看几个防止站外远程提交表单的例子。

例子一:我们每一次打开提交页面生成一个token,然后,保存在session中,当表单提交时,我们来判断当前的token值与session是否一致,如果是的,就是正常提交,否则,就是无效提交了。

具体代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<?php    

session_start();    

      

if ($_POST[&#39;submit&#39;] == "go"){    

    //check token    

    if ($_POST[&#39;token&#39;] == $_SESSION[&#39;token&#39;]){    

        //strip_tags    

        $name = strip_tags($_POST[&#39;name&#39;]);    

        $name = substr($name,0,40);    

        //clean out any potential hexadecimal characters    

        $name = cleanHex($name);    

        //continue processing....    

    }else{    

        //stop all processing! remote form posting attempt!    

    }    

}    

      

$token = md5(uniqid(rand(), true));    

$_SESSION[&#39;token&#39;]= $token;    

      

 function cleanHex($input){    

    $clean = preg_replace("![\][xX]([A-Fa-f0-9]{1,3})!", "",$input);    

    return $clean;    

}    

?>    

<form action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>" method="post">    

<p><label for="name">Name</label>    

<input type="text" name="name" id="name" size="20" maxlength="40"/></p>    

<input type="hidden" name="token" value="<?php echo $token;?>"/>    

<p><input type="submit" name="submit" value="go"/></p>    

</form>

Salin selepas log masuk

还有一种比较明显的做法,就是利用验证码,这种验证码的方式与其它的方式是一样的,下面看个简单的例子

例子二:增加验证码

表单提交时候增加验证码,可以有效防止灌水机提交数据。但是,随着图形图像识别程序变的更加强大,验证码识别也不断的在提高他的难度,有些验证码甚至加入了声音的识别,一些小站点可以采用这样的方式。

1

2

3

4

if($_POST[&#39;vcode&#39;] != get_vcode())

{

    exit(&#39;验证码校验失败,无法入库&#39;);

}

Salin selepas log masuk

以上内容仅供参考!

推荐教程:PHP视频教程

Atas ialah kandungan terperinci PHP如何防止远程提交. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan