Volledige versie bekijken : Vraag over PHP, contactform en Apache
Chess
%Europe/Berlin %668 %2007, 17:02
Hoi,
Ik ben best een newbee op het gebied van PHP maar het is me gelukt een werkende PHP contactform in mn html te pleuren. :)
Nou heb ik het opgeslagen als contactform.php in mn apache directory. Dus als ik naar http://localhost ga zie ik daar mijn contacform tussen staat werkend en al.
Maar als ik nou een bericht wil versturen zeg ie dat het bericht succesvol verzonden is. Helaas krijg ik niks te zien in mn inbox :(
Dus nou mijn vraag: Staat apache ook online? Of moet ik eerst mn website in de ftp uploaden voordat ik kan zien of het werkt? En is er een mogelijkheid om het toch te testen via Apache?
Bedankt!
Bargok
%Europe/Berlin %687 %2007, 17:30
Heb je een smtp client geinstalleerd staan, of een werkende email class?
Chess
%Europe/Berlin %725 %2007, 18:24
Nope, gewoon een werkende email class.
Zal ik hier anders ff het script posten?
brossiekoppie
%Europe/Berlin %832 %2007, 20:58
Dat lijkt me wel logisch ja. Ik veronderstel dat daar de fout in zit.
gbolssens
%Europe/Berlin %904 %2007, 22:42
je hebt inderdaad een SMTP service nodig die je mail verstuurt. Met ini_set() kan je de smtp server instellen. Op jouwdomein.nl zal dat 9 kansen op 10 "mail.jouwdomein.nl" of "smtp.jouwdomein.nl" zijn. Op mijn werk heb ik een intranet geschreven dat ook met mailnotificatie werkt en daar stel ik de smtp in op het IP adres van onze eigen MS-Exchange server (in dat geval moet je wel op die exchange server instellen dat je webserver toelating heeft om mail te sturen via hem. Heb ik lang op moeten zoeken eer ik er achter was dat ik daarom geen mail buiten kreeg).
greetz,
GB
voskuh
%Europe/Berlin %922 %2007, 23:07
je hebt inderdaad een SMTP service nodig die je mail verstuurt. Met ini_set() kan je de smtp server instellen. Op jouwdomein.nl zal dat 9 kansen op 10 "mail.jouwdomein.nl" of "smtp.jouwdomein.nl" zijn. Op mijn werk heb ik een intranet geschreven dat ook met mailnotificatie werkt en daar stel ik de smtp in op het IP adres van onze eigen MS-Exchange server (in dat geval moet je wel op die exchange server instellen dat je webserver toelating heeft om mail te sturen via hem. Heb ik lang op moeten zoeken eer ik er achter was dat ik daarom geen mail buiten kreeg).
greetz,
GB
Hij maakt gebruik van een class...
Chess
%Europe/Berlin %602 %2007, 15:27
@gbolssens: toch bedankt voor de uitleg :)
Hier is het script:
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
if (!empty($_POST['naam']) && !empty($_POST['email']) && !empty($_POST['bericht']))
{
$headers = "From: " .addslashes(htmlspecialchars($_POST['naam'])). " <" .addslashes(htmlspecialchars($_POST['email'])). ">\n";
$headers .= "Content-Type: text/html;charset=iso-8859-1";
$naar = "fynn14@hotmail.com";
$onderwerp = "MoJo's bericht";
$bericht = "<html>\n";
$bericht .= "<head>\n";
$bericht .= "<title>Contactformulier</title>\n";
$bericht .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n";
$bericht .= "<style>\n";
$bericht .= "table,body\n";
$bericht .= "{\n";
$bericht .= " font-size: 11px;\n";
$bericht .= " font-family: Helvetica, Arial;\n";
$bericht .= "}\n";
$bericht .= "</style>\n";
$bericht .= "</head>\n";
$bericht .= "<body>\n";
$bericht .= nl2br(htmlspecialchars(stripslashes($_POST['bericht'])));
$bericht .= "</body>\n";
$bericht .= "</html>\n";
mail($naar, $onderwerp, $bericht, $headers);
?>
<html>
<head><title></title></head>
<body>
<link rel="stylesheet" type="text/css"
href="stylesheet.css" />
<div id="wrapper">
<div id="header"></div>
<div id="container">
<div id="container2">
<div id="left">
<div id="navigation">
<h1 class="black">MoJo's</h1>
<a href="index.html" class="blue"> Home</a>
<a href="afslanken.html" class="green"> Afslanken</a>
<a href="nagels.html" class="pink"> Nagels</a>
<a href="zonnebanken.html" class="yellow"> Zonnebanken</a>
<a href="kinderfeestjes.html" class="yellow">Kinderfeestjes</a>
<a href="contact.html" class="black"> Contact</a>
</div> <!-- einde DIV navigation -->
</div> <!-- einde DIV left -->
<div id="middlecontact"><p>Het bericht is succesvol verzonden!</P>
</div>
<div id="right"> </div>
<div class="clearer"> </div>
</div> <!-- einde div container -->
</div> <!-- einde div container2 -->
<div id="footer">©</div>
</div> <!-- einde DIV wrapper -->
</body>
</html>
<?php
}
else
{
?>
<html>
<head><title></title></head>
<body>
<link rel="stylesheet" type="text/css"
href="stylesheet.css" />
<div id="wrapper">
<div id="header"></div>
<div id="container">
<div id="container2">
<div id="left">
<div id="navigation">
<h1 class="black">MoJo's</h1>
<a href="index.html" class="blue"> Home</a>
<a href="afslanken.html" class="green"> Afslanken</a>
<a href="nagels.html" class="pink"> Nagels</a>
<a href="zonnebanken.html" class="yellow"> Zonnebanken</a>
<a href="kinderfeestjes.html" class="yellow">Kinderfeestjes</a>
<a href="contact.html" class="black"> Contact</a>
</div> <!-- einde DIV navigation -->
</div> <!-- einde DIV left -->
<div id="middlecontact"><p><b>Oops! Je bent iets vergeten in te vullen!</b><br><br>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table width="750">
<tr><td width="80">Naam</td> <td><input type="text" name="naam"></td></tr>
<tr><td width="80">E-mailadres</td> <td> <input type="text" name="email"></td></tr>
<tr><td width="80">Bericht:</td> <td><textarea cols="30" rows="10" name="bericht"></textarea></td></tr>
<tr><td width="80"></td> <td><input type="submit" value="Verzenden"></td></tr>
</form></P>
</div>
<div id="right"> </div>
<div class="clearer"> </div>
</div> <!-- einde div container -->
</div> <!-- einde div container2 -->
<div id="footer">©</div>
</div> <!-- einde DIV wrapper -->
</body>
</html>
<?php
}
}
else
{
?>
<html>
<head><title></title></head>
<body>
<link rel="stylesheet" type="text/css"
href="stylesheet.css" />
<div id="wrapper">
<div id="header"></div>
<div id="container">
<div id="container2">
<div id="left">
<div id="navigation">
<h1 class="black">MoJo's</h1>
<a href="index.html" class="blue"> Home</a>
<a href="afslanken.html" class="green"> Afslanken</a>
<a href="nagels.html" class="pink"> Nagels</a>
<a href="zonnebanken.html" class="yellow"> Zonnebanken</a>
<a href="kinderfeestjes.html" class="yellow">Kinderfeestjes</a>
<a href="contact.html" class="black"> Contact</a>
</div> <!-- einde DIV navigation -->
</div> <!-- einde DIV left -->
<div id="middlecontact"><p><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table width="750">
<tr><td width="80">Naam</td> <td><input type="text" name="naam"></td></tr>
<tr><td width="80">E-mailadres</td> <td> <input type="text" name="email"></td></tr>
<tr><td width="80">Bericht:</td> <td><textarea cols="30" rows="10" name="bericht"></textarea></td></tr>
<tr><td width="80"></td> <td><input type="submit" value="Verzenden"></td></tr>
</form>
</table>
</div>
<div id="right"> </div>
<div class="clearer"> </div>
</div> <!-- einde div container -->
</div> <!-- einde div container2 -->
<div id="footer">©</div>
</div> <!-- einde DIV wrapper -->
</body>
</html>
<?php
}
?>
Misschien dat hier een fout in zit.
Chess
%Europe/Berlin %680 %2007, 17:20
Hee het script doet het in ieder geval wel online. Het probleem is dus dat apache geen email verstuurd.
Enfin, nou heb ik nog een probleem :S.
Als ik nou mn navigatie link naar "contact.php" dan vraagt de browser of hij (of zij?) contact.php moet openen i.p.v. de pagina gewoon weer te geven. Hoe kan ik dit verhelpen?
Ik zal wel iets fundamenteels fout doen maar op google kon ik niks vinden. :(
gbolssens
%Europe/Berlin %682 %2007, 17:22
zou het mss kunnen dat je server die pagina niet pars't omdat je geen <?php ?> tags hebt gebruikt rondom je script?
grtz,
GB
mech7
%Europe/Berlin %700 %2007, 17:48
Apache kan geen mail versturen hiervoor moet je een mailserver installeren.. Veel normale ISP's blokkeren mail poorten tegenwoordig vanwege spam :p
Hee het script doet het in ieder geval wel online. Het probleem is dus dat apache geen email verstuurd.
Enfin, nou heb ik nog een probleem :S.
Als ik nou mn navigatie link naar "contact.php" dan vraagt de browser of hij (of zij?) contact.php moet openen i.p.v. de pagina gewoon weer te geven. Hoe kan ik dit verhelpen?
Ik zal wel iets fundamenteels fout doen maar op google kon ik niks vinden. :(
Chess
%Europe/Berlin %711 %2007, 18:04
@ gbolssens
Hierboven staat mijn script. Ik zie wel dat het script zo eindigt:
<?php
}
?>
Zit hier misschien een fout in? Ik ben niet zo goed in php, heb het script ook gedownload. Moet het niet gewoon met ?> eindigen?
@mech7: Aha, another problem solved :)
mech7
%Europe/Berlin %876 %2007, 22:02
@ gbolssens
Hierboven staat mijn script. Ik zie wel dat het script zo eindigt:
<?php
}
?>
Zit hier misschien een fout in? Ik ben niet zo goed in php, heb het script ook gedownload. Moet het niet gewoon met ?> eindigen?
@mech7: Aha, another problem solved :)
Het is een goede gewoonte om de ?> op het einde weg te laten bij puur php files, zodat er niet per ongeluk whitespace achteraan het document kan komen. Dit kan bv problemen geven met headers versturen :)
gbolssens
%Europe/Berlin %373 %2007, 09:57
Het is een goede gewoonte om de ?> op het einde weg te laten bij puur php files, zodat er niet per ongeluk whitespace achteraan het document kan komen. Dit kan bv problemen geven met headers versturen :)
@mech7: wist niet dat dit een probleem kon vormen.
@chess: die } tussen <?php en ?> is daar gezet om een if of zo af te sluiten na een stukje platte HTML.
voorbeeldje:
<?php
if($taal == "NL")
{
?>
<!-- hiertussen je HTML en daarna tussen <?php ?>
tags die sluitende accolade van de if zetten, anders
krijg je een parse error -->
<?php
}
?>
Chess
%Europe/Berlin %532 %2007, 13:46
Mech7 thanks voor de tip :)
Maar het script is gewoon goed toch? Als ik de contact.php rechtstreeks uitvoer via ftp kan ik gewoon berichten sturen (die ook aankomen) maar als ik bijvoorbeeld index.html naar contact.php wil linken krijg ik die rare melding :S
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.