Maison php教程 php手册 php用cookie防止用户重复提交表单

php用cookie防止用户重复提交表单

Jun 06, 2016 pm 07:56 PM
cookie php 提交 用户 表单 répéter 防止

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 我们在实际的web开发中,防止用户重复提交表单数据,是一个十分值得注意的问题。 首先用户提交重复的数据有可能会造成数据库在存储的时候出现错误,例如主键重复等。另外,如果用户是无意的,而是我

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

    我们在实际的web开发中,防止用户重复提交表单数据,是一个十分值得注意的问题。

    首先用户提交重复的数据有可能会造成数据库在存储的时候出现错误,例如主键重复等。另外,如果用户是无意的,而是我们的PHP程序造成的重复提交,那么就会在数据库****现垃圾数据!这些垃圾数据又能使PHP系统的整个查询出现问题--这个非常糟糕!

    所以在PHP Web编程过程中,防止用户有意或者无意的提交重复的数据显得至关重要了。防止用户重复提交表单的有多种方法,例如你可以在用户提交表单之后禁用“提交”按钮,也可以提交之后立即跳转到一个和表单无关的页面上去,这些都是好方法!今天要说的是另外的一个方法:利用客户端的cookie来验证提交的表单内容是否是重复的,这个方法或者在特定的场合下非常有用,当然我们不仅仅是要学会这个方法,更重要的是要体会一下PHP Cookie在日常编程中的作用--大部分人对Cookie是陌生的。

    具体方法是这样的:

    当用户点击表单的“submit”按钮,并且用户填写的表单内容通过了前端的js验证(我们验证用户输入的第一步);

    接着我们会在后台服务器端PHP程序上再次验证表单数据的完整性和合法性--这个很重要。更***HP程序安全性问题,请查看:《关于PHP代码安全性问题的建议》

    如果数据通过了上边的两次验证,说明数据是合法有效的数据。这时候我们把提交的数据串接为一个字符串,并用MD5加密后得到一个MD5的值,接着我们把这个值通过Cookie放进客户端,当用户下一次提交表单的时候我们就重新操作这一步,并且读出Cookie中的MD5值,进行比较,如果相同就可断定用户提交两次提交的表单是相同的,否则替换这个Cookie!

    代码如下:

   

    $value = $_COOKIE[“value”]; //读取上一次设置的Cookie值

    if(count($_POST)) {

    $long = “”;

    while(list($key,$value)=each($_POST))$long.=$value;

    $hash = md5($long);

    setcookie(“value”,$hash,time()+60*60); //重新设置cookie

    }

    if($value!=$hash) {

    // 如果两次的MD5值不一样就对数据进行进一步操作

    } else {

    //如果两次MD5的值相同,告知用户提交失败 ,为重复提交表单

    }

    ?>

php用cookie防止用户重复提交表单

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Date et heure de CakePHP

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Configuration du projet CakePHP

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Téléchargement de fichiers CakePHP

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Routage CakePHP

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

Discuter de CakePHP

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

Guide rapide CakePHP

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Comment configurer Visual Studio Code (VS Code) pour le développement PHP

See all articles