Hulp nodig bij schrijven php

Status
Niet open voor verdere reacties.

lusinkm

Gebruiker
Lid geworden
19 sep 2007
Berichten
79
Hallo,

Ik wil een contactformulier verzenden met behulp van php. Het probleem is dat ik de logica nog niet echt zie. Ik word ook niet veel wijzer van de vele tutorials die ik tot nu toe gevonden heb (er zijn er heel veel en bijna allemaal anders geschreven), dus vandaar dat ik wil proberen om het met behulp van dit forum te doen.

Dit is het formulier dat ik heb gemaakt.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Contact</title>

</head>

<body>

<form action="../scripts/mailscript.php" method="post">

<p>
Bedrijfsnaam:<br />
<input type="text" name="bedrijfsnaam" />
</p>

<p>
Contactpersoon:<br />
<input type="text" name="contactpersoon" />
</p>

<p>
Tel:<br />
<input type="text" name="tel"  />
</p>

<p>
E-mail:<br />
<input type="text" name="email" />
</p>

<p>
Bericht:<br />
<textarea rows="6" cols="40" name="bericht"></textarea>
</p>

<p>
<input type="submit" name="verzenden" value="Verzenden" />

</form>

</body>

</html>

En hieronder de php code.
PHP:
<?php
$to = "lusinkm@hotmail.com";
$subject = "Mail van de website";
$message = "whatever"

if {
(isset($_POST["bedrijfsnaam"]) || (isset($_POST["contactpersoon"]) || (isset($_POST["tel"]) || 
(isset($_POST["email"]) == (isset($_POST[""]);
}

echo "U bent een veld vergeten in te vullen";

else {
mail($to, $subject, $message);
}

echo "Uw bericht is verzonden";

?>
Mijn vraag is nu dus;
Wat moet ik doen om dit verzonden te krijgen?
De enige controle die ik nu erin wil hebben is of er iets is ingevuld in alle velden behalve bericht. De rest komt later wel als ik dit snap.

Ik weet dat het geen simpele vraag is, maar ik hoop dat er toch iemand is die de tijd en het geduld heeft om hiermee aan de slag te gaan.

Groet,
Mark
 
Laatst bewerkt door een moderator:
zo ver ik dit zie is het wel goed maar je vergeet aan te geven wat hij moet gaan verzenden.

Grappig, ik had als eerste reactie verwacht dat er niks van het script klopt.:)

Maar ik vergeet dus aan te geven wat er verzonden moet worden. Moet ik dat bij ELSE aangeven? Dat als (if) alle velden ingevuld zijn(behalve bericht), dat else ervoor moet gaan zorgen dat de mail verstuurd wordt, en dat echo op het scherm komt.


En is het onderstaande ook goed of is dat weer iets anders?
PHP:
<?php
$to = "lusinkm@hotmail.com";
$subject = "Mail van de website";
$message = "whatever"

if {
(isset($_POST["bedrijfsnaam"]) && isset($_POST["contactpersoon"]) && isset($_POST["tel"]) && 
 isset($_POST["email"]) == "";

echo "U bent een veld vergeten in te vullen";
}

else {
mail($to, $subject, $message);

echo "Uw bericht is verzonden";
}

?>
 
Laatst bewerkt door een moderator:
Ik ben niet de grootste held in PHP maar je moet aangeven in het php gedeelte wat je wilt verzenden uit het formulier.

in het stukje message in het php gedeelte komt dat dus te staan.

$message= '
Bedrijfsnaam
tel
email

enz.

ik kan je wel een voorbeeld geven van hoe ik het opgelost heb
 
Alle hulp is welkom....En ik zou graag willen zien hou jij dit opgelost hebt. Maar voordat alles voorgezegd wordt, heb ik het scriptje op de volgende aangepast. Mischien dat het klopt, maar ik verwacht van niet.
PHP:
<?php
$to = "lusinkm@hotmail.com";
$subject = "Mail van de website";
$message =  $_POST["bedrijfsnaam"], 
	    $_POST["contactpersoon"],
                    $_POST["tel"]

if {
(isset($_POST["bedrijfsnaam"]) && isset($_POST["contactpersoon"]) && isset($_POST["tel"]) && 
 isset($_POST["email"]) == "";

echo "U bent een veld vergeten in te vullen";
}

else {
mail($to, $subject, $message);

echo "Uw bericht is verzonden";
}

?>
En nog bedankt voor de hulp die je geeft, expert of niet.:)
 
Laatst bewerkt door een moderator:
test maar eventjes of het werkt je zit volgens mij wel op de goede weg, mijn info komt zo ff een gebruiker helpen :p
 
Ik heb het getest, maar helaas werkt het niet..Als ik het formulier invul en verstuur dan komt er niets aan in de mailbox(ook niet in de spambox). En als ik het formulier invul en verstuur(ingevuld of niet), dan kom ik op mailscript.php (een leeg scherm dus).

Ik wacht je reactie wel even af.
 
Ik heb 2 verschillende pagina`s,

op de eerste pagina staat het formulier, en op de 2de pagina staat de verzend informatie
ik weet niet helemaal hoe het werkt maar op een of andere manier laat hij automatisch de pagina submit.php als er op verzenden gedrukt word.

in de pagina submit staat het volgende:

PHP:
<style type="text/css">
<!--
body {
	background-color: trancparent;
}
body,td,th {
	color: #FFCC00;
}
-->
</style><?php

$to ="tjeerd@bmeel.nl";
$subject = "Bericht aanmelding";  



$team = $_POST['team'];
$geslacht = $_POST['geslacht'];
$club = $_POST['club'];
$contactpersoon = $_POST['contactpersoon'];
$straatnaam = $_POST['straatnaam'];
$postcode = $_POST['postcode'];
$plaatsnaam = $_POST['plaats'];
$telefoonnummer = $_POST['telefoon'];
$email = $_POST['email'];
$aantalpersonen = $_POST['personen'];

$message = "
team: $team
geslacht: $geslacht
club: $club
contactpersoon: $contactpersoon
straatnaam: $straatnaam
postcode: $postcode
plaatsnaam: $plaats
telefoonnummer: $telefoon
email: $email
aantalpersonen: $personen

";


function checkmail($email)  // volgens mij werkt dit niet maar nvm
{
    // explode het e-mail adres op een @
    $email_host = explode("@", $mail); 
    // pak alles na de @
    $email_host = $email_host['1'];
    // zet een var met de (eventuele) DNS van de domein
    $email_resolved = gethostbyname($email_host); 

    // kijk of er een DNS aan zit en of alles voor en na het e-mail adres klopt
    if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail)) 
        $valid = 1; 

    // wanneer het geldig is, is $valid = 1, zo niet, dan geeft hij geen result (NULL)
    return $valid; 
	
} 

if (empty($_POST['team'])) {
  echo "geen teamnaam in gevoerd";
} else {
  if(!mail ($to, $subject, $message)) {
    die("kon mail niet verzenden");
  } else {
    echo "Bedankt voor uw aanmelding"; //bedankje
  }
}
?>

zoals je misschien door hebt heb ik de volgende velden op mijn inschrijf (mail) formulier:

team:
geslacht:
club
contactpersoon
straatnaam
postcode:
plaatsnaam
telefoonnummer
email
aantalpersonen.

nu heb jij net aangegeven dat je de pagina mailscript.php ging, dus probeer eens alle php info die je op je pagina hebt staan een op die pagina neer te zetten.
 
Laatst bewerkt:
Er klopt inderdaad niets van het script :)

PHP:
<?php
$to = "lusinkm@hotmail.com";
$subject = "Mail van de website";
$message = "whatever" // Hier hoort een ; achter

if { // Hier hoort geen {
(isset($_POST["bedrijfsnaam"]) || (isset($_POST["contactpersoon"]) || (isset($_POST["tel"]) || 
(isset($_POST["email"]) == (isset($_POST[""]);
// Vergelijking die niet klopt en hier hoort ook geen ;
// Ik gok dat je wilt kijken of de velden leeg zijn.
// Maar wat die laatste vergelijking moet doen zou ik niet weten...
}
// Dit wil je alleen weergeven wanneer er iets niet klopt
// Dit hoort dus binnen het bovenstaande IF-statement
echo "U bent een veld vergeten in te vullen";

else {
mail($to, $subject, $message);
}

echo "Uw bericht is verzonden";

?>
Goed tot zover jouw script.

Zo wil je hem eigenlijk hebben:
PHP:
<?php
$to = "lusinkm@hotmail.com";
$subject = "Mail van de website";
$message = "whatever";

if (empty($_POST['bedrijfsnaam']) || empty($_POST['contactpersoon']) || empty($_POST['tel']) || empty($_POST['email'])) {
   echo "U bent een veld vergeten in te vullen";
} else {
  mail($to, $subject, $message);
}

echo "Uw bericht is verzonden";

?>
 
Ik weet niet naar wiens code je hebt gekeken maar die van mij lijkt me niet...

Zou je daarnaast zo vriendelijk willen zijn om
PHP:
...
-tags om je code te zetten.

edit: hmm waarschijnlijk iets te vroeg gereageerd aangezien je je bericht al weer hebt verwijderd.
 
Ik zal de code eens aanpassen zoals Tha Devil dat deed.
De $message laat ik zoals Donnows dit heeft gedaan.
Ik ga hier even mee spelen en kijken wat er allemaal gebeurt (of niet),
en zal z.s.m. laten weten of ik het aan de praat heb gekregen.

Bedankt voor de duwtjes in de goede richting!:)
 
Ik weet niet naar wiens code je hebt gekeken maar die van mij lijkt me niet...

Zou je daarnaast zo vriendelijk willen zijn om
PHP:
...
-tags om je code te zetten.

edit: hmm waarschijnlijk iets te vroeg gereageerd aangezien je je bericht al weer hebt verwijderd.

Je hebt niet te vroeg gereageerd, want ik verwijderde dit bericht om een andere reden, en wist niet dat dit problemen kon opleveren. Ik zal voortaan die dingetjes erom zetten.
Sorry hiervoor
 
Het werkt nog niet helemaal, maar ik ben wel weer een stapje verder:)
Toen ik code van Tha Devil gebruikte, gebeurde het volgende.

Toen ik het formulier ingevuld verstuurde, kreeg ik netjes de melding "uw bericht is verzonden".
Als ik een veld oversloeg en daarna het formulier verstuurde, kreeg ik de melding "U bent een veld vergeten in te vullenuw bericht is verzonden.

In beide gevallen geen mail gekregen. De dubbele melding heb ik weggekregen door de accolade te verplaatsen die voor het echo commando "uw bericht is verzonden", stond.
Deze moest erachter(denk ik want het werkt nu wel)

Maar nog geen mail. Komt dit door $message ? Donnows heeft dat in zijn script anders, en bij hem werkt het wel.

Mijn code ziet er nu als volgt uit

[<?php ]
$to = "lusinkm@hotmail.com";
$subject = "Mail van de website";
$message = "whatever";

if (empty($_POST['bedrijfsnaam']) || empty($_POST['contactpersoon']) || empty($_POST['tel']) || empty($_POST['email'])) {
echo "U bent een veld vergeten in te vullen";
} else {
mail($to, $subject, $message);

echo "Uw bericht is verzonden";
}

[?> ]
@Tha Devil. Ik hoop dat ik de haakjes goed geplaatst heb.
Mark
 
Laatst bewerkt:
Ehmm je had volgensmij gewoon een bericht moeten krijgen met whatever

en ik zie al wat er fout gaat moment ik edit het zo

ik heb het zo
PHP:
if(!mail ($to, $subject, $message)) { 
    die("kon mail niet verzenden"); 
  } else { 
    echo "Bedankt voor uw aanmelding"; //bedankje 
  } 
} 
?>

en jij

PHP:
[<?php ]

mail($to, $subject, $message); 

echo "Uw bericht is verzonden"; 
}

[?> ]


kan je eens proberen het laatste stukje van mij in jouwn code zetten kijken of het dan werkt? (sla je eige code eerset wl eventjes op als back up)
 
Laatst bewerkt:
Als ik nu het formulier invul en verstuur dan krijg ik de melding "kon mail niet verzenden"

php code
[<?php]
$to = "lusinkm@hotmail.com";
$subject = "Mail van de website";
$message = "whatever";


if (empty($_POST['bedrijfsnaam']) || empty($_POST['contactpersoon']) || empty($_POST['tel']) || empty($_POST['email'])) {
echo "U bent een veld vergeten in te vullen";
} else {
if(!mail ($to, $subject, $message)) {
die("kon mail niet verzenden");
} else {
echo "Bedankt voor uw aanmelding"; //bedankje
}
}
[?>]
Ik neem aan dat je dit zo bedoelde?
 
ik bedoelde het zo
PHP:
<?php
$to = "lusinkm@hotmail.com";
$subject = "Mail van de website";
$message = "whatever";


if (empty($_POST['bedrijfsnaam']) || empty($_POST['contactpersoon']) || empty($_POST['tel']) || empty($_POST['email'])) {
echo "U bent een veld vergeten in te vullen";
} else { 
if(!mail ($to, $subject, $message)) { 
    die("kon mail niet verzenden"); 
  } else { 
    echo "Bedankt voor uw aanmelding"; //bedankje 
  } 
} 
?>
 
Oke, is aangepast met copy en paste. Ik krijg echter nog steeds de melding "kon mail niet verzenden".


PHP:
<?php 
$to = "lusinkm@hotmail.com"; 
$subject = "Mail van de website"; 
$message = "whatever"; 


if (empty($_POST['bedrijfsnaam']) || empty($_POST['contactpersoon']) || empty($_POST['tel']) || empty($_POST['email'])) { 
echo "U bent een veld vergeten in te vullen"; 
} else {  
if(!mail ($to, $subject, $message)) {  
    die("kon mail niet verzenden");  
  } else {  
    echo "Bedankt voor uw aanmelding"; //bedankje  
  }  
}  
?>

Mischien een stomme vraag, maar dat script moet toch tussen de body tags in een html doc geplaatst worden, of maakt dat niet uit>
 
Laatst bewerkt:
Ik begin het vermoedden te krijgen dat het ook aan de server kan liggen. Als ik de bestanden op een andere server zet, en dan het formulier invul en verstuur, dan krijg ik de melding "bedankt voor uw aanmelding" (maar nog geen mail)

Hier is de info van de servers;
http://www.lusinkwebdesign.nl/scripts/info.php
Op deze server krijg ik "bedankt voor uw aanmelding"


http://www.ce2008.nl/scripts/info.php
En hier "kon mail niet verzenden" - En hier moet het formulier uiteindelijk op komen

??? Ik durf haast te wedden dat het aan door windows komt!
 
Goed, het is dus gelukt. Ik heb het op z'n sesamstraats gedaan. simpel formulier

HTML:
<html>
<head>
<title>test</title>
</head>
<body>
<form action="scripts/mailtest.php" method="post">
Naam:<br>
<input type="text" name="naam" /><br>
E-mail:<br>
<input type="text" name="email" /><br>
<input type="submit" name="submit" />
</form>
</body>
</html>

en dan de code.

PHP:
<?php
$to = "mail@lusinkwebdesign.nl";
$subject = "testmail";
$naam = $_POST['naam'];
$email = $_POST['email'];

$message = "
name: $naam
email:  $email
";
mail ($to, $subject, $message);
?>

het lag dus gewoon aan het email adres. om de een of andere reden doet ie het niet met dat achterlijke hotmail adres..Tjaa, zo blijf je klooien he.

Waarom het niet met hotmail werkt snap ik niet. ik had ergens op dit forum gelezen dat sites zoals hyves bv. ook mailen met php, dus waarom komen die wel aan?
Maar goed, ik kan weer verder prutsen met iets dat wel werkt. Als iemand nog iets weet over het hotmail gebeuren, laat maar weten. anders zet ik deze vraag op opgelost.

In ieder geval bedankt voor de hulp
Groet,
Mark
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan