formuliertje verzenden

Status
Niet open voor verdere reacties.

jorisvho

Gebruiker
Lid geworden
6 mrt 2011
Berichten
28
Ik heb een formuliertje gemaakt op m'n website met deze code:
HTML:
<form method="get" id="nieuwsbrief" action="php_mail/nieuwsbrief.php">
                                                <input type="hidden" name="onderwerp" value="inschrijving nieuwsbrief" />
                                                <input type="text" value="e-mail adres" name="email" id="s" style="width: 95%;" />
                                                <p> </p>
                                                <span class="button-wrapper">
                                                	<span class="l"> </span>
                                                	<span class="r"> </span>
                                                    <input class="button" type="submit" name="inschrijven" value="Inschrijven" />
                                                </span>
                                                
                                                </form>

Nu wil ik dat er met php de inhoud van dat formulier naar mij toe wordt gestuurd. Daarvoor heb ik een php bestand in een andere map geplaatst (php_mail). De naam van het bestand is nieuwsbrief.php en de inhoud is het volgende:
PHP:
<?php 
if (IsSet($_POST['submit'])) 
{ 
    $naam_ontvanger = $_POST['Joris']; 
    $email_ontvanger = $_POST['colorsoft@live.nl']; 

    $naam_verzender = $_POST['Color Soft']; 
    $email = $_POST['email']; 

    $onderwerp = $_POST['onderwerp']; 

    $headers = "From: ".$naam_verzender." <".$email_ontvanger.">\r\n"; 

    $bericht = " 
Beste ".$naam_ontvanger.", 

Een nieuw iemand heeft zich aangemeld op de nieuwsbrief.
Het gebruikte e-mail adres is ".$email." . 

mvg, 
Color Soft 
    "; 

    mail($email_ontvanger, $onderwerp, $bericht, $headers); 

} 
else 
{ 
    ?>

Als ik dan het formulier ga testen doet ie het niet. Ik krijg namelijk geen e-mailtje in mijn mailbox. Ook zou ik graag willen dat degene die het formulier invult, terugkeert naar de vorige pagina.

Wie weet hoe de code dan moet worden?
 
De fout:
PHP:
if (IsSet($_POST['submit']))

'submit' moet je veranderen naar 'inschrijven', omdat dat de naam van je button is.
 
Ik heb submit veranderd in inschrijven, maar helaas krijg ik nog steeds geen e-mailtje :S
 
Wat moet dit voorstellen/
$naam_ontvanger = $_POST['Joris'];
$email_ontvanger = $_POST['colorsoft@live.nl'];

$naam_verzender = $_POST['Color Soft'];
Ik kan in je form niet terug lezen dat je die verzend.
ik denk dat je daarmee dit bedoeld
$naam_ontvanger = 'Joris';
$email_ontvanger = 'colorsoft@live.nl';

$naam_verzender = 'Color Soft';
$_POST is een array waarin de gegevens staan die je verstuurd met een form
Het is geen holder om een string in te stoppen.
$_POST['email'] bestaat wel in de array na het verzenden omdat in je form een input staat met de naam 'email'.
php maakt dan in de $_POST array een key "email" aan en stop daar de waarde in.
 
Helaas krijg ik nog steeds geen e-mailtje binnen als ik het formulier invul.

De huidige code is als volgt:
PHP:
<?php 
if (IsSet($_POST['inschrijven'])) 
{ 
    $naam_ontvanger = 'Joris'; 
    $email_ontvanger = 'colorsoft@live.nl'; 

    $naam_verzender = 'Color Soft'; 
    $email = $_POST['email']; 

    $onderwerp = $_POST['onderwerp']; 

    $headers = "From: ".$naam_verzender." <".$email_ontvanger.">\r\n"; 

    $bericht = " 
Beste ".$naam_ontvanger.", 

Een nieuw iemand heeft zich aangemeld op de nieuwsbrief.
Het gebruikte e-mail adres is ".$email." . 

mvg, 
Color Soft 
    "; 

    mail($email_ontvanger, $onderwerp, $bericht, $headers); 

} 
else 
{ }
    ?>
 
Het is niet Isset maar gewoon lowercase isset.

voor je de isset verander, zet eens echo 'hello world';
tussen de accolades na de else statement.

Krijg je ook een fout melding op je scherm?
 
Dat krijg ik ook, dat is niet zo mooi :confused:.
Wat kan ik er aan doen, zodat ik wel de e-mail binnen krijg en niet dat ik 'hello world' of iets anders krijg?
 
Wat is de foutmelding? Daarin verteld php je ongeveer wat er waar fout gaat.

Je kreeg nu wel hello world op je scherm?

verander Isset eens in isset!
 
Ik krijg idd hello world op mn scherm, dat betekent dat ie nu niet het e-mailtje stuurt. En hoe kan ik dit dan verhelpen?
 
verander in je form eens dit
<form method="get" id="nieuwsbrief" action="php_mail/nieuwsbrief.php">
naar dit
<form method="post" id="nieuwsbrief" action="php_mail/nieuwsbrief.php">

Jou form verstuurde de gegevens via de url
bv. www.blabla.nl?email=ik@ergens.nl&onderwerp=test
Dat is om dat je de GET methode gebruikt. Kan ook werken, maar dan moet je de gegevens uit je url halen
en dat doe je met $_GET

$_POST slaat de gegevens tijdelijk op op de server en is niet zichtbaar in de url

Je moet zorgen dat je de gegevens ophaald op de manier zoals de form ze verzend.
 
Wat dacht je van de methode controleren in plaats van een veld? ;)

PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
  print_r($_POST);
} else {
?>
<form action="" method="post">
Naam: <input type="text" value="naam" name="nameField" /><br />
<input type="submit" value="Verstuur!" name="s" />
</form>
<?php 
}
?>
 
Dat iets kan betekent nog niet dat het goed is ;)

De request-method controleren is de enige optie die je hoort te gebruiken.
 
In dit geval is dat zelf de enige methode die zeker werkt. Er is geen enkele garantie dat $_POST['inschrijven'] wordt meegestuurd (niet alle browsers sturen in alle gevallen de naam van de knop mee).
 
ik persoonliojk zou ook controleren of een bepaalde field is verstuurt, email ofzo.
Aangezien je die altijd nodig hebt
if(isset($_POST['email'] && !empty($_POST['email']) )
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan