Geen melding na versturen formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Functioneel beheerder financiële systemen (0,

Functioneel beheerder financiele systemen Aeres is een breed, veelzijdig kennisinstituut binnen de sector voedsel, leefomgeving en groen. Aeres verzorgt regulier onderwijs (PrO, VMBO, MBO, HBO), praktijkleren, commerciële diensten en praktijkonderzoek. Aeres heeft 1.200 medewerkers, 12.000 studenten en jaarlijks volgen nog eens vele duizenden volwassenen een training of cursus. Het bestuursbureau in Ede bestaat uit verschillende stafafdelingen waaronder ICT&IM. Wegens uitbreiding zijn we op zoek naar een Functioneel beheerder financiële systemen (0,6 - 0,8 fte) Ben jij een functioneel beheerder met een passie voor financiële applicaties? De functie Als functioneel beheerder fungeer je als spin in het web tussen de gebruikersorganisatie,

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

23/03/2019 16:30:20
 
- 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.