problemen met een invulformulien op een website

Status
Niet open voor verdere reacties.
Ik doe alle moeite van de wereld om alles uit te voeren zoals je vraagt. Ik heb het script dat ik hierna stuur uitgevoerd maar het werkt niet: ik krijg een blanko bladzijde.
Bij mijn script krijg ik de melding dat de e-mail werd uitgevoerd wanneer alles goed is ingevuld.
 
PHP:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>send.php</title>
</head>

<body>
<?php
$EmailFrom = $_POST['EmailFrom'];
$owner = trim($_POST['owner']);
$apartment = trim($_POST['apartment']);
$block = trim($_POST['block']);
$names_friends_and_family = trim($_POST['names_friends_and_family']);
$arrival_date = trim($_POST['arrival_date']);
$departure_date = trim($_POST['departure_date']);
$comments = trim($_POST['comments']);

/// Validate
$fail ='';

$message = "<h2>Error!</h2><h4>You need to fill in the following:</h4><ul>";

if($owner == ""){$message .= "<li><b>Owner</b> Not completed!"; $fail = "Y";}

if($apartment == ""){$message .= "<li><b>Apartment</b> Not completed!"; $fail = "Y";}

if($block == ""){$message .= "<li><b>Block</b> Not completed!"; $fail = "Y";}

if($names_friends_and_family == ""){$message .= "<li><b>Names friends and family</b> Not completed!"; $fail = "Y";}

if($arrival_date == ""){$message .= "<li><b>Arrival date</b> Not completed!"; $fail = "Y";}

if($departure_date == ""){$message .= "<li><b>Departure date</b> Not completed!"; $fail = "Y";}

if (!isset($_POST) || $fail == 'Y' *) {//upgrade 2 waarom post check eerst komt is omdat deze meer zal voorkomen.
* * * * * * $message .= '</ul>';
* * * * * * include ('form.htm');// isset $_post upgrade 2 om indien de post nog niet is verstuurd het form altijd te laten tonen
* * * * * * die();
* * * * }
* * * * $EmailTo = 'mailadres@test.be';
* * * * $validationOK = true;
* * * * if (ValidateAs::isAemail($EmailFrom))
* * * * * * $validationOK = false;
* * * * if (!$validationOK) {
* * * * * * echo 'Error! E-mail was not sent. Please check your code.';
* * * * * * exit;
* * * * }
 
Ik ga het script zo even opschmucken zodat het overzichtelijker is.
 
PHP:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl">
<head>
<title>Aanmelden</title>
</head>
<body>
<p>Register your friends and family at Sansofé</p>
<?php 
if(isset($errors)) {
 echo "<p>Must complete:</p>
         <ul>";
 foreach($error as $error) {
    echo "<li>".$error."</li>";
 }
 echo "</ul>";
}
?>
<form id="FormName" action="" method="post" name="FormName">
<table border="0" cellspacing="2" cellpadding="0">
<tr><td align="left"><label for="EmailFrom">Your E-mail</label></td>
<td><input id="EmailFrom" type="text" name="EmailFrom" size="50"></td></tr>
<tr><td align="left" valign="top"><label for="owner"><font size="2">*</font> Owner</label></td>
<td valign="top"><input id="owner" name="owner" type="text" size="50" maxlength="255"></td></tr><tr>
<td align="left" valign="top"><label for="apartment">* Apartment</label></td>
<td valign="top"><input id="apartment" name="apartment" type="text" size="3" maxlength="255"></td></tr><tr>
<td align="left" valign="top"><label for="block">* Block</label></td>
<td valign="top"><input id="block" name="block" type="text" size="3" maxlength="255"></td></tr><tr>
<td align="left" valign="top"><label for="names_friends_and_family">* Names friends and family</label></td>
<td valign="top"><textarea id="names_friends_and_family" name="names_friends_and_family" rows="1" cols="90"></textarea></td></tr><tr>
<td align="left" valign="top"><label for="arrival_date">* Arrival date (DD/MM/YYYY)</label></td>
<td valign="top"><input id="arrival_date" name="arrival_date" type="text" size="25" maxlength="255"></td></tr><tr>
<td align="left" valign="top"><label for="departure_date">* Departure date (DD/MM/YYYY)</label></td>
<td valign="top"><input id="departure_date" name="departure_date" type="text" size="25" maxlength="255"></td></tr><tr>
<td align="left" valign="top"><label for="comments">Comments</label></td>
<td valign="top"><textarea id="comments" name="comments" rows="1" cols="60"></textarea></td></tr><tr>
<td align="left"></td>
<td><input type="submit" name="submitButtonName" value="Send E-mail"></td>
</tr>
</table>
</form>


<p><strong>Only</strong>when you completed all the fields
indicated with a star (*) you will receive a message that the mail has been
sent.<br>
If you cannot send this register list you can manually send an email to the webmaster
(see contacts in the menu)</p>
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
// dit wordt uitgevoerd na het drukken van de verstuur-knop. Ook wel het POST-proces genoemd

$errors = array(); // array container maken voor verzamelen van e.v.t. errors.
// error worden verzameld.
if (!filter_var($_POST['EmailFrom'], FILTER_VALIDATE_EMAIL)) {
   $errors[] = "E-mail adres is niet correct";
}
if (trim($_POST['owner')=='') {
   $errors[] = "Owner is niet ingevuld";
}
if (trim($_POST['apartment')=='') {
   $errors[] = "Appartement is niet ingevuld";
}

if(count(errors)==0) {
  // hier code voor de mail versturen! Mail functie etc... 
}
}
?>
</body>
</html>

Et voila, ongetest en tevens gestript van allemaal oude HTML 3.0 code.
Ik raad je aan om eens te verdiepen in CSS en HTML 5, want hele opmaak en font-bepalingen hoort écht niet meer thuis in HTML-documenten. Tenzij je een website voor het "Museum der oudheid van webpagina's" bouwt ;).
 
Laatst bewerkt:
En, nog naar gekeken?
 
Neem gewoon aan ik ben gewoon nen moeilijken mens
onderaan wat opmerkingen over onderstaande code.
in dit geval zal het bestand opgeslagen moeten worden in een bestand met de naam "send.php"
PHP:
...
<form id="FormName0" action="../send.php" method="post" name="FormName0"><!--../send  zal niet werken omdat het een directory hoger gaat-->
...
</form>
<?php 
...
<form id="FormName" action="send.php" method="post" name="FormName">
...<label for="EmailFrom">Your E-mail</label></td>
<td><input id="EmailFrom" type="text" name="EmailFrom" size="50"></td><!-- dit is volgens mij geen html5 omdat het type="email" dient te zijn -->
...
<td align="left" valign="top"><label for="departure_date">* Departure date (DD/MM/YYYY)</label></td><!-- de ster is volgens mij geen html5 omdat het required dient te zijn -->
...

<p><strong>Only</strong>when you completed all the fields
indicated with a star (*) you will receive a message that the mail has been
sent.<br>
If you cannot send this register list you can manually send an email to the webmaster
(see contacts in the menu)</p>
...
if (!filter_var($_POST['EmailFrom'], FILTER_VALIDATE_EMAIL)) {//zeer juist dit is de nieuwe werkwijze
   $errors[] = "E-mail adres is niet correct";
}[/QUOTE]

voor email in html5 zal het volgende in de buurt komen 
<input type="email" class="opmaak" name="email" value="" pattern="[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{1,63}$" required>
 
Pfft, die eerste form was gewoon erg loos, zonder formulier elementen :p

Ik heb tevens wat fixxes toegepast aan mijn voorbeeld. Jouw idee van validatie in HTL5 is ook erg tof, maar houd wel rekeing dat je nooit alleen in HTML5 en.of JavaScript gaat valideren. Doe dit sowieso altijd serverside.
 
Bekijk bijlage html5-cheat-sheet.pdf afgaand van bijlage html5 pdf (niet mijn eigendom en sorry van de reclame onderaan) zie je bij input required staan dit is om aan te geven dat het veld vereist is.De ster achter inputveld als het werkt, laat je het staan. maar voor nieuwe code raad ik het af omdat de html5 voorbeeld voor blinden en slechtzienden wel kenbaar wordt. en ook sommige brouwser houden er rekening mee.
 
Laatst bewerkt:
Ben benieuwd of Tvanden nog wat laat horen, en of hij wat aan onze oplossing heeft?

@kenikavanbis: Mooie cheatsheet ;)
 
Ik slaag er niet in om het werkend te krijgen omdat ik niet goed weet hoe de verbeteringen in te passen. Is het mogeljk mijn volledig script aan te passen?
 
Wat heb je tot nu toe, en waar loop je vast?
 
Nog altijd hetzelfde als bij het begin. Alles werkt goed behalve wanneer er iets niet goed ingevuld is krijg ik een blanko blad en dat moest een bericht zijn "e-mail was not sent please complete your input"
 
Heb je al de code van 25 juli 2017, 15:39 geprobeerd, en aangepast. De commentaren in het geel maken hierin hopelijk veel duidelijk.
 
Ik ben onvoldoende onderlegd om de codes aan te passen en ik zou het erg aangenaam vinden indien iemand mijn codes zou willen aanpassen (in zijn geheel) zodat ik het kan uittesten.
 
Probeer het eens, en zoek desnoods in manuals en tutotials.

Alleen staren op een code helpt niets, en het is hier geen afhaalbalie.

Dus laat eens wat doorzettingsvermogen zien. Wees blij dat je al 80% bij elkaar hebt.
 
Ik heb alle vorige voorstellen uitgeprobeerd en ik slaag er echt niet in. Als je naar alle voorstellen en alle antwoorden kijkt zal je zien dat ik altijd alles probeer en ook altijd snel reageer!
 
In mijn gerefereerde bericht, op lijn 65. Daar hoef je alleen een mailfunctie toe te voegen, en een bericht dat de mail verstuurd is.
 
Op lijn 65 staat: hier code voor de mail versturen.
Ik snap er niets van. Sorry maar ik ken er echt niets van.
Laat maar zo want je denkt dat ik geen inspanning wil doen.
 
Dan ben ik benieuwd wat je allemaal probeert?
Als ik op PHP + mail zoek op Google zie ik een hoop oplossingen.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan