Geen melding na versturen formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Pagina: « vorige 1 2

Thomas van den Heuvel

Thomas van den Heuvel

13/03/2019 16:59:34
Quote Anchor link
- Ariën - op 13/03/2019 11:17:44:
Het voorkomt ook een berichtenflood.

Nee, dat doet het niet. Bots maken doorgaans niet zulke nette/uitgebreide HTTP-requests. Cookies worden dus naar alle waarschijnlijkheid niet meegestuurd. De link naar je sessie is dus elke POST weg. Dus de teller begint bij elke aanroep opnieuw te lopen. Deze antiflood aanpak biedt dus geen enkele bescherming. Mede omdat je met deze aanpak niet afhankelijk bent van de sessie.

Je zou sessies wel kunnen gebruiken in combinatie met een CRSF-token, dat helpt waarschijnlijk stukken beter. In dit geval kun je namelijk niets POSTen zonder de aanwezigheid van een sessie, in deze opzet kun je dus niet zonder.
Gewijzigd op 13/03/2019 17:01:35 door Thomas van den Heuvel
 
PHP hulp

PHP hulp

28/03/2024 13:41:09
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 17:42:36
Quote Anchor link
Toch wel hoor...
Berichtfloodings hoeven niet alleen van botjes vandaan te komen.
Het is puur bedoeld tegen vervelio's of mensen die vaak blijven klikken.

Tegen bots is het inderdaad niet bedoeld. CSRF zou een stuk netter zijn, maar ook re-Captcha zou niet misstaan. Die pikt de meeste botjes er wel uit aan de hand van hun gedrag.
Gewijzigd op 13/03/2019 17:48:26 door - Ariën -
 
Michael -

Michael -

13/03/2019 17:46:57
Quote Anchor link
Marina Koster op 13/03/2019 16:07:55:
Ik heb het nu werkend, het formulier wordt verstuurd en ik krijg een melding op de plek van het formulier, dus dat is ook goed. Alleen verspringt de site na het verzenden weer naar het begin van de pagina. Is er een manier om te zorgen dat de site op #contact blijft staan na verzenden?

Dat kan door dit aan te passen:
<form method="post" action="/test/index.php">
Naar:
<form method="post" action="/test/index.php#contact">

Maar als je toch op de zelfde pagina blijft, kun je de action ook prima weglaten.

EDIT: Daarnaast zou ik de 'foutmeldingen' opsparen en allemaal weergeven. Niet alleen 'Uw voornaam is niet ingevuld' terwijl de rest ook niet is ingevuld.
Gewijzigd op 13/03/2019 17:49:20 door Michael -
 
Thomas van den Heuvel

Thomas van den Heuvel

13/03/2019 17:51:02
Quote Anchor link
- Ariën - op 13/03/2019 17:42:36:
Het is puur bedoeld tegen vervelio's of mensen die vaak blijven klikken.

En die kunnen geen cookies weggooien? :/
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 18:27:30
Quote Anchor link
Thomas van den Heuvel op 13/03/2019 17:51:02:
- Ariën - op 13/03/2019 17:42:36:
Het is puur bedoeld tegen vervelio's of mensen die vaak blijven klikken.

En die kunnen geen cookies weggooien? :/

Die kunnen dat ook wel als ze willen. Onder normale omstandigheden werkt het prima.
Misschien kan ik het eens 'forken' (kopiëren en aanpassen) naar iets wat van deze tijd is.
Gewijzigd op 13/03/2019 18:37:41 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

13/03/2019 19:14:07
Quote Anchor link
Laat ik het anders formuleren.

De huidige antispam beveiliging is gebaseerd op (een) normale operatie (van browsers), maar spam volgt dit uitgangspunt zelden tot nooit. Daarom heeft deze oplossing op voorhand al de verkeerde insteek en is daarom gewoon ongeschikt als beveiliging.
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 19:34:53
Quote Anchor link
Dat weet ik! Maar het werkt wel om per ongeluk gebruik in normale situaties tegen te gaan van mensen die te vaak klikken. CSRF is, zoals ik al bevestigde, een beter idee.
het script is ook gedateerd, en daar moet verandering in komen, vind ik.
Gewijzigd op 13/03/2019 19:35:17 door - Ariën -
 
Marina Koster

Marina Koster

14/03/2019 08:48:45
Quote Anchor link
Michael - op 13/03/2019 17:46:57:
EDIT: Daarnaast zou ik de 'foutmeldingen' opsparen en allemaal weergeven. Niet alleen 'Uw voornaam is niet ingevuld' terwijl de rest ook niet is ingevuld.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
32
33
34
35
36
37
38
39
40
41
42
<?php
    // naam controle
    if (empty($_POST['voornaam']))
        $voornaam_fout = 1;
    // achternaam controle
    if (empty($_POST['achternaam']))
        $achternaam_fout = 1;
    // bedrijfsnaam controle
    if (empty($_POST['bedrijfsnaam']))
        $bedrijfsnaam_fout = 1;
    // e-mail controle
    if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
            $email_fout = 1;
    // antiflood controle
    if (!empty($_SESSION['antiflood']))
    {

        $seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
        $tijd = time() - $_SESSION['antiflood'];
        if($tijd < $seconde)
            $antiflood = 1;
    }
}


// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['voornaam']) || !empty($voornaam_fout) || empty($_POST['achternaam']) || !empty($achternaam_fout) || empty($_POST['bedrijfsnaam']) || !empty($bedrijfsnaam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{

    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {

        if (!empty($voornaam_fout))
            echo '<p>Uw voornaam is niet ingevuld.</p>';
        elseif (!empty($achternaam_fout))
            echo '<p>Uw achternaam is niet juist.</p>';
        elseif (!empty($bedrijfsnaam_fout))
            echo '<p>Uw bedrijfsnaam is niet juist.</p>';
        elseif (!empty($email_fout))
            echo '<p>Uw e-mailadres is niet juist.</p>';
        elseif (!empty($antiflood))
            echo '<p>U mag slechts &eacute;&eacute;n bericht per ' . $seconde . ' seconde versturen.</p>';
        else
            echo '<p>U bent uw naam, bedrijfsnaam, e-mailadres of bericht vergeten in te vullen.</p>';
    }

?>


Hoe zou ik dat kunnen oplossen? Heeft dat met 'elseif' te maken?

Toevoeging op 14/03/2019 08:50:39:

- Ariën - op 13/03/2019 16:22:08:
Is een bericht dat 'het versturen gelukt is' niet veel praktischer. Nu kom ik op de index uit, wat verwarrend is.


Ik heb het nu zo neergezet dat je na verzenden op het kopje contact blijft staan. Maar hoe zou jij het oplossen? Als een popup geen slimme zet is, wat zou ik dan kunnen doen?
 
- Ariën  -
Beheerder

- Ariën -

14/03/2019 08:59:12
Quote Anchor link
Beste oplossing is om het formulier na afloop niet te tonen en een melding te tonen.

Het opsparen kan door de elseif'jes te vervangen door ifjes. En dan elke foutmelding in een array laten zetten. En deze na versturen controlen met count() op het aantal: Is dit 0, dan is alles prima. Is het meer dan 0, dan doorloop je de foutmeldingen met foreach.
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.