footer verdwijnt na die-functie (contactscript)

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 »

Jos Vermassen

Jos Vermassen

09/12/2012 14:07:17
Quote Anchor link
Hallo,

Ik heb een contactformuliertje ingebouwd in mijn website. Dit scriptje controleert of de velden juist zijn ingevuld en zo niet worden er errorberichten getoond. Wanneer deze errorberichten verschijnen, verdwijnt mijn footer. Ik denk dat dit komt door de die() functie die ik gebruik. Hoe kan ik dit anders doen?

Hier is mijn code:

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
<?php
    if(isset($_POST['email']))
    {

        $to = "[email protected]";
        $subject = "Mail van lucbax.be";
        
        function
died($error) {
            // your error code can go here
            echo "Het formulier is niet correct ingevuld:";
            echo "<br>".$error."<br><br>";
            die();
        }

            
        //Velden Contactform
        $name = $_POST['name']; // required
        $address = $_POST['address']; //not required
        $email = $_POST['email']; // required
        $telephone = $_POST['telephone']; // required
        $message = $_POST['message']; // required
    }
?>

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
43
44
45
46
47
48
49
50
51
52
53
54
<?php
//Controle op de velden
$error_message = "";
        
        //Controle naam
        $name_exp = "/^[A-Za-z .'-]+$/";
        if(!preg_match($name_exp,$name)) {
            $error_message .= "<p>De ingevoerde naam is onjuist</p>";
         }

         
         //////////////////////
         //Adres not required//
         //////////////////////
         
         //Controle telefoonnummer

         $phone_exp = "/^\d[\d ]*\d$/";
         if(!preg_match($phone_exp,$telephone)) {
             $error_message .= "<p>Het ingevoerde telefoonnummer is onjuist</p>";
         }

        
        //Controle email
        $email_exp = "/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/";
        if(!preg_match($email_exp,$email))
        {

            $error_message .= "<p>Het ingevoerde emailadres is onjuist</p>";
        }

        
        //Controlebericht
        if(strlen($message) < 10) {
            $error_message .= "<p>Het ingevoerde bericht is te kort</p>";
        }


        
    //Als er errors zijn, mail niet versturen --> die(errors)
    if(strlen($error_message) > 0)
    {

        echo "<div id='error'>";
            died($error_message);
        echo "</div>";
    }

    else
    {
        echo "bericht verstuurd";    
    }


//Mail message
$email_message = "Naam: ".$name."\n";
$email_message .= "Adres: ".$address."\n";
$email_message .= "Telefoon: ".$telephone."\n";
$email_message .= "Email: ".$email."\n"."\n";
$email_message .= "Bericht: ".$message."\n";
               
mail($to, $subject, $email_message);
?>
Gewijzigd op 09/12/2012 14:10:43 door Jos Vermassen
 
PHP hulp

PHP hulp

26/12/2024 02:37:16
 
Erwin H

Erwin H

09/12/2012 14:14:18
Quote Anchor link
Dat is dus precies waarom je NOOIT die() moet gebruiken. Het script gaat namelijk helemaal niet dood zoals je zelf ook merkt. Zeker in dit geval is er ook helemaal geen reden om het script te laten stoppen.






Disclaimer: er zijn momenten waarop die() wel nuttig is, zoals na een redirect. Dan wil je juist dat executie stopt.
 
Jos Vermassen

Jos Vermassen

09/12/2012 14:15:55
Quote Anchor link
Erwin H op 09/12/2012 14:14:18:
Dat is dus precies waarom je NOOIT die() moet gebruiken. Het script gaat namelijk helemaal niet dood zoals je zelf ook merkt. Zeker in dit geval is er ook helemaal geen reden om het script te laten stoppen.






Disclaimer: er zijn momenten waarop die() wel nuttig is, zoals na een redirect. Dan wil je juist dat executie stopt.


Maar als ik de die() wegdoe en mijn errorberichten gewoon toon via een echo, dan komen deze er al te staan vooraleer het formulier 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
<?php
if(strlen($error_message) > 0)
{

    echo "<div id='error'>";
        echo $error_message;
    echo "</div>";
}

else
{
    echo "bericht verstuurd";    
}

?>
Gewijzigd op 09/12/2012 14:17:19 door Jos Vermassen
 
Tim S

Tim S

09/12/2012 14:40:54
Quote Anchor link
Wat is nou de rede dat je die gebruikt? Als ik een contact formulier invul en ik maak een foutje hoeft het script toch niet dood te gaan?
 
Jos Vermassen

Jos Vermassen

09/12/2012 14:41:45
Quote Anchor link
Neen, inderdaad. Het is al opgelost.
 
Tim S

Tim S

09/12/2012 14:45:27
Quote Anchor link
Zonder die krijg je gewoon een foutmelding. Als het goed is wordt er verder niks gedaan en dat lijkt mij voldoende.
 
Obelix Idefix

Obelix Idefix

09/12/2012 15:23:20
Quote Anchor link
Als het is opgelost, laat dan ook even weten hoe.

Ten aanzien van je code:
Haal het mailadres even weg. Handig voor spambots.
Je kopieert variabelen (15 t/m 19). Doorgaans niet zinvol. Daarnaast controleer je niet (vooraf) of ze wel bestaan.

Je toont een melding dat de mail verstuurd is (regel 43), terwijl je pas verstuurd op regel 53. Daar controleer je nergens of de mail verstuurd is. Er missen volgens mij nog wat headers. Om te voorkomen dat je het e-mail wiel opnieuw uitvindt, wordt daarom doorgaans swiftmailer of phpmailer geadviseerd.
 



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.