2 vragen over php mail functie!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johannes davidian

johannes davidian

18/07/2022 14:45:24
Quote Anchor link
Hallo,
Ik heb deze php code samengesteld nadat veel zoeken:
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php

// define variables and set to empty values
$nameErr = $emailErr = $phoneErr = $contentErr = "";
$name_sender = $email_sender= $phone = $content =$succes= "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // post
    $name_sender = strip_tags($_POST['name_sender']);
    $email_sender = strip_tags($_POST['email_sender']);
    $phone = strip_tags($_POST['phone']);
    $content = strip_tags($_POST['content']);
    
    // validate name
    if (empty($name_sender)) {
        $nameErr = "Name is required";
    }
else {
        // check if name only contains letters and whitespace
        if (!preg_match("/^[a-zA-Z-' ]*$/", $name_sender)) {
            $nameErr = "Only letters and white space allowed";
        }
    }


    // validate email
    if (empty($email_sender)) {
        $emailErr = "Email is required";
    }
else {
        // check if email address is well-formed
        if (!filter_var($email_sender, FILTER_VALIDATE_EMAIL)) {
            $emailErr = "Invalid email format";
        }
    }


    // validate phone
    if (empty($phone)) {
        $phoneErr = "Phone is required";
    }
else {
        // check if phone is well-formed
        if(!preg_match("/^[0-9\s\-]+$/", $phone)) {
            $phoneErr = "Invalid phone number";
        }
    }


    // validate content
    if (empty($content)) {
        $contentErr = "Content is required";
    }


    // send
    if ( empty($nameErr) && empty($emailErr) && empty($phoneErr) && empty($contentErr) ) {
        // Variables
        $to = 'johannes@webdesignleren.com';
        $subject = 'Contact form';
        $success = 'Thank you! You will receive a response as soon as possible.';
          
        
        // Message content
    

        
        // Message content

        $content = "Contact form\n";
        $content .= "Name: " .$name_sender. "\n";
        $content .= "Email: " .$email_sender. "\n";
        $content .= "Phone: " .$phone. "\n";
        
        
            



    

        // Headers
        $headers     = 'From: ' .$name_sender. ' <' .$email_sender. '>' . PHP_EOL;
        $headers    .= 'Reply-To: <' .$email_sender. '>' . PHP_EOL;
        $headers    .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL;
        $headers    .= 'Content-Type: text/plain; charset=UTF-8' . PHP_EOL;

        // Send email
        mail($to, $subject,$content, $headers);
        echo $success;
    }
    
}



// form


?>




de html code is :

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
<html>

<div class="container">
<form id="contact" method="post">
<h3>Quick Contact</h3>
<h4>Contact us today, and get reply with in 24 hours!</h4>
<fieldset>
<input placeholder="Your name" type="text" name="name_sender" value="<?php echo $name_sender;?>">
<span class="error">* <?php echo $nameErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your Email Address" type="text" name="email_sender" value="<?php echo $email_sender;?>">
<span class="error">* <?php echo $emailErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your phone number" type="text" name="phone" value="<?php echo $phone;?>">
<span class="error">* <?php echo $phoneErr; ?></span>
</fieldset>
<fieldset>
<textarea placeholder="Type your message here.." type="text" name="content"><?php echo $content;?></textarea>
<span class="error">* <?php echo $contentErr; ?></span>
</fieldset>
<fieldset>
<button name="submit" type="submit" id="contact-submit">Submit</button></fieldset>
</form></div>
</html>


nu mij probleem is :

1- wanneer ik gegevens vullen in contact-form en klikt op submit button ik krijg dezelfde gegevens in het velden van de contact-form .

voor duidelijkheid u kunt zelf zien in url : https://webdesignleren.com/contact/

deze code lijn wordt op zelfde wijze gegeven in de tekst veld van contact-form nadat submit button geklikt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
// Message content
        $content = "Contact form\n";
        $content .= "Name: " .$name_sender. "\n";
        $content .= "Email: " .$email_sender. "\n";
        $content .= "Phone: " .$phone. "\n";
                $content .= "". "\n\n";


?>


2- de text inhoud of de body van de message wordt niet gegeven in mij email box , alleen de naam van sender, email adres en telefoon nummer .

maar wanneer ik deze codes lijn weghalt :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
</php

                $content = "Contact form\n";
        $content .= "Name: " .$name_sender. "\n";
        $content .= "Email: " .$email_sender. "\n";
        $content .= "Phone: " .$phone. "\n";


?>






en allen deze lijn houdt ( $content .= "". "\n\n";) dan wordt wel de ingevulde tekst of body weergegeven in de email box van mij provider.

ik heb heleboel gezocht in google maar ik kunde niet de juiste antwoord vinden.

hoe ik kan deze 2 problemen oplossen?
dank u wel
 
PHP hulp

PHP hulp

03/02/2023 12:01:52
 
Adoptive Solution

Adoptive Solution

18/07/2022 15:31:06
Quote Anchor link
In regel 12 krijgt $content de waarde van $_POST['content']

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

In regel 62 krijgt $content de waarde "Contact form\n";

$content = "Contact form\n";

$content met de POST waarde wordt dus overschreven.

En dat de input velden met die waarden worden getoond, komt omdat je een echo doet van die waarden.
 
Johannes davidian

johannes davidian

18/07/2022 16:19:26
Quote Anchor link
dank u wel,
wat ik moet doen precis?
1-moet ik deze lijn $content="Contact form\n" helemaal weg doen of andere naam gebruiken voor content in regel 62?
2-moet ik echo helemaal weg doen of er is andere oplossing?
 
- Ariën  -
Beheerder

- Ariën -

18/07/2022 16:43:16
Quote Anchor link
Probeer het eens. Daar leer je van.

Verder raad ik ook aan om te mailen via SMTP en niet via mail(). Deze functie is lastig tot niet te debuggen.

Ikzelf gebruik PHPmailer. Het is zeker de moeite om daar naar te kijken
Gewijzigd op 18/07/2022 16:43:46 door - Ariën -
 
Johannes davidian

johannes davidian

18/07/2022 16:50:28
Quote Anchor link
dank u wel,
ik ga proberen.
ik ga in google informatie zoeken over SMTP en phpmailer.
 
- Ariën  -
Beheerder

- Ariën -

18/07/2022 19:17:30
Quote Anchor link
Oke, succes!
 
Johannes davidian

johannes davidian

18/07/2022 19:19:44
Quote Anchor link
ik heb deze code in regel 62 boven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
</php
// Message content
        $content = "Contact form\n";
        $content .= "Name: " .$name_sender. "\n";
        $content .= "Email: " .$email_sender. "\n";
        $content .= "Phone: " .$phone. "\n";
        $content .= $content. "\n\n";
?>



veranderd naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
// Message content
      
        $content .= "". "\n\n";


1=ik krijg nu de inhoud van email ook voordat verandering ik krijgte niet inhoud van email.
deze probleem is opgelost.

2- als ik echo name ,email etc wegdoen in html dan zou als iemand een veld vergeten om in te vullenn dan hij of zij moet van begin beginnen om alles nog een keer in te vullen. dus de echo functie helpt om ingevulde velden niet nog een keer invullen.
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
<html>
<fieldset>

<input placeholder="Your name" type="text" name="name_sender" value="<?php echo $name_sender;?>">

<span class="error">* <?php echo $nameErr; ?></span>
</fieldset>

<fieldset>

input placeholder="Your Email Address" type="text" name="email_sender" value="<?php echo $email_sender;?>">
 
<span class="error">* <?php echo $emailErr; ?></span>
</fieldset>

<fieldset>
<input placeholder="Your phone number" type="text" name="phone" value="<?php echo $phone;?>">

<span class="error">* <?php echo $phoneErr; ?></span>
</fieldset>

<fieldset>
<textarea placeholder="Type your message here.." type="text" name="content"><?php echo $content;?></textarea>
<span class="error">* <?php echo $contentErr; ?></span>

</html>


dus de echo functie kan niet uit doen .

ik moet na klikken van submit button alle velden leeg laten maken met javascript event listener code .
of met php ?
ik weet niet of dat is ook mogelijk met php?
3- ik zie dat alle in gevulde namen adresen etc blijft in de velden als auto aanvulling .
deze moet ook leeg gemaakt worden nadat iemand heeft verlaten contact-form.
ik weet niet of als ik gebruiken event listener na de submit button zou ook deze auto aanvulling leeg gemaakt worden
iedere idea is welkom
dank u wel



Toevoeging op 18/07/2022 19:29:24:

ik herhaal nog een keer .
alles is nu werkt goed tuurlijk na de form werkt perfect dan ik moet voor beveiliging denken.
de probleem is nu na submit button geklikt is en email is verzonden met succes dan moet alle velden schoon gemaakt worden.
ik zie dat deze kan waar maken met event listener js code.
2-ik zie ook in mij contact form de ingevulde velden met namen emailen etc blijven in de velden als auto aanvulling.
die moet ook schoon gemaakt worden .ik weet niet mischien nadat ik heb met js event listener code nadat op button geklikt is alle velden schoon maken mischien wordt deze probleem ook opgelost

ik wil weten nu moet ik met eventlistener nadat geklikt is on submit button de gevulde velden schoon maken of het kan ook met php ?
 
- Ariën  -
Beheerder

- Ariën -

18/07/2022 19:31:42
Quote Anchor link
Na het versturen van je formulier lijkt het mij interessanter om een melding te tonen waarin staat dat het formulier correct verstuurd is. Of een bericht als het mislukt is vanwege een technisch probleem, zoals een fout in de mailfunctie.
 
Johannes davidian

johannes davidian

18/07/2022 19:46:10
Quote Anchor link
dank u wel ,
dat komt later ik moet eerst deze probleem oplossen.
ik zie dat kan met JS event listener.
ik weet niet of dat is ook mogelijk met php?
 
- Ariën  -
Beheerder

- Ariën -

18/07/2022 19:49:25
Quote Anchor link
Gewoon in PHP controleren of er een POST-request heeft plaatsgevonden. Dan voer je de validatie uit, en als de validatie met succes gepasseerd is geef je een net bericht.
Gewijzigd op 18/07/2022 19:49:42 door - Ariën -
 



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.