Heim >PHP-Framework >Denken Sie an PHP >Verarbeitung wiederholter Übermittlungen von ThinkPHP6-Formularen: Verhinderung wiederholter Vorgänge

Verarbeitung wiederholter Übermittlungen von ThinkPHP6-Formularen: Verhinderung wiederholter Vorgänge

WBOY
WBOYOriginal
2023-08-12 14:10:502006Durchsuche

Verarbeitung wiederholter Übermittlungen von ThinkPHP6-Formularen: Verhinderung wiederholter Vorgänge

Denken Sie an die Verarbeitung wiederholter Formularübermittlungen in PHP6: Verhindern Sie wiederholte Vorgänge

Bei der Entwicklung von Webanwendungen ist die Formularübermittlung ein häufiger Vorgang. Allerdings kann es vorkommen, dass Benutzer aufgrund von Netzwerkverzögerungen oder Fehlbedienungen Formulare wiederholt einreichen, was zu Systemproblemen führen kann. Um dieses Problem zu lösen, können wir im ThinkPHP6-Framework eine wiederholte Formularübermittlungsverarbeitung durchführen, um zu verhindern, dass Benutzer wiederholte Vorgänge ausführen.

1. Ursachenanalyse

Es gibt zwei Hauptgründe für die wiederholte Formularübermittlung:

1 Netzwerkverzögerung: Wenn der Benutzer auf die Schaltfläche „Senden“ klickt, werden die Formulardaten zur Verarbeitung an den Server gesendet. Aufgrund von Netzwerkverzögerungen reagiert der Server jedoch möglicherweise nicht rechtzeitig und der Benutzer geht fälschlicherweise davon aus, dass der Vorgang fehlgeschlagen ist, und klickt erneut auf die Schaltfläche „Senden“.

2. Fehlbedienung: Nach dem Absenden des Formulars klickt der Benutzer möglicherweise mehrmals auf die Schaltfläche „Senden“, da er nicht sicher ist, ob der Vorgang erfolgreich ist, was dazu führt, dass das Formular mehrmals gesendet wird.

2. Methoden zur Verhinderung der wiederholten Übermittlung von Formularen

1. Stellen Sie die Einzigartigkeit des Formulars sicher, indem Sie dem Formular ein Token hinzufügen. Jedes Mal, wenn der Benutzer das Formular absendet, generiert das Token einen eindeutigen Wert und wird in der Sitzung gespeichert. Nachdem der Server die Formulardaten empfangen hat, überprüft er die Gültigkeit des Tokens. Wenn die Überprüfung fehlschlägt, bedeutet dies, dass das Formular erneut gesendet wird.

Codebeispiel:

Definieren Sie eine Methode im Controller, um ein Token zu generieren:

namespace appcontroller;

use thinkController;

class Example extends Controller
{
    public function index()
    {
        // 生成Token
        $token = md5(uniqid(rand(), true));
        
        // 保存Token到Session
        session('token', $token);
        
        // 渲染模板,将Token传递给前端
        return $this->fetch('index', ['token' => $token]);
    }
}

Fügen Sie ein verstecktes Token-Feld in der Vorlage hinzu:

<form action="/example/submit" method="post">
    <input type="hidden" name="token" value="{{ $token }}">
    <!-- 其他表单元素 -->
    <button type="submit">提交</button>
</form>

Überprüfen Sie die Gültigkeit des Tokens im Controller:

namespace appcontroller;

use thinkController;

class Example extends Controller
{
    public function submit()
    {
        // 获取表单提交的Token值
        $token = input('post.token');
        
        // 判断Token是否有效
        if ($token && $token === session('token')) {
            // 执行表单提交操作
            
            // 清除Session中的Token
            session('token', null);
            
            // 返回成功页面
            return '提交成功!';
        } else {
            // 返回错误页面
            return '非法的表单提交!';
        }
    }
}

Mit dem obigen Code können wir das Implementieren Sie die Token-Überprüfung des Formulars, um die Einzigartigkeit des Formulars sicherzustellen. Wenn der Benutzer auf die Schaltfläche „Senden“ klickt, überprüft der Server die Gültigkeit des Tokens. Wenn die Überprüfung fehlschlägt, bedeutet dies, dass das Formular erneut gesendet wird. Andernfalls wird der normale Vorgang zum Senden des Formulars ausgeführt.

2. Schaltfläche zum wiederholten Senden deaktivieren: Nachdem der Benutzer auf die Schaltfläche zum Senden geklickt hat, deaktivieren Sie die Schaltfläche sofort, um zu verhindern, dass der Benutzer wiederholt klickt.

Codebeispiel:

<script>
    document.getElementById('submitBtn').addEventListener('click', function () {
        // 禁用按钮
        this.disabled = true;
    });
</script>

Mit dem obigen Code wird die Schaltfläche, nachdem der Benutzer auf die Schaltfläche „Senden“ geklickt hat, sofort deaktiviert und der Benutzer kann nicht wiederholt darauf klicken, wodurch eine wiederholte Übermittlung des Formulars vermieden wird.

3. Zusammenfassung

Das doppelte Einreichen von Formularen ist ein häufiges Problem, das bei der Entwicklung von Webanwendungen angegangen werden muss. Die oben vorgestellte Methode ist eine gängige Methode, um die wiederholte Übermittlung von Formularen zu verhindern. Sie können entsprechend der tatsächlichen Situation des Projekts eine geeignete Methode auswählen, um die wiederholte Übermittlung von Formularen zu bewältigen und die Stabilität und Sicherheit des Systems zu gewährleisten.

Das obige ist der detaillierte Inhalt vonVerarbeitung wiederholter Übermittlungen von ThinkPHP6-Formularen: Verhinderung wiederholter Vorgänge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn