email form met vreemde tekens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ricardo van Schaik

Ricardo van Schaik

02/04/2012 12:55:20
Quote Anchor link
Beste,

Graag heb ik hulp nodig bij het volgende probleem.

Ik gebruik een php (zie onderstaande code) webformulier voor mijn e-mails. Als er een email binnenkomt van de website met speciale tekens zoals bijvoorbeeld è, of ç dan krijg ik andere rare symbolens/vreemde tekens binnen.

Nu heb ik het idee (opgezocht via google) dat dit aan het karakterset ligt van mijn php code. Ik moet ergens in mijn code vermelden dat er gebruik gemaakt moet worden van UTF-8?? Wie kan mijn helpen?

Dank je wel voor alle input!



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

if(!$_POST) exit;

$email = $_POST['email'];

//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
    $error.="Invalid email address entered";
    $errors=1;
}

if($errors==1) echo $error;
else{
    $values = array ('company','email','name','address','message');
    $required = array('company','email','name','address','message');
    
    $your_email = "[email protected]";
    $email_subject = "New Message Website: ".$_POST['subject'];
    $email_content = "new message website:\n";
    
    foreach($values as $key => $value){
      if(in_array($value,$required)){
        if ($key != 'subject' && $key != 'company') {
          if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
        }

        $email_content .= $value.': '.$_POST[$value]."\n";;
      }
    }

    
    if(@mail($your_email,$email_subject,$email_content)) {
        echo 'Message sent!';
    }
else {
        echo 'ERROR!';
    }
}


?>
Gewijzigd op 02/04/2012 13:19:19 door Ricardo van Schaik
 
PHP hulp

PHP hulp

26/04/2024 22:22:47
 
Obelix Idefix

Obelix Idefix

02/04/2012 13:01:19
Quote Anchor link
eregi is een vervallen functie.
Waarom $email aanmaken?
Haal je e-mailadres even uit je code.
Waarom @ voor je mailfunctie?
Ik mis zo'n beetje alle headers in je mail. Gebruik daarom liever bv phpmailer of swiftmailer.
 
Ricardo van Schaik

Ricardo van Schaik

02/04/2012 13:15:17
Quote Anchor link
Obelix en Idefix op 02/04/2012 13:01:19:
eregi is een vervallen functie.
Waarom $email aanmaken?
Haal je e-mailadres even uit je code.
Waarom @ voor je mailfunctie?
Ik mis zo'n beetje alle headers in je mail. Gebruik daarom liever bv phpmailer of swiftmailer.


Beste,

Ik moet eerlijk erbij zeggen, dat ik weining php kennis heb. Heb meer html kennis.

We hebben een template gekocht, en deze php formulier/code zat erbij, dat heb ik toen aangepast met mijn e-mail adres. Verder werkt het formulier wel alleen als ik een email binnen krijg met speciale tekens dan verandard dit in vage symbolen. Kun jij zeggen wat ik kan toevoegen aan mijn php code?

In ieder geval bedankt!


Groeten, Ricardo
Gewijzigd op 02/04/2012 13:20:33 door Ricardo van Schaik
 
Rob Sloep

Rob Sloep

13/06/2012 17:01:15
Quote Anchor link
Ik heb hetzelfde probleem en zie dus ook uit naar de oplossing.

De vraag van Ricardo is duidelijk en simpel, graag dus een antwoord op de vraag en niet een verhaal over wat beter kan en/of moet.

Bij voorbaat dank.
 
Erwin H

Erwin H

13/06/2012 17:07:34
Quote Anchor link
Ik heb net mijn probleem hiermee opgelost en de oplossing zo duidelijk mogelijk vermeld in het topic:
http://www.phphulp.nl/php/forum/topic/opgelost-juiste-character-set-gebruiken-mysqlphphtml/85169/last/
 
Rob Sloep

Rob Sloep

13/06/2012 17:17:11
Quote Anchor link
Dank voor je reactie maar is niet helemaal wat we (ik?) zoeken.

Voor mijn gastenboek gebruik ik een database, dat werkt feilloos.
Dit gaat over een emailformulier hetgeen dus direct verstuurd wordt.
Zoals Ricardo al aangaf schijnt daar "ergens" aangegeven te moeten worden dat er gebruik gemaakt moet worden van UTF-8.
Ik krijg regelmatig Duits-talige reacties en die worden nagenoeg onleesbaar door dit probleem.
 
- SanThe -

- SanThe -

13/06/2012 17:23:01
 
Rob Sloep

Rob Sloep

13/06/2012 17:52:22
Quote Anchor link
Ik zal wel teveel leek zijn om dit te begrijpen.
Het gaat niet om de headers (dat begrijp ik al niet, dat zou moeten slaan op het traject dat een email aflegt, lees ik) maar juist om de message, het bericht.

Iemand typt b.v. als bericht:
Hallo, als erstes möchte ich eure tolle Seite sehr loben, habe sehr schöne kinderwagen aus den alten Zeiten gesehen und interessiere mich für einige.
lieben gruß.
Ik krijg binnen:
Hallo, als erstes möchte ich eure tolle Seite sehr loben, habe sehr schöne kinderwagen aus den alten Zeiten gesehen und interessiere mich für einige.
lieben gruß.

Nou is dit nog wel te herleiden maar als iemand zo een letter of letters in zijn/haar naam heeft wordt het een probleem.
 
Erwin H

Erwin H

13/06/2012 17:55:58
Quote Anchor link
Het gaat wel om de headers. De headers bepalen (onder andere) welke character set gebruikt moet worden om de tekens die zijn ingetikt te vertalen naar bytes. Als de headers verkeerd zijn dan wordt de verkeerde conversie gebruikt en krijg je dus een onleesbare tekst. Check de link van Santhe dus zou ik zeggen (vooral de laatste header).
 
Rob Sloep

Rob Sloep

13/06/2012 18:02:41
Quote Anchor link
Brengt ons weer terug naar de vraag van Ricardo: hoe of waar verwerk je dat in (bijvoorbeeld zijn) de code?
 
Marco M

Marco M

14/06/2012 00:51:35
Quote Anchor link
Om de headers in te stellen gebruik je het voorbeeld van -SanThe- , waarin duidelijk beschreven staat hoe de headers aan te maken (de $header variabele dus). Om het toe te passen op de code van Ricardo pas je op regel 30 e.v. van zijn voorbeeld de mail functie aan naar bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(mail($your_email,$email_subject,$email_content, $headers))
{

echo 'verzonden';
}

else
{
echo 'Foutje!';
}

?>


Lees dus even de link van -SanThe- en de manual van mail door, dan komt het vast wel goed.
 
Albert de Wit

Albert de Wit

14/06/2012 08:44:41
Quote Anchor link
http://php.net/manual/en/function.mail.php


$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";


$headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' . "\r\n";
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n";
$headers .= 'Cc: [email protected]' . "\r\n";
$headers .= 'Bcc: [email protected]' . "\r\n";
 
- SanThe -

- SanThe -

14/06/2012 08:51:50
Quote Anchor link
@Albert: De TO hoort niet bij de headers. Die zet je als eerste parameter bij de mail() function.
 
Albert de Wit

Albert de Wit

14/06/2012 11:18:55
Quote Anchor link
oh... ik heb dit eerder gebruikt maar dat scheen te werken.
 



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.