mail form wordt geblokkeert door webmail

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jannes vermeersch

jannes vermeersch

19/01/2011 15:59:31
Quote Anchor link
Hallo,
ik heb een account op one.com maar men form komt daar niet aan bij men webmail.
Als ik het form naar hotmail stuur komt het wel aan maar bij ongewenst (wordt geblokkeerd door smartscreen filters). Kan ik op een (vrij eenvoudige) manier deze code iets beter maken? Ik denk dat het door $_POST code komt. Alvast bedankt! Jannes.

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
<?php

// your email address
$youremail = "[email protected]";


$name = $_POST['name'];
$email = $_POST['email'];
$telefoon = $_POST['telefoon'];
$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];
$uur = $_POST['uur'];
$personen = $_POST['personen'];
$straat = $_POST['straat'];
$gemeente = $_POST['gemeente'];
$opmerkingen = $_POST['opmerkingen'];

// field validation
if ($email=="" || $name=="" || $telefoon=="" || $uur=="" || $personen=="" || $straat=="" || $gemeente=="")

{

print ("Gelieve alle velden in te vullen. Ga terug en probeer opnieuw.");
}


else {

// email validation
if(!eregi('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$', $email)) {
print ("U heeft geen geldig email adres ingevuld. Ga terug en probeer opnieuw.");
exit;
}


// send email
$headers = "From: \"$name\" <$email>\n";
$subject = "Paella reservatie";
$message = "Naam: $name\n
            Email: $email\n
            Telefoon: $telefoon\n
            Datum: $day $month $year\n
            Uur: $uur\n
            Personen: $personen\n
            Straat: $straat\n
            Gemeente: $gemeente\n
            Opmerking: $opmerkingen"
;

mail ("$youremail", "$subject", $message, $headers);
print ("Bedankt voor uw bestelling, wij nemen zo snel mogelijk contact met u op.");

}

?>
 
PHP hulp

PHP hulp

27/11/2024 18:06:25
 
Thijs Damen

Thijs Damen

19/01/2011 16:06:58
Quote Anchor link
De reden waarom de mail word geblocked is omdat jij niet vertrouwd word als sender.
Wat ik zou doen is iig een library zoals PHPMailer gebruiken en kijken of je een SMTP server kunt gebruiken voor het verzenden.

Deze worden vaak(er) als "vertrouwd" gemarkeerd ipv in de spam filters opgepakt.
 
- Ariën  -
Beheerder

- Ariën -

19/01/2011 16:07:47
Quote Anchor link
- eregi() is deprecated, gebruik preg_match()
- Je doet geen controle of de mail verstuurd is, je gaat nu zelf maar zeggend at het gelukt is, zonder dat je er enige controle erop doet.
- Variabelen horen buiten quotes
- Je doet nergens een controle of je formulier is versturud met POST:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
?>

- Gebruik liever phpMailer of SwiftMailer als je een mail stuurt. Dit zorgt ervoor dat je altijd de juiste mailheaders gebruikt, en dat deze niet misbruikt kunnen worden d.m.v. mailheader-injection.

Tijd voor een flinke overhaul van dit script.
 
Jannes vermeersch

jannes vermeersch

19/01/2011 16:09:52
Quote Anchor link
bdankt voor de snelle reactie. ik ken PHPMailer niet maar zal het direct uitzoeken
 
John D

John D

19/01/2011 16:19:58
Quote Anchor link
er blijft altijd een risico, ook met phpmailer, swiftmailer en dergelijke, wanneer je from domein niet overeenkomt met het daadwerkelijke domein van de smtp/sendmail server die je gebruikt om te versturen. Ontvangende servers checken dat en wanneer er verschil is wordt het gewantrouwd en soms helemaal geweigerd.
 
- SanThe -

- SanThe -

19/01/2011 16:57:41
Quote Anchor link
- Aar - op 19/01/2011 16:07:47:
.. dat deze niet misbruikt kunnen worden d.m.v. mailheader-injection.


Jouw script is gevoelig voor email-injection.
Verder zijn de headers niet compleet en niet correct.
http://phpwiki.santhe.nl/index.php/De_juiste_mailheaders
 
Jannes vermeersch

jannes vermeersch

24/01/2011 20:30:51
Quote Anchor link
Hallo, ik ben nog maar een weekje met php bezig en ben al blij dat ik een werkende form handler heb nu. Het is maar voor een hobby site'je dus echt proffessioneel hoeft het niet te zijn. maar misschien zijn er nog beveiligings dingen die ik echt wel moet hebben? de http referer heb ik nog niet gecheckt of hij andere forms blokkeerd maar ik denk het wel? onderaan heb ik nog een paar vraagjes. Alvast bedankt!


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
<?php

if(getenv("HTTP_REFERER") != 'http://www.xxxxxxxxxxxxxxxxx.nl/form.html'){
        die('error');  
    }
else{
      
  
// your email address
$youremail = "[email protected]";


$name = $_POST['name'];
$email = $_POST['email'];
$telefoon = $_POST['telefoon'];
$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];
$uur = $_POST['uur'];
$personen = $_POST['personen'];
$straat = $_POST['straat'];
$gemeente = $_POST['gemeente'];
$opmerkingen = $_POST['opmerkingen'];


// field validation
if ($email=="" || $name=="" || $telefoon=="" || $uur=="" || $personen=="" || $straat=="" || $gemeente=="")

{

print ("Gelieve alle velden in te vullen. Ga terug en probeer opnieuw.");
}


else {

// email validation
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{

print ("U heeft geen geldig email adres ingevuld. Ga terug en probeer opnieuw.");
exit;
}



// send email
$headers = "From: \"$name\" <$email>\n";
$subject = "reservatie";
$message = "Naam: $name\n
            Email: $email\n
            Telefoon: $telefoon\n
            Datum: $day $month $year\n
            Uur: $uur\n
            Personen: $personen\n
            Straat: $straat\n
            Gemeente: $gemeente\n
            Opmerking: $opmerkingen"
;

mail ("$youremail", "$subject", $message, $headers);
print ("Bedankt voor uw bestelling, wij nemen zo snel mogelijk contact met u op.");

}

}

?>



ik vond deze snippet om alles behalve letters, cijfers en spaties te verwijderen
om malcode tegen te gaan.

$output = preg_replace("/[^a-z \d]/i", "", $input);

kan ik deze toepassen bij het declareren van mijn variablen?
ik zou er dit van maken:

$bericht = preg_replace("/[^a-z \d]/i", "", ($_POST['bericht']));

of


$FirstName = strip_tags($_POST['FirstName']);

dit vond ik ook juist, beetje hetzelfde denk ik?



nog een vraagje:
volstaat dit om te laten weten dat het verstuurd is of niet?

$isMailed = mail($to, $subject, $body, $headers);

if($isMailed){
echo "Thank you for your inquery, " . $FirstName . " " . $LastName . " We will get back to you shortly.";
}else{
echo "There seemed to be a problem";
}
 

24/01/2011 20:35:33
Quote Anchor link
Dat bericht van jouw stond ook al bovenaan.
- getenv van http_referer is oud.
- http_referer is onbetrouwbaar.
- http_referer staat niet altijd aan.
- 'or die' is geen foutafhandeling. Kan hier sowieso weg.
- regel 12 t/m 22, variabelen kopieëren is onzin.
- e-mailadressen zijn niet te valideren met regexen.
- Zie wat preg_match teruggeeft.
- exit is in principe alleen mogelijk na een header.
- mail injection mogelijk.
- Variabelen buiten quotes is beter.
- Dingen als "$youremail" is totale onzin.
 
Jannes vermeersch

jannes vermeersch

24/01/2011 20:54:31
Quote Anchor link
bedankt voor je snelle reactie maar ik ben echt te slecht om er iets deftig met te doen. ik zoek gewoon code en scriptjes op internet en probeer ze aan te passen maar blijkbaar zijn ze allemaal verouderd. Kan iemand mij mss doorverwijzen naar ergens waar ik eenvoudige maar recente code vind om een simpel form te verwerken.

toch bedankt,

Jannes

Toevoeging op 25/01/2011 16:21:51:

$isMailed = mail ("[email protected]", "$subject", $message, $headers);

if($isMailed){
header ("Location: bedankt.html");
}

iemand een idee waarom de verwijzing naar bedankt.html niet werkt?
als ik er echo "Bedankt"; zet werkt het wel



Toevoeging op 25/01/2011 16:29:42:

oh ik lees juist dat het niet binnen de if() mag staan. maar ik moet toch weten dan het wel zeker verstuurd is? hoe kan ik dit het beste oplossen? bedankt

Toevoeging op 25/01/2011 17:17:35:

of komt het door dit bovenaan?
if($_SERVER['REQUEST_METHOD']=="POST") {

Toevoeging op 25/01/2011 18:37:05:

echo "tekst \n tekst": komt ook gewoon op 1 lijn
Gewijzigd op 24/01/2011 20:54:57 door jannes vermeersch
 



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.