2014-10-26 3 views
0

Я новичок в PHP и у вас возникли проблемы со следующей формой контакта: Переменная: $ empresa = $ _POST ['empresa']; не работает ... и я не понимаю, где проблема. Когда я пытаюсь использовать его в отправляемом E-Mail, он просто не отображается.Поле в контактной форме

$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:]][email protected]((([[: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 = "[email protected]"; 


$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> 
+0

где ваша 'форма'? – RST

+0

Я добавил свою форму под кодом – andres

+0

Каков результат 'var_dump ($ _ POST)'? – RST

ответ

0

Если все другие почтовые переменные работают тогда, похоже, что переменная $ _POST ['empresa'] не попадает на страницу php. Чтобы отладить ваш скрипт, вы можете переключить свой метод формы на GET, чтобы увидеть строку запроса в URL-адресе браузера или использовать инструмент, например firebug, который является добавлением для firefox. Вы получите ошибку на своей php-странице при переключении на метод GET в своей форме html. Не беспокойтесь о том, что вы просто пытаетесь проверить, отправляется ли переменная empressa через HTTP-запрос.

Ok переменная свалка должна показать это на основе кода вашего условии

array 
    'name' => string 'Larry' (length=5) 
    'empresa' => string 'Lane' (length=4) 
    'email' => string '[email protected]' (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:]][email protected]((([[: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 = "[email protected]"; 


$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 является значение I Empresa вводится в форме).

POSTEDLarry te ha contactado desde www.company.com «Это действительно длинное сообщение ok позволяет увидеть, что происходит с этим кодом php, он не отправляет переменную empresa». Ответчик Larry [email protected] o llamar al telé © fono: 12345678 | Empresa: Lane

+0

Я добавил метод GET, но не получил никаких ошибок, я также не получил электронное письмо с этой информацией. – andres

+0

Я получаю следующее, хотя я помещал что-то в поле empresa: array (5) {["name"] => string (7) "andreas" ["empresa"] => string (0) "" ["email"] => string (21) "[email protected]" ["phone"] => string (6) "ölcsa" ["comments"] => string (16) "öacmslöcmaösc"} – andres

+0

Спасибо, много для вашей помощи, НО echo $ message; Отображает всю информацию в сообщении, но «empresa» все еще не отображается. – andres

0

ОК в вашем файле "custom.js" у вас есть следующая строка кода, которая может вызвать некоторые проблемы.

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

Там не должно быть запятой после последнего значения свойства попытайтесь удалить, что, чтобы увидеть, если вы получите значение из Empresa кода JQuery. Попробуйте и дайте мне знать i

+0

Я пробовал удалять запятую, но не решил ее. – andres

0

Я решил проблему, изменив слово empresa на что-то еще. Я думаю, что это слово было каким-то столкновением.

Большое вам спасибо за помощь!