Wat is beter?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ruben Kok

Ruben Kok

18/01/2009 10:19:00
Quote Anchor link
Ik heb hier 2 stukjes script van mijn beginners contactformulier:
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
<form method="POST" action="--WEBBOT-SELF--">
        <p>Naam:<br>
    <input type="text" name="T1" size="20"><br>
    Email:<br>
    <input type="text" name="T2" size="20"><br>
    Wat je wilt zeggen<br>
    <textarea rows="2" name="S1" cols="20"></textarea><br>
    <input type="submit" value="Verzenden" name="POST"></p>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
  header("location: http://www.tg4a.nl.tt/verzend.php");
}

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<form action="verzend.php" method="post">
Naam: <input type="text" name="name"><br>

Email: <input type="text" name="email"><br>
Tekst: <textarea name="comments"></textarea><br>
<input type="submit" value="Verzenden">
</form>


Welke is beter te gebruiken voor een mailscript?
Gewijzigd op 01/01/1970 01:00:00 door Ruben Kok
 
PHP hulp

PHP hulp

18/12/2024 14:17:39
 
Jelmer -

Jelmer -

18/01/2009 10:43:00
Quote Anchor link
Werkt die bovenste? De naam WEBBOT doet me denken aan *shiver* Frontpage. Daar had je op de server Frontpage Extensions voor IIS voor nodig.

Daarbij is de tweede beter want die is simpeler en doet precies hetzelfde. Simpeler is altijd beter. En leesbaarder.

Maar de hamvraag die pas echt bepaald of het goed of niet is, is de inhoud van verzend.php. Hoe ziet die broncode eruit? Want een goed formulier heeft de nodige controles en filters om ervoor te zorgen dat mensen niet al dan niet per ongeluk onzin opsturen.
 
Ruben Kok

Ruben Kok

18/01/2009 11:07:00
Quote Anchor link
De verzend.php 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
22
<?php

// je email
$youremail = "[email protected]";

if ($email=="" || $comments=="" || $name=="")

{

print ("Je moet alles invullen, ga terug alsjeblieft.");
}



// email verzenden
$headers = "Van: \"$name\" <$email>\n";
$subject = "Vraagje";
$message = "$comments";

mail ("$youremail", "$subject", $message, $headers);
print ("Bedankt $name, je email is verzonden.");

}

?>
Gewijzigd op 01/01/1970 01:00:00 door Ruben Kok
 
Jelmer -

Jelmer -

18/01/2009 11:12:00
Quote Anchor link
Je controleert al of de velden leeg zijn of niet, dat is een begin.

Echter, er zijn een paar dingen vatbaar voor betering:
- Je gebruikt zo te zien geen superglobals, en die zijn wel nodig wanneer je wilt dat je script op de gemiddelde webhost werkt. Deze tutorial van PHPerik legt uit.

- Je verzend-scriptje is nog wel vatbaar voor misbruik. Deze tutorial van Pholeron kan je de details uitleggen.
 
Hipska BE

Hipska BE

18/01/2009 11:13:00
Quote Anchor link
Waarom doe jij $message = "$comments" als ik vragen mag?
Welke voordelen heeft het boven $message = $comments ?

Oja, nog een belangerijk detail,
Gebruik bij een post natuurlijk $_POST['name'] ipv $name, dit ivm de veiligheid!
 
Ruben Kok

Ruben Kok

18/01/2009 11:35:00
Quote Anchor link
Ik heb nu dit:
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
55
56
57
58
59
60
61
62
63
64
65
66
<?php
$name
= stripslashes($_POST["name"]);
$email = stripslashes($_POST["email"]);
$comments = stripslashes($_POST["comments"]);
if(isEmail($email)) // Merk op dat een 'goed' emailadres zowiezo nooit een [enter] of quote kan bevatten
{
    $header = "From: \"" . protectMailHeaders($name) . "\" <" . $email . ">";
}

else // Fout afhandelen
{
    exit("Ongeldig emailadres");
}

function
protectMailHeaders($string)
{

    $string = str_replace("", "", $string);
    $string = str_replace("", "", $string);
    $string = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $string)); // Slashes van quotes

    return $string;
}

function
isEmail($string)
{

    $result = false;

    if($string != "")
    {

        $expr = "/^([a-zA-Z0-9]){1,}(([a-zA-Z0-9\-_])|(([\.]){1,1}  
-opmaakbreak-
([a-zA-Z0-9]){1,})){0,}([@]){1,1}([a-zA-Z0-9]){1,}
-opmaakbreak-
(([a-zA-Z0-9\-_])|(([\.]){1,1}([a-zA-Z0-9]){1,})){0,}
-opmaakbreak-
([\.]){1,1}([a-zA-Z0-9]){2,4}$/"
;
        if(preg_match($expr, $string)) // voldoet aan expressie
        {
            $result = true;
        }
    }


    return $result;
}




// je email
$youremail = "[email protected]";

if ($email="" || $comments="" || $name="")

{

print ("Je moet alles invullen, ga terug alsjeblieft.");
}



// email verzenden
$headers = "Van: \"$_POST['name']\" $_POST['email']\n";
$subject = "Vraagje";
$message = 'Dit is de comment: '.$comment;

mail ("$youremail", "$subject", $message, $headers);
print ("Bedankt $name, je email is verzonden.");

}

?>
Gewijzigd op 01/01/1970 01:00:00 door Ruben Kok
 
Jesper Diovo

Jesper Diovo

18/01/2009 11:36:00
Quote Anchor link
@Hipska: dezelfde redenen waarom hij eerst in mail() "$youremail" en "$subject" zet en daarna gewoon $message en $headers.....
 
Hipska BE

Hipska BE

18/01/2009 11:45:00
Quote Anchor link
Idd redelijk onlogisch..

@Ruben:
Waarom doe jij $message = "$comments" als ik vragen mag?
Welke voordelen heeft het boven $message = $comments ?
 
Ruben Kok

Ruben Kok

18/01/2009 11:48:00
Quote Anchor link
gewoon? het is maar een naamverschil. Dus ik snap het probleem er van niet
 
Hipska BE

Hipska BE

18/01/2009 11:56:00
Quote Anchor link
Naamverschil?

Het probleem is dat php bij "$var" veel extra werk heeft..
Hij moet eerst $var (die al een string is) nog eens in een lege string plakken en dan pas die string kopieren naar die andere variabele.

Komt er dan nog eens bij dat als je "$var['key']" doet, dat dit niet zal werken. hij zal $var en "['key']" in een lege string plakken en niet de inhoud va $var['key'].

Daarom is het aan te raden om altijd voor strings ' te gebruiken en variabelen buiten de " te houden. Bijkomend voordeel is nog eens dat php ' strings sneller verwerkt dan " strings omdat hij die niet zo moet verwerken zoals in het begin vermeldt..

Dus $message = 'Dit is de comment: '.$comment;
 
Ruben Kok

Ruben Kok

18/01/2009 12:05:00
Quote Anchor link
oke, bedankt voor de hulp. Ik kan het vanaf hier wel zelf weer ;)
 



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.