Home Backend Development PHP Tutorial Summary of methods to prevent repeated submission of PHP pages_PHP tutorial

Summary of methods to prevent repeated submission of PHP pages_PHP tutorial

Jul 13, 2016 am 10:25 AM
php repeated submit

1. The submit button is disabled

When the user submits, the button is immediately disabled. This is implemented using js.

Before submission

Copy the code The code is as follows:

$("#submit").attr('disabled' ,'true');
             $("#submit").val("Submitting, please wait");

                                                                                ..................................

After execution, set the button to its original state

Copy code The code is as follows:

$('#submit ').removeAttr('disabled');
$("#submit ").val("Confirm submission");


2. Expiration time method

Idea: When the user submits the button, a token is generated (the token is a unique value for each business submission) and stored in the session, and the expiration time is set. When the user submits again, check whether the token is consistent and expired. If it is consistent and has not expired, it is considered to have been submitted twice. When an error occurs during program execution, the value stored in the session needs to be cleared. See the procedure below

Copy code The code is as follows:

function checkRepeatSubmit($uniqueid = '', $expire = 30) {

$uniqueid = empty($uniqueid) ? Yii::app()->user->id . Yii::app()->user->name . Yii::app()-> ;user->mihome : $uniqueid;
$token = md5("wms_check_repeat" . $uniqueid);

$time = time();

If (isset($_SESSION['token']) && !empty($_SESSION['token']) && $_SESSION['token'] == $token && ($time - $_SESSION['expire_time' ] < $expire)) {

            return false;
                                                                                                                                                                                                                              Write

session_write_close();

return true;
}
}

//Delete the stored value

function cancelRepeatSubmit() {

unset($_SESSION['token']);

unset($_SESSION['expire_time']);

}



3. Token destruction method

Idea: When the page is added, a token is generated, stored in the session, and written in the form. When the form is submitted, it is submitted to the server along with the form. The server compares the token stored in the session with the token. If they are equal, the token stored in the seesion is destroyed. When the page is submitted a second time, the token stored in the session is stored in the session. The token in does not exist and an error is reported. The following is the code

Copy the code

The code is as follows:

/**
* The second option
* 1. Generate token and store it in the session
* 2. Generate with the page
* 3. Compare the submitted page with the session, and destroy the session after success
* 4. In the second submission, this value does not exist and an error is reported
* @param type $uniqueid
* @return type
*/
function createToken($uniqueid) {

$uniqueid = empty($uniqueid) ? Yii::app()->user->id . Yii::app()->user->name . Yii::app()-> ;user->mihome : $uniqueid;
$token = md5("wms_check2_repeat" . $uniqueid);
$_SESSION['form_token'] = $token;

session_write_close();


return $token;
}

function checkToken($token) {

       if (!isset($_SESSION['form_token']) || empty($_SESSION['form_token']) || $_SESSION['form_token'] != $token) {
            return false;} else {
unset ($ _ session ['form_token']);
The three methods are summarized above. I personally feel that the first and second methods will achieve better results when used together. The second method and the third method. Personally, I feel that the third method has advantages.

The second and third methods both write the token in the session. The advantage of this method is to save storage space, but the disadvantage is that the session requires the entire page to be loaded before it can be written, so when the entire page is loaded, the It is slow, and the user clicks submit multiple times. The system may still think it is the first input because the session has not been written yet. Causes verification to not work. Fortunately, the php function provides an awesome function. session_write_close(), you can write the session immediately without waiting for the page to load. Colleagues also have many options for storing sessions, including redis, memcache or database.

http://www.bkjia.com/PHPjc/825207.html

www.bkjia.com

true

http: //www.bkjia.com/PHPjc/825207.htmlTechArticle1. The submit button is set to disabled. After the user submits, the button is immediately set to a disabled state. This is implemented using js. Copy the code before submitting. The code is as follows: $("#submit").attr('disabled','t...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

To work on file upload we are going to use the form helper. Here, is an example for file upload.

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

In this chapter, we are going to learn the following topics related to routing ?

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

CakePHP Creating Validators CakePHP Creating Validators Sep 10, 2024 pm 05:26 PM

Validator can be created by adding the following two lines in the controller.

See all articles