simple formmailer - beginner's mistake

A

Anonymous

Guest
The else-message won't appear even when the email-field is empty.

<form action="<?php echo $PHP_SELF; ?>" method="post">
Bitte geben Sie Ihren Namen ein: <input type="text" name="Mail"><br><br>
Ihre Nachricht<br>
<textarea name="botschaft" cols="50" rows="5" wrap="soft">
</textarea><br>
<input type="submit" value="Mail abschicken">
</form>
<?php
if (isset($Mail) && $Mail != "") {
if (mail("don_martin@hotmail.com", "Antwort auf Ihre Anfrage!", "$botschaft", "From: $Mail")) {
echo "<p>Danke! Ihre Nachricht wurde weitergeleitet!</p>\n";
}
else {
echo "<p>Leider gab es einen Sendefehler!</p>\n";
}
}
?>

miss marple
 
Unfortunaly I dont know exactly what to do here. I see some things that I would have done differently, but I dont think it will make it work. This is just what I use for my coding standards.

Your Line:
<form action="<?php echo $PHP_SELF; ?>" method="post">

What I would have done:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

Your Line:
if (mail("don_martin@hotmail.com", "Antwort auf Ihre Anfrage!", "$botschaft", "From: $Mail"))

What I would have done:
if (mail("don_martin@hotmail.com", "Antwort auf Ihre Anfrage!", $botschaft, "From: " . $Mail))

---
Now keep in mind that I dont know how my techniques will work in older versions of PHP, and I dont know how important compactibility is. My only other suggestion is debugging. I have not found any good debuggers for PHP except Zend (but it comes at a price of 250). So just output your variable values and see what they are compared to what they are suppose to be. Another recommendation would be to set your error_reporting value to E_ALL (This will display all errors and warnings).

I dont see any syntax errors, so im sorry that I could not be more help. Best of luck.

Will
 
Miss_Marple said:
The else-message won't appear even when the email-field is empty.

<form action="<?php echo $PHP_SELF; ?>" method="post">
Bitte geben Sie Ihren Namen ein: <input type="text" name="Mail"><br><br>
Ihre Nachricht<br>
<textarea name="botschaft" cols="50" rows="5" wrap="soft">
</textarea><br>
<input type="submit" value="Mail abschicken">
</form>
<?php
if (isset($Mail) && $Mail != "") {
if (mail("don_martin@hotmail.com", "Antwort auf Ihre Anfrage!", "$botschaft", "From: $Mail")) {
echo "<p>Danke! Ihre Nachricht wurde weitergeleitet!</p>\n";
}
else {
echo "<p>Leider gab es einen Sendefehler!</p>\n";
}
}
?>

miss marple

Hi!
try add in your script this:
Code:
  $string = trim($Mail); before if section.
 
Your code:
Code:
<?php
if ( isset( $Mail )  &&  $Mail != "" ) {
    if ( mail( "don_martin@hotmail.com", "Antwort auf Ihre Anfrage!", "$botschaft", "From: $Mail") ) {
        echo "<p>Danke! Ihre Nachricht wurde weitergeleitet!</p>\n";
    } else {
       echo "<p>Leider gab es einen Sendefehler!</p>\n";
    }
}
?>
The else clause will only be executed if sending the mail fails, not if there is no name. It should read:
Code:
<?php
if ( isset( $Mail )  &&  $Mail != "" ) {
    if ( mail( "don_martin@hotmail.com", "Antwort auf Ihre Anfrage!", "$botschaft", "From: $Mail") ) {
        echo "<p>Danke! Ihre Nachricht wurde weitergeleitet!</p>\n";
    } else {
       echo "<p>Leider gab es einen Sendefehler!</p>\n";
    } 
} else {
    echo "<p>Sie haben keinen Namen eingetragen. Wer sind Sie überhaupt?</p>";
}
?>
 
Back
Top