【问题标题】:Field in contact form联系表格中的字段
【发布时间】:2014-10-26 14:20:27
【问题描述】:

我是 PHP 新手,对以下联系表格有疑问: 变量:$empresa = $_POST['empresa'];不工作......我不明白问题出在哪里。当我尝试在发送的电子邮件中使用它时,它只是不显示。

$received_subject = 'Has sido contactado desde www.company.com por ' . $name . '. Empresa' . $empresa . '.' ;

**这是我正在使用的 PHP:** 提前致谢

<?php

if(!$_POST) exit;

function isEmail($email) {
    return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name     = $_POST['name'];
$empresa  = $_POST['empresa'];
$email    = $_POST['email'];
$phone    = $_POST['phone'];
$comments = $_POST['comments'];

if(trim($comments) == '') {
    echo '<div class="error_message">Has olvidado escribir tu mensaje.</div>';
    exit();
} 



if(trim($name) == '') {
    echo '<div class="error_message">Tienes que poner un nombre.</div>';
    exit();
} else if(trim($email) == '') {
    echo '<div class="error_message">Por favor pon tu dirección de e-mail, para poder ponernos en contacto contigo.</div>';
    exit();
} else if(!isEmail($email)) {
    echo '<div class="error_message">Dirección de e-mail inválida, inténtelo nuevamente.</div>';
    exit();
}

$address = "mail@mail.com";


$received_subject = 'Has sido contactado desde www.company.com por ' . $name . '. Empresa' . $empresa . '.' ;

$received_body = "$name te ha contactado desde www.company.com " . PHP_EOL . PHP_EOL;
$received_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$received_reply = "Responder a $name $email o llamar al teléfono: $phone | Empresa: $empresa ";

$message = wordwrap( $received_body . $received_content . $received_reply, 100 );

$header = "From: $email" . PHP_EOL;
$header .= "Reply-To: $email" . PHP_EOL;

if(mail($address, $received_subject, $message, $header)) {

    // Email has sent successfully, echo a success page.

    echo "<h2>E-Mail enviado con éxito</h2>";
    echo "<p>Gracias <strong>$name</strong>, tu mensaje ha sido enviado.</p>";

} else {

    echo 'ERROR!';

}

我的表格在这里:

                            <form method="post" action="contact.php" name="contactform" id="contactform">

                                <fieldset id="contact_form">
                                    <label for="name">
                                        <input type="text" name="name" id="name" placeholder="Nombre *">
                                    </label>

                                    <label for="empresa">
                                        <input type="text" name="empresa" id="empresa" placeholder="Empresa *">
                                    </label>

                                    <label for="email">
                                        <input type="email" name="email" id="email" placeholder="E-Mail *">
                                    </label>

                                    <label for="phone">
                                        <input type="text" name="phone" id="phone" placeholder="Número de teléfono">
                                    </label>

                                    <label for="comments">
                                        <textarea name="comments" id="comments" placeholder="Mensaje *"></textarea>
                                    </label>
                                    <p class="obligatorio"> * = Obligatorio</p>

                                    <input type="submit" class="submit btn btn-default btn-black" id="submit" value="Enviar">
                                </fieldset>

                            </form>

【问题讨论】:

  • 你的form在哪里?
  • 我在代码下方添加了我的表单
  • var_dump($_POST) 的结果是什么?
  • 很抱歉,但不知道如何将您的问题应用到代码中
  • if(!$_POST) exit; 行之后添加命令(不要忘记;最后)

标签: php forms contact


【解决方案1】:

如果您的所有其他帖子变量都在工作,那么听起来 $_POST['empresa'] 变量没有进入 php 页面。要调试脚本,您可以将表单方法切换为 GET 以在浏览器 url 中查看查询字符串,或者使用 firebug 之类的工具,它是 firefox 的附加组件。当您切换到 html 表单上的 GET 方法时,您的 php 页面上会出现错误。不用担心您只是想查看 empressa 变量是否是通过 http Post 请求发送的。

好的,你的变量转储应该根据你提供的代码显示这个

array
  'name' => string 'Larry' (length=5)
  'empresa' => string 'Lane' (length=4)
  'email' => string 'ok@yahoo.com' (length=12)
  'phone' => string '123' (length=3)
  'comments' => string 'ok' (length=2)

所以 empresa 可以很好地进入页面。我确实注意到您的表单没有开始表单标签?当然,您应该有类似的文件名来代替我用于测试的文件名。

<form name="testform" action="testingpostvariables.php" method="POST">

放置 echo $message;在您的 php 文件中的代码行之后

    $message = wordwrap( $received_body . $received_content . $received_reply, 100 );

    $echo message;

当我这样做时,empresa 出现了。

好的,将这段代码放在单独的 php 文件中并对其进行测试,以便我们找出“empresa”没有出现的原因。在测试此文件之前,我还会尝试刷新您的浏览器,以确保没有错误的缓存结果。

<form method="post" action="contact.php" name="contactform" id="contactform">

                                <fieldset id="contact_form">
                                    <label for="name">
                                        <input type="text" name="name" id="name" placeholder="Nombre *">
                                    </label>

                                    <label for="empresa">
                                        <input type="text" name="empresa" id="empresa" placeholder="Empresa *">
                                    </label>

                                    <label for="email">
                                        <input type="email" name="email" id="email" placeholder="E-Mail *">
                                    </label>

                                    <label for="phone">
                                        <input type="text" name="phone" id="phone" placeholder="Número de teléfono">
                                    </label>

                                    <label for="comments">
                                        <textarea name="comments" id="comments" placeholder="Mensaje *"></textarea>
                                    </label>
                                    <p class="obligatorio"> * = Obligatorio</p>

                                    <input type="submit" class="submit btn btn-default btn-black" id="submit" value="Enviar">
                                </fieldset>

                            </form>



<?php




//debug
echo var_dump($_POST);

//debug
if(!$_POST){

    echo "NO POST";

    //exit;
}
else{

    echo "POSTED";
}

function isEmail($email) {
    return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name     = $_POST['name'];
$empresa  = $_POST['empresa'];

//impress is posting just fine

$email    = $_POST['email'];
$phone    = $_POST['phone'];
$comments = $_POST['comments'];

if(trim($comments) == '') {
    echo '<div class="error_message">Has olvidado escribir tu mensaje.</div>';
    exit();
} 



if(trim($name) == '') {
    echo '<div class="error_message">Tienes que poner un nombre.</div>';
    exit();
} else if(trim($email) == '') {
    echo '<div class="error_message">Por favor pon tu dirección de e-mail, para poder ponernos en contacto contigo.</div>';
    exit();
} else if(!isEmail($email)) {
    echo '<div class="error_message">Dirección de e-mail inválida, inténtelo nuevamente.</div>';
    exit();
}

$address = "mail@mail.com";


$received_subject = 'Has sido contactado desde www.company.com por ' . $name . '. Empresa' . $empresa . '.' ;

//debug
//$empressa is still working fine


$received_body = "$name te ha contactado desde www.company.com " . PHP_EOL . PHP_EOL;
$received_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$received_reply = "Responder a $name $email o llamar al teléfono: $phone | Empresa: $empresa ";



$message = wordwrap( $received_body . $received_content . $received_reply, 100 );

echo $message;

$header = "From: $email" . PHP_EOL;
$header .= "Reply-To: $email" . PHP_EOL;

/*
if(mail($address, $received_subject, $message, $header)) {

    // Email has sent successfully, echo a success page.

    echo "<h2>E-Mail enviado con éxito</h2>";
    echo "<p>Gracias <strong>$name</strong>, tu mensaje ha sido enviado.</p>";

} else {

    echo 'ERROR!';

}
 */

这是我的结果与最后的 empresa 值的样子(Lane 是我在表单中输入的 empresa 值)。

POSTEDLarry te ha contactado desde www.company.com “这是一条非常长的消息,好的,让我们看看这个 php 代码发生了什么,它没有发送 empresa 变量”回复者是 Larry mail@mail.com o llamar al telà ©电话:12345678 | Empresa:车道

【讨论】:

  • 我添加了 GET 方法,但没有收到任何错误,我也没有收到包含该信息的电子邮件。
  • 即使我在 empresa 字段中添加了一些内容,我仍然得到以下信息:array(5) { ["name"]=> string(7) "andreas" ["empresa"]=> string(0) "" ["email"]=> string(21) "someemail@mail.com" ["phone"]=> string(6) "ölcsa" ["cmets"]=> string(16) " öacmslöcmaösc" }
  • 非常感谢您的帮助,但是 echo $message;显示消息中的所有信息,但“empresa”仍未显示。
  • 嗨,拉里,我已经添加了它,但还是没有运气...我从 empresa 领域一无所获。
  • 我得到了 "empresa"]=> string(0) 即使我在字段中放了一些东西。
【解决方案2】:

好的,在您的“custom.js”文件中,您有以下代码行可能会导致一些问题。

  $.post(action, {
                name: $('#name').val(),
                empresa: $('#empresa').val(),
                email: $('#email').val(),
                phone: $('#phone').val(),
                comments: $('#comments').val(), //remove this comma

最后一个属性值后不应有逗号尝试删除它以查看是否从 jquery 代码中获取 empresa 的值。试试看,让我知道我

【讨论】:

    【解决方案3】:

    我已经解决了这个问题,把 empresa 换成了别的东西。 我认为使用这个词有某种冲突。

    非常感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2020-10-15
      • 2017-08-06
      • 2015-12-25
      相关资源
      最近更新 更多