【发布时间】:2016-03-26 16:10:41
【问题描述】:
我正在为客户构建一个 PHP 表单,但在将数据收集到具有“发布”方法的表单中时遇到了一些问题,而 PHP 部分对我来说很复杂。
首先,我想使用自定义 HTML 模板,它显示得很好,但似乎帖子收集值是 brooke。此外,似乎没有添加 $headers 数据(电子邮件没有 $from 值,也没有 $to 值)。
我需要帮助。这是html和php部分。请注意,我不是 JavaScript 程序员,但我努力学习有我最好的知识和时间。我白手起家。
这是表单 HTML 结构(reCaptcha 缺少正常的):
<div class="col-md-offset-1 col-md-10 col-md-offset-1">
<script type="text/javascript">
var RecaptchaOptions = {
lang : 'fr',
};
</script>
<style type="text/css">
.field-error .control-label,
.field-error .help-block,
.field-error .form-control-feedback {
color: #ff0039;
}
.field-success .control-label,
.field-success .help-block,
.field-success .form-control-feedback {
color: #2780e3;
}
</style>
<form method="post" action="envoi_appel_de_service.php">
<p class="bg-primary lead" style="padding-top:7px; padding-left:10px; padding-bottom:7px; background-color:#337ab7 !important;"> <i class="fa fa-building"></i> Informations sur l'adresse du service</p>
<!-- Nom de la compagnie -->
<div class="form-group row">
<label for="nom_compagnie" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Nom de la compagnie</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="nom_compagnie" placeholder="Le nom de l'entreprise">
</div>
</div>
<!-- Adresse -->
<div class="form-group row">
<label for="adresse" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Adresse</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="adresse" placeholder="Adresse de l'entreprise">
</div>
</div>
<!-- Ville -->
<div class="form-group row">
<label for="ville" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Ville</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="ville" placeholder="Le nom de la ville de l'entreprise">
</div>
</div>
<!-- Province -->
<div class="form-group row">
<label for="province" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;" id="province">Province</label>
<div class="col-sm-5">
<select class="form-control">
<option>Alberta</option>
<option>Colombie-Britanique</option>
<option>Ile-du-Prince-Edouard</option>
<option>Manitoba</option>
<option>Nouveau-Brunswick</option>
<option>Nouvelle-Ecosse</option>
<option>Nunavut</option>
<option>Ontario</option>
<option selected="selected">Quebec</option>
<option>Saskatchewan</option>
<option>Terre-Neuve-Labrador</option>
<option>Territoires du Nord-Ouest</option>
<option>Yukon</option>
</select>
</div>
</div>
<!-- Code postale -->
<div class="form-group row">
<label for="code_postale" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Code postale</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="code_postale" placeholder="XXX XXX">
</div>
</div>
<!-- Nom de la personne ressource -->
<div class="form-group row">
<label for="nom_responsable" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Nom du responsable</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="nom_responsable" placeholder="Nom de la personne ressource sur place">
</div>
</div>
<!-- Telephone -->
<div class="form-group row">
<label for="telephone" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Téléphone</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="telephone" placeholder="X XXX XXX-XXX ext XXXX">
</div>
</div>
<!-- Adresse courriel -->
<div class="form-group row">
<label for="courriel" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Adresse courriel</label>
<div class="col-sm-8">
<input type="email" class="form-control" id="courriel" placeholder="Adresse courriel valide">
</div>
</div>
<p class="bg-primary lead" style="padding-top:7px; padding-left:10px; padding-bottom:7px; background-color:#A41313 !important;"> <i class="fa fa-print"></i> Informations sur le produit</p>
<!-- Marque -->
<div class="form-group row">
<label for="marque" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Marque</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="marque" placeholder="Marque du produit">
</div>
</div>
<!-- Modèle -->
<div class="form-group row">
<label for="modele" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Numéro de modèle</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="modele" placeholder="Veuillez inscrire le numéro de modèle">
</div>
</div>
<!-- Garantie -->
<div class="form-group row">
<label for="garantie" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Garantie</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="garantie" placeholder="Est-ce que le produit est sous garantie?">
</div>
</div>
<!-- Description du problème -->
<div class="form-group row">
<label for="description" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Description du problème</label>
<div class="col-sm-8">
<textarea class="form-control" rows="4" id="description"></textarea>
</div>
</div>
<p class="bg-primary lead" style="padding-top:7px; padding-left:10px; padding-bottom:7px; background-color:#337ab7 !important;"> <i class="fa fa-calendar-o"></i> Préférences pour le rendez-vous</p>
<!-- Disponibilité -->
<div class="form-group row">
<label for="disponibilite" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Disponibilité</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="disponibilite" placeholder="Quel est le meilleur moment pour vous joindre?">
</div>
</div>
<!-- Coordonnées -->
<div class="form-group row">
<label for="coordonnees" class="col-sm-4 form-control-label text-right" style="font-size:16px; line-height:16px; padding-top:10px;">Coordonnées</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="coordonnees" placeholder="Optionel">
</div>
</div>
<p class="bg-primary lead" style="padding-top:7px; padding-left:10px; padding-bottom:7px; background-color:#A41313 !important;"> <i class="fa fa-lock"></i> Sécurité Anti-Spam</p>
<!-- Validation reCaptcha franco Google -->
<div class="form-group row">
<label for="input12" class="col-sm-4 form-control-label text-right" style="padding-top:28px !important;">Sécurité anti-spam</label>
<div class="col-sm-8">
<div class="g-recaptcha" data-sitekey="MASKING"></div>
</div>
</div>
<!-- Soumettre -->
<div class="form-group row">
<label for="submit" class="col-sm-4 form-control-label text-right"> </label>
<div class="col-sm-8">
<button name="submit" type="submit" value="submit" class="btn btn-primary">Soumettre</button>
</div>
</div>
</form>
这里是 PHP 部分:
<?php
if (isset($_POST["submit"])) {
$to = "MASKING";
$from = $_POST['courriel'];
$subject = "Réception d'un appel de service";
$nom_compagnie = $_POST['nom_compagnie']; // required
$adresse = $_POST['adresse']; // required
$ville = $_POST['ville'];
$province = $_POST['province'];
$code_postale = $_POST['code_postale'];
$nom_responsable = $_POST['nom_responsable'];
$courriel = $_POST['courriel'];
$marque = $_POST['marque'];
$numero_modele = $_POST['numero_modele'];
$garantie = $_POST['garantie'];
$description = $_POST['description'];
$disponibilite = $_POST['disponibilite']; // required
$coordonnees = $_POST['coordonnees']; // required
$headers = 'From: '.$courriel."\r\n".
'Reply-To: '.$from."\r\n" .
'X-Mailer: PHP/' . phpversion();
$message = "
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<title>Appel de service (rempli sur le site internet)</title>
<style type=\"text/css\">
h1,h2,h3,h4,h5,h6 {
font-family: Cambria, \"Hoefler Text\", \"Liberation Serif\", Times, \"Times New Roman\", serif;
color: #272727;
}
</style>
</head>
<body>
<h2 style=\"font-size: 1.25em; font-family: Gotham, ʼHelvetica Neueʼ, Helvetica, Arial, sans-serif;\">Vous avez reçu une demande dʼappel de service en ligne.</h2>
<table width=\"500\" border=\"1\" cellpadding=\"5\" cellspacing=\"2\">
<tbody>
<tr>
<td colspan=\"2\" align=\"left\" valign=\"middle\" bgcolor=\"#84BDEC\"><h3>Inations sur lʼadresse du service</h3></td>
</tr>
<tr>
<td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Nom de la compagnie</td>
<td width=\"313\" align=\"left\" valign=\"middle\">$nom_compagnie</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Adresse</td>
<td align=\"left\" valign=\"middle\">$adresse</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Ville</td>
<td align=\"left\" valign=\"middle\">$ville</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Province</td>
<td align=\"left\" valign=\"middle\">$province</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Code postale</td>
<td align=\"left\" valign=\"middle\">$code_postale</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Nom du responsable</td>
<td align=\"left\" valign=\"middle\">$nom_responsable</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Téléphone</td>
<td align=\"left\" valign=\"middle\">$telephone</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Adresse courriel</td>
<td align=\"left\" valign=\"middle\">$courriel</td>
</tr>
</tbody>
</table>
<br>
<table width=\"500\" border=\"1\" cellpadding=\"5\" cellspacing=\"2\">
<tbody>
<tr>
<td colspan=\"2\" align=\"left\" valign=\"middle\" bgcolor=\"#84BDEC\"><h3>Informations sur le produit</h3></td>
</tr>
<tr>
<td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Marque</td>
<td width=\"313\" align=\"left\" valign=\"middle\">$marque</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Numéro de modèle</td>
<td align=\"left\" valign=\"middle\">$numero_modele</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Garantie</td>
<td align=\"left\" valign=\"middle\">$garantie</td>
</tr>
<tr bgcolor=\"#D5D5D5\">
<td colspan=\"2\" align=\"left\" valign=\"middle\">Description du problème :</td>
</tr>
<tr>
<td height=\"75\" colspan=\"2\" align=\"left\" valign=\"top\">$description</td>
</tr>
</tbody>
</table>
<br>
<table width=\"500\" border=\"1\" cellpadding=\"5\" cellspacing=\"2\">
<tbody>
<tr>
<td colspan=\"2\" align=\"left\" valign=\"middle\" bgcolor=\"#84BDEC\"><h3>Préférences pour le rendez-vous</h3></td>
</tr>
<tr>
<td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Disponibilité</td>
<td width=\"313\" align=\"left\" valign=\"middle\">$disponibilite</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Coordonnées</td>
<td align=\"left\" valign=\"middle\">$coordonnees</td>
</tr>
</tbody>
</table>
</body>
</html>
";
// Always set content-type when sending HTML email
mail($to, $courriel, $message, $headers,
"From: $from\n" .
"MIME-Version: 1.0\n" .
"Content-type: text/html; charset=iso-8859-1");
}
?>
你可以看到,所有的值都是空的,标题也是。我卡住了,不知道为什么它不起作用。如果有人可以帮助我解决这个问题,非常感谢。
【问题讨论】:
-
表单中显示的任何表单字段都没有
name属性(它们有id,实际上应该是name),除了提交按钮。所以为他们提供name属性,然后你的价值观就会到来。 -
所以我只是要重命名 id 有一个 name="" 并且会被解决?但另一点是 $to 和 $from,也会被修复吗?我现在就试试这个。
-
99%,是的。但是你的标题会失败。 RTM php.net/manual/en/function.mail.php 您正在使用 5 个参数。有第 5 个可用,但不用于您正在做的事情。
-
哦,太好了!我将立即阅读功能邮件。这是我需要的。谢谢。
-
不客气,Stéphane,但接受我的回答 stackoverflow.com/a/36237925/1415724 是 Stack 滚动的方式,哈哈 meta.stackexchange.com/questions/5234/…@StéphaneRobert 并为我的回答 stackoverflow.com/a/36237925/1415724 做同样的事情