Email alleen verzenden als een veld leeg is

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Christian van Lierop

Christian van Lierop

10/08/2014 20:48:28
Quote Anchor link
Ik heb een website waarop mensen zich kunnen inschrijven voor een nieuwsbrief. Dit moet zo laagdrempelig mogelijk zijn, dus liefst zonder teveel handelingen (captcha of iets dergelijks). Nu las ik online een methode waarbij je sommige bots kon omzeilen door een extra veld (met bijvoorbeeld de naam: "name") aan te maken. Dit veld maak je dan met css onzichtbaar voor de menselijke bezoekers van je site (display:none). De bots zien dit veld echter wel en zullen het automatisch invullen. Nu wil ik mijn PHP code zo aanpassen dat de aanvraag alleen wordt doorgestuurd als het betreffende veld dus leeg is... Ik heb al het een en ander geprobeerd, maar kom er als PHP beginneling nog niet uit. Dit is mijn PHP file:

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
<?php    
$email
= htmlspecialchars($_POST["email"]);  
$naam = htmlspecialchars($_POST["naam"]);  

if (!$email) {  
echo "U heeft geen emailadres ingevuld!";  
exit; }  

  
else {  
  
$tijd = time();  
$datum = strftime("%d/%m/%y %H:%M", $tijd);  
$ip = getenv("REMOTE_ADDR");  
$message = " IP adres $ip met e-mailadres " . $email . " wil zich inschrijven voor de nieuwsbrief";  
  
$mailadres = "*****@chello.nl, webreply@*******.nl";  
$message = str_replace ("<br>","\n", $message);  
  mail("$mailadres", "Bericht van formulier op Fitpointhelmond.nl",  
    $message, "From: " . $email . "");  
      
echo header ("Location: /bedankt_inschrijven_nieuwsbrief.shtml");
    
}
  
?>


Hoe kan ik hem aanpassen dat de informatie alleen wordt doorgespeeld als het veld $naam leeg is?

Bij voorbaat dank :-)
- Aar -:
Mailadres uit voorzorg tegen spambots verwijderd.
Gewijzigd op 10/08/2014 20:57:00 door - Ariën -
 
PHP hulp

PHP hulp

25/12/2024 06:39:39
 
Martin V

Martin V

10/08/2014 20:54:30
Quote Anchor link
Je kan hiervoor empty gebruiken denk ik.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(empty($naam)) {
    // verstuur email
}
?>
Gewijzigd op 10/08/2014 20:54:55 door Martin V
 
Christian van Lierop

Christian van Lierop

10/08/2014 21:00:13
Quote Anchor link
Dankjewel Martin V. dat heb ik inderdaad ook al geprobeerd. Ik heb hem op verschillende plekken in de code proberen toe te passen, maar kreeg elke keer foutmeldingen. Ik ben ook nog niet echt handig met de syntax van PHP, met name wanneer er meerdere stukken code door elkaar gaan lopen...
 
Martin V

Martin V

10/08/2014 21:08:10
Quote Anchor link
Probeer dan eens
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
If($name == '') { //hier je code }
 
- Ariën  -
Beheerder

- Ariën -

10/08/2014 21:10:45
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(trim($naam)=='') {
// leeg
} else {
// bevat inhoud
}
?>


Als je mailadres wilt controleren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if(!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
    echo "E-mailadres is ongeldig");
}
else {
    echo "E-mail is geldig."; }
?>
 
Christian van Lierop

Christian van Lierop

10/08/2014 21:38:02
Quote Anchor link
Dankjewel Martin en Aar voor jullie snelle oplossingen! Ik heb het zo voor elkaar gekregen:
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
<?php    
$email
= htmlspecialchars($_POST["email"]);  
$naam = htmlspecialchars($_POST["naam"]);  

if (!$email) {  
echo "U heeft geen emailadres ingevuld!";  
exit; }  

  
if(empty($naam)) {
  
$tijd = time();  
$datum = strftime("%d/%m/%y %H:%M", $tijd);  
$ip = getenv("REMOTE_ADDR");  
$message = " IP adres $ip met e-mailadres " . $email . " wil zich inschrijven voor de nieuwsbrief";  
  
$mailadres = "******@chello.nl, *******@********.nl";  
$message = str_replace ("<br>","\n", $message);  
  mail("$mailadres", "Bericht van formulier op Fitpointhelmond.nl",  
    $message, "From: " . $email . "");  
      
echo header ("Location: /bedankt_inschrijven_nieuwsbrief.shtml");    
}
  

else {
echo "Er is iets mis gegaan!";  

}

?>


:-)

Tnx again!!!
Gewijzigd op 10/08/2014 21:39:13 door Christian van Lierop
 
Obelix Idefix

Obelix Idefix

10/08/2014 22:28:04
Quote Anchor link
Waar controleer je of de $_POST-variabelen bestaan?

Waarom maak je al die variabelen (regel 2/3 en 12-14, 15) aan?
Je headers van je mail zijn onvoldoende. Kan tot gevolg hebben dat mail in de spambox komt of niet aankomt.
Moet er een echo staan voor header op regel 22?
 
Christian van Lierop

Christian van Lierop

11/08/2014 16:49:35
Quote Anchor link
Dat zijn hele goede vragen Obelix en Idefix, waarop ik je voorlopig het antwoord schuldig moet blijven. Ik ben echt nieuw op het gebied van PHP, dus deze code is voor het grootste gedeelte overgenomen uit online voorbeelden die ik heb aangepast aan mijn eigen 'behoeften'. Ik neem dus graag van je aan dat er overbodige code in staat.

Wat je precies bedoelt met "Je headers van je mail zijn onvoldoende." weet ik helaas niet. Vooralsnog komt de mail tijdens het testen op het juiste adres aan...

In ieder geval bedankt voor het checken en voor de tips om de code op te schonen. Daar zal ik zeker mee aan de slag gaan!
 
Obelix Idefix

Obelix Idefix

11/08/2014 22:59:39
Quote Anchor link
Christian van Lierop op 11/08/2014 16:49:35:
Wat je precies bedoelt met "Je headers van je mail zijn onvoldoende." weet ik helaas niet. Vooralsnog komt de mail tijdens het testen op het juiste adres aan...

Door een onjuiste header kan een mail als spam worden aangemerkt of niet worden bezorgd, omdat er 'onderweg' het idee bestaat dat jouw mail niet voldoet aan standaard'eisen'.
Kijk eens op http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders
Of kies voor eenvoud en gebruik de class phpmailer of swiftmailer.
 
Ivo P

Ivo P

12/08/2014 06:45:05
Quote Anchor link
Kijk toch ook even naar Aars filter functie

Je kijkt namelijk helemaal niet of $_posr een (1) adres bevat
Stel er wordt aangeleverd

[email protected]
Cc:[email protected], [email protected]

dus met een enter.
Dan schiet jij dat zo de header in.
Dus piet en kees krijgen die mail ook.

Boeie, denk je?
Gaan we verder: subject kun je ook opnemen na bcc, gevolgd door 2 enters en een nieywe content

En voila een nieuwe server die spam vrrstuurt
 



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.