Я пробовал много вещей, но я не могу получить чистый код HTML или PHP, чтобы пользователь не отправлял форму с пустыми полями (я не знаю, можно ли это сделать). Я не думаю, что могу сделать javascript, потому что хост файлов HTML автоматически удаляет HEAD … На данный момент действие PHP отправляет электронное письмо с результатами формы в обычный адрес @. Вот форма, за которой следует действие PHP (извините за ошибки, которые я новичок в кодировании PHP):
<!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>Untitled Form</title> <link rel="stylesheet" type="text/css" href="http://www.puzzles-et-jeux.com/themes/puzzles-et-jeux/css/view.css" media="all"> <script type="text/javascript" src="view.js"></script> </head> <body id="main_body" > <div id="form_container"> <h1><a>Page contact</a></h1> <form action="http://www.lesparisettes.com/emailphp/email.php" method="post"> <div class="form_description"> <p><font color="#cc398b"><strong>Besoin d'une information?<br /> Vous souhaitez recevoir l'un des catalogues de notre collection?<br /> Le formulaire ci-dessous est a votre disposition pour nous faire part de vos demandes.<br /> <u>Merci de bien remplir tous les champs de ce formulaire.</u> </div> <ul > <li id="li_7" > <label class="description" for="sujet">Sujet de votre message </label> <div> <select class="element select medium" id="sujet" name="sujet"> <option value="" selected="selected"></option> <option value="Catalogue Puzzle Adultes" >Catalogue Puzzles Adultes</option> <option value="Catalogue Puzzle Enfants" >Catalogue Puzzles Enfants</option> <option value="Photopuzzle" >Photopuzzle - votre puzzle personnalisé</option> <option value="Professionnel" >Professionnel</option> <option value="Autre demande" >Autre demande</option> </select> </div> </li> <li id="li_1" > <label class="description" for="email">Adresse e-mail </label> <div> <input id="email" name="email" class="element text medium" type="text" maxlength="255" value=""/> </div> </li> <li id="li_2" > <label class="description" for="element_2">Nom et prénom </label> <span> <input id="prenom" name= "prenom" class="element text" maxlength="255" size="8" value=""/> <label>Prenom</label> </span> <span> <input id="nom" name= "nom" class="element text" maxlength="255" size="14" value=""/> <label>Nom</label> </span> </li> <li id="li_3" > <label class="description" for="numeroclient">Numéro de client </label> <div> <input id="numeroclient" name="numeroclient" class="element text medium" type="text" maxlength="255" value=""/> </div> </li> <li id="li_4" > <label class="description" for="element_4">Adresse complète </label> <div> <input id="rue" name="rue" class="element text large" value="" type="text"> <label for="rue">Rue / Avenue / Voie</label> </div> <div> <input id="adresse2" name="adresse2" class="element text large" value="" type="text"> <label for="adresse2">Adresse ligne 2</label> </div> <div class="left"> <input id="ville" name="ville" class="element text medium" value="" type="text"> <label for="ville">Ville</label> </div> <div class="left"> <input id="region" name="region" class="element text medium" value="" type="text"> <label for="region">Province / Region</label> </div> <div class="left"> <input id="codepostal" name="codepostal" class="element text medium" maxlength="15" value="" type="text"> <label for="codepostal">Code postal</label> </div> <div class="left"> <select class="element select medium" id="pays" name="pays"> <option value="" selected="selected"></option> <option value="Afghanistan" >Afghanistan</option> <option value="Albania" >Albania</option> <option value="Algeria" >Algeria</option> <option value="Andorra" >Andorra</option> <option value="Antigua and Barbuda" >Antigua and Barbuda</option> <option value="Argentina" >Argentina</option> <option value="Armenia" >Armenia</option> <option value="Australia" >Australia</option> <option value="Austria" >Austria</option> <option value="Azerbaijan" >Azerbaijan</option> <option value="Bahamas" >Bahamas</option> <option value="Bahrain" >Bahrain</option> <option value="Bangladesh" >Bangladesh</option> <option value="Barbados" >Barbados</option> <option value="Belarus" >Belarus</option> <option value="Belgium" >Belgium</option> <option value="Belize" >Belize</option> <option value="Benin" >Benin</option> <option value="Bhutan" >Bhutan</option> <option value="Bolivia" >Bolivia</option> <option value="Bosnia and Herzegovina" >Bosnia and Herzegovina</option> <option value="Botswana" >Botswana</option> <option value="Brazil" >Brazil</option> <option value="Brunei" >Brunei</option> <option value="Bulgaria" >Bulgaria</option> <option value="Burkina Faso" >Burkina Faso</option> <option value="Burundi" >Burundi</option> <option value="Cambodia" >Cambodia</option> <option value="Cameroon" >Cameroon</option> <option value="Canada" >Canada</option> <option value="Cape Verde" >Cape Verde</option> <option value="Central African Republic" >Central African Republic</option> <option value="Chad" >Chad</option> <option value="Chile" >Chile</option> <option value="China" >China</option> <option value="Colombia" >Colombia</option> <option value="Comoros" >Comoros</option> <option value="Congo" >Congo</option> <option value="Costa Rica" >Costa Rica</option> <option value="Côte d'Ivoire" >Côte d'Ivoire</option> <option value="Croatia" >Croatia</option> <option value="Cuba" >Cuba</option> <option value="Cyprus" >Cyprus</option> <option value="Czech Republic" >Czech Republic</option> <option value="Denmark" >Denmark</option> <option value="Djibouti" >Djibouti</option> <option value="Dominica" >Dominica</option> <option value="Dominican Republic" >Dominican Republic</option> <option value="East Timor" >East Timor</option> <option value="Ecuador" >Ecuador</option> <option value="Egypt" >Egypt</option> <option value="El Salvador" >El Salvador</option> <option value="Equatorial Guinea" >Equatorial Guinea</option> <option value="Eritrea" >Eritrea</option> <option value="Estonia" >Estonia</option> <option value="Ethiopia" >Ethiopia</option> <option value="Fiji" >Fiji</option> <option value="Finland" >Finland</option> <option value="France" >France</option> <option value="Gabon" >Gabon</option> <option value="Gambia" >Gambia</option> <option value="Georgia" >Georgia</option> <option value="Germany" >Germany</option> <option value="Ghana" >Ghana</option> <option value="Greece" >Greece</option> <option value="Grenada" >Grenada</option> <option value="Guatemala" >Guatemala</option> <option value="Guinea" >Guinea</option> <option value="Guinea-Bissau" >Guinea-Bissau</option> <option value="Guyana" >Guyana</option> <option value="Haiti" >Haiti</option> <option value="Honduras" >Honduras</option> <option value="Hong Kong" >Hong Kong</option> <option value="Hungary" >Hungary</option> <option value="Iceland" >Iceland</option> <option value="India" >India</option> <option value="Indonesia" >Indonesia</option> <option value="Iran" >Iran</option> <option value="Iraq" >Iraq</option> <option value="Ireland" >Ireland</option> <option value="Israel" >Israel</option> <option value="Italy" >Italy</option> <option value="Jamaica" >Jamaica</option> <option value="Japan" >Japan</option> <option value="Jordan" >Jordan</option> <option value="Kazakhstan" >Kazakhstan</option> <option value="Kenya" >Kenya</option> <option value="Kiribati" >Kiribati</option> <option value="North Korea" >North Korea</option> <option value="South Korea" >South Korea</option> <option value="Kuwait" >Kuwait</option> <option value="Kyrgyzstan" >Kyrgyzstan</option> <option value="Laos" >Laos</option> <option value="Latvia" >Latvia</option> <option value="Lebanon" >Lebanon</option> <option value="Lesotho" >Lesotho</option> <option value="Liberia" >Liberia</option> <option value="Libya" >Libya</option> <option value="Liechtenstein" >Liechtenstein</option> <option value="Lithuania" >Lithuania</option> <option value="Luxembourg" >Luxembourg</option> <option value="Macedonia" >Macedonia</option> <option value="Madagascar" >Madagascar</option> <option value="Malawi" >Malawi</option> <option value="Malaysia" >Malaysia</option> <option value="Maldives" >Maldives</option> <option value="Mali" >Mali</option> <option value="Malta" >Malta</option> <option value="Marshall Islands" >Marshall Islands</option> <option value="Mauritania" >Mauritania</option> <option value="Mauritius" >Mauritius</option> <option value="Mexico" >Mexico</option> <option value="Micronesia" >Micronesia</option> <option value="Moldova" >Moldova</option> <option value="Monaco" >Monaco</option> <option value="Mongolia" >Mongolia</option> <option value="Montenegro" >Montenegro</option> <option value="Morocco" >Morocco</option> <option value="Mozambique" >Mozambique</option> <option value="Myanmar" >Myanmar</option> <option value="Namibia" >Namibia</option> <option value="Nauru" >Nauru</option> <option value="Nepal" >Nepal</option> <option value="Netherlands" >Netherlands</option> <option value="New Zealand" >New Zealand</option> <option value="Nicaragua" >Nicaragua</option> <option value="Niger" >Niger</option> <option value="Nigeria" >Nigeria</option> <option value="Norway" >Norway</option> <option value="Oman" >Oman</option> <option value="Pakistan" >Pakistan</option> <option value="Palau" >Palau</option> <option value="Panama" >Panama</option> <option value="Papua New Guinea" >Papua New Guinea</option> <option value="Paraguay" >Paraguay</option> <option value="Peru" >Peru</option> <option value="Philippines" >Philippines</option> <option value="Poland" >Poland</option> <option value="Portugal" >Portugal</option> <option value="Puerto Rico" >Puerto Rico</option> <option value="Qatar" >Qatar</option> <option value="Romania" >Romania</option> <option value="Russia" >Russia</option> <option value="Rwanda" >Rwanda</option> <option value="Saint Kitts and Nevis" >Saint Kitts and Nevis</option> <option value="Saint Lucia" >Saint Lucia</option> <option value="Saint Vincent and the Grenadines" >Saint Vincent and the Grenadines</option> <option value="Samoa" >Samoa</option> <option value="San Marino" >San Marino</option> <option value="Sao Tome and Principe" >Sao Tome and Principe</option> <option value="Saudi Arabia" >Saudi Arabia</option> <option value="Senegal" >Senegal</option> <option value="Serbia and Montenegro" >Serbia and Montenegro</option> <option value="Seychelles" >Seychelles</option> <option value="Sierra Leone" >Sierra Leone</option> <option value="Singapore" >Singapore</option> <option value="Slovakia" >Slovakia</option> <option value="Slovenia" >Slovenia</option> <option value="Solomon Islands" >Solomon Islands</option> <option value="Somalia" >Somalia</option> <option value="South Africa" >South Africa</option> <option value="Spain" >Spain</option> <option value="Sri Lanka" >Sri Lanka</option> <option value="Sudan" >Sudan</option> <option value="Suriname" >Suriname</option> <option value="Swaziland" >Swaziland</option> <option value="Sweden" >Sweden</option> <option value="Switzerland" >Switzerland</option> <option value="Syria" >Syria</option> <option value="Taiwan" >Taiwan</option> <option value="Tajikistan" >Tajikistan</option> <option value="Tanzania" >Tanzania</option> <option value="Thailand" >Thailand</option> <option value="Togo" >Togo</option> <option value="Tonga" >Tonga</option> <option value="Trinidad and Tobago" >Trinidad and Tobago</option> <option value="Tunisia" >Tunisia</option> <option value="Turkey" >Turkey</option> <option value="Turkmenistan" >Turkmenistan</option> <option value="Tuvalu" >Tuvalu</option> <option value="Uganda" >Uganda</option> <option value="Ukraine" >Ukraine</option> <option value="United Arab Emirates" >United Arab Emirates</option> <option value="United Kingdom" >United Kingdom</option> <option value="United States" >United States</option> <option value="Uruguay" >Uruguay</option> <option value="Uzbekistan" >Uzbekistan</option> <option value="Vanuatu" >Vanuatu</option> <option value="Vatican City" >Vatican City</option> <option value="Venezuela" >Venezuela</option> <option value="Vietnam" >Vietnam</option> <option value="Yemen" >Yemen</option> <option value="Zambia" >Zambia</option> <option value="Zimbabwe" >Zimbabwe</option> </select> <label for="pays">Pays</label> </div> </li> <li id="li_5" > <label class="description" for="telephone">Téléphone </label> <div> <input id="telephone" name="telephone" class="element text medium" type="text" maxlength="255" value=""/> </div> </li> <li id="li_6" > <label class="description" for="message">Votre message </label> <div> <textarea id="message" name="message" class="element textarea medium"></textarea> </div> </li> <li class="buttons"> <input type="hidden" name="form_id" value="306225" /> <input id="saveForm" class="button_text" type="submit" name="submit" value="Envoyer" /> </li> </ul> </form> <div id="footer"> Generated by <a href="http://www.phpform.org">pForm</a> </div> </div> </body> </html>
<?php $required = array('sujet', 'email', 'prenom', 'nom', 'numeroclient', 'rue', 'adresse2', 'ville', 'region', 'codepostal', 'pays', 'telephone', 'message'); $error = false; foreach($required as $field) { if (empty($_POST[$field])) { $error = true; } } $sujet = $_POST['sujet']; $email = $_POST['email']; $prenom = $_POST['prenom']; $nom = $_POST['nom']; $numeroclient = $_POST['numeroclient']; $rue = $_POST['rue']; $adresse2 = $_POST['adresse2']; $ville = $_POST['ville']; $region = $_POST['region']; $codepostal = $_POST['codepostal']; $pays = $_POST['pays']; $telephone = $_POST['telephone']; $message = $_POST['message']; $msg = "sujet: \t $sujet \n"; $msg .= "email: \t $email \n"; $msg .= "prenom:\t $prenom \n"; $msg .= "nom:\t $nom \n"; $msg .= "numeroclient:\t $numeroclient \n"; $msg .= "rue:\t $rue \n"; $msg .= "adresse2:\t $adresse2 \n"; $msg .= "ville:\t $ville \n"; $msg .= "region:\t $region \n"; $msg .= "codepostal:\t $codepostal \n"; $msg .= "pays:\t $pays \n"; $msg .= "telephone:\t $telephone \n"; $msg .= "message:\t $message \n"; $recipient = "xxxx@example.com"; $subject = "$sujet \t $prenom \t $nom"; $mailheaders = "From: Site internet PMW <xxx@example.com> \n"; $mailheaders .= "Reply-To: $email \n\n"; mail($recipient, $subject, $msg, $mailheaders); echo "<HTML><HEAD>"; echo "<title>Merci</title>"; echo "</head>"; echo "<body leftmargin=\"0\" topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\">"; echo "<table width=\"650\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">"; echo "<tr>"; echo "</tr>"; echo "<tr>"; echo "</tr>"; echo "<tr>"; echo "</tr>"; echo "<td align=\"center\" valign=\"top\"></br></br>Merci pour votre message, nous l'avons pris en compte. <a href=\"http://www.puzzles-et-jeux.com/\">Revenir a PMW</a></td>"; echo "</table>"; echo "</body>"; echo "</html>"; ?>
В чем проблема? Вы можете просто сделать это:
$error = false; foreach(...) { // set $error = true if empty (I'd also check for invalid values if I were you) } if($error) { echo 'error message'; // display form again using value="$_POST['fieldname']" } else { //... mail(...); echo 'thank you message'; }
Я вижу, что вы создаете флаг $ error, но это не выглядит так, как будто вы с ним что-то делаете. Вы должны проверить эту ошибку $ и показать другой результат HTML (и отказаться от отправки результатов по электронной почте), если он существует.