Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2015, 11:45   #1
Fomichuga
Новичок
Джуниор
 
Регистрация: 20.03.2015
Сообщений: 1
По умолчанию Приходят не все данные с сайта!

Добрый день.
На сайте существует форма заявки обратного звонка. В форме три поля для заполнения Имя, телефон, e-mail. Имя и телефон обязательны к заполнению. e-mail - необязательно. Посетитель сайта заполняет все поля, но письмо на почту приходит только с именем и телефоном, e-mail - пустой. Помогите пожалуйста разобраться почему не присылает почту. В общем вот HTML:
<div class="akcia-girl">
<div class="baner-form">
<p>
<span class="bold">Отправьте заявку и получите скидку на размещение<br>
<span class="red-font-mini">+ бесплатный дизайн макета
</span>
</span>
</p>
<form class="s_form" action="index1.php" method="POST">
<input class="s_text nameinp sinp" type="text" name="name" placeholder="Ваше имя">
<input class="s_text phoneinp sinp" type="text" name="phone" placeholder="Ваш телефон">
<input class="s_text adress" type="text" name="adress" placeholder="Ваш e-mail">
<input type="hidden" name="mail" class="email" value="none@none.ru">
<input type="hidden" value="C" name="button">
<input type="hidden" name="comment" value="None">
<input class="s_submit" type="button" value="Отправить">
</form>
</div>
</div>

Вот содержимое (всё) index1.php:
<?php
/* Здесь проверяется существование переменных */
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['addres'])) {$addres = $_POST['addres'];} (ЕСЛИ ЗДЕСЬ МЕНЯЮ ХОТЯ БЫ ОДНУ НА 'adress' ВСЁ ТО ЖЕ САМОЕ, А ЕСЛИ ОБЕ ТО ВООБЩЕ ПИСЬМА НЕ ПРИХОДЯТ!)

/* Сюда впишите свою эл. почту */
$address = "manager@?????????????.ru";

/* А здесь прописывается текст сообщения, \n - перенос строки */
$mes = "Тема: Заказ обратного звонка!\nТелефон: $phone\nИмя: $name\nE-mail: $addres";

/* А эта функция как раз занимается отправкой письма на указанный вами email */
$sub='Заказ'; //сабж
$email='Заказ <podbor.ru>'; // от кого
$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");

ini_set('short_open_tag', 'On');
header('Refresh: 3; URL=index.html');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="3; url=index.html">
<title>С вами свяжутся</title>
<meta name="generator">
<style type="text/css">
body
{

background: url(images/zakaz.jpg) top -70% center no-repeat;

}

<script type="text/javascript">
setTimeout('location.replace("/index.html")', 500);
/*Изменить текущий адрес страницы через 3 секунды (3000 миллисекунд)*/
</script>
</head>
</body>
</html>
Fomichuga вне форума Ответить с цитированием
Старый 20.03.2015, 13:56   #2
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Первый момент!

1. Оформляйте код в специальные теги - читать ваш текст и код очень не приятно.

2. У вас есть минимальное понимания механизма работы того что вы пишите?

Вот ваш код html
Код HTML:
<input class="s_text adress" type="text" name="adress" placeholder="Ваш e-mail">
Вот вы пытаетесь принять его со стороны сервера:
Код:
if (isset($_POST['addres'])) {$addres = $_POST['addres'];}
Первое. Почему вы пишите $_POST['addres'] а не $_POST['address'] ?
Второе. Естественно вы проверяете есть ли в $_POST значения addres
Код:
 if (isset($_POST['addres'])) {$addres = $_POST['addres'];}
естественно его нет, по этому вам приходит пустота.

Вот оно упущение матчасти:

Цитата:
(ЕСЛИ ЗДЕСЬ МЕНЯЮ ХОТЯ БЫ ОДНУ НА 'adress' ВСЁ ТО ЖЕ САМОЕ, А ЕСЛИ ОБЕ ТО ВООБЩЕ ПИСЬМА НЕ ПРИХОДЯТ!)
На каком основании вы должны менять adress только в одном месте?



Вообщем на будущее, учитесь отлаживать и понимать то что вы пишите. А все на самом деле просто..
Надо было сделать так: (для того чтобы убедится и посмотреть что вам приходит)

Код:
<?php

print_r($_POST);
die();

/* Здесь проверяется существование переменных */
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['addres'])) {$addres = $_POST['addres'];} (ЕСЛИ ЗДЕСЬ МЕНЯЮ ХОТЯ БЫ ОДНУ НА 'adress' ВСЁ ТО ЖЕ САМОЕ, А ЕСЛИ ОБЕ ТО ВООБЩЕ ПИСЬМА НЕ ПРИХОДЯТ!)
Как должно работать:

Код:

<?php

   $required_fields = array('phone','name');
   
   $is_required = false;
   foreach($_POST as $key => $value)
   {
       if(in_array($key,$required_fields)
       {
           $is_required = true;
       }
   }

   if($is_required == true)
   {

       /* Сюда впишите свою эл. почту */
       $address = "manager@?????????????.ru";

       /* Проверяем есть ли майл от пользователя */ 
       
       $user_email = (isset($_POST['adress'])) ? $_POST['adress'] : "Пользовательский email отсутствует!"

       /* А здесь прописывается текст сообщения, \n - перенос строки */
       $mes = "Тема: Заказ обратного звонка!\nТелефон: $phone\nИмя: $name\nE-mail: $user_email";

       /* А эта функция как раз занимается отправкой письма на указанный вами email */
       $sub='Заказ'; //сабж
       $email='Заказ <podbor.ru>'; // от кого
       $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");

       ini_set('short_open_tag', 'On');
       header('Refresh: 3; URL=index.html');

   }
   else
   {
       echo 'Не заполнены обязательные поля!'
       header('Refresh: 3; URL=index.html');
   }
На будущее если что от не работает, значит виноват в этом только программист, как правило ошибки банальны, проверяйте все тщательно и будет вам счастье

Удачи!
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 20.03.2015 в 14:15.
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не приходят данные на сервер. ajax,formData, firefox Dizelektwo JavaScript, Ajax 0 13.02.2015 21:23
Данные с формы (php) приходят в Junk mail shavedcat PHP 0 17.05.2012 03:15
Получить данные с сайта Andrey85 Работа с сетью в Delphi 2 10.11.2010 21:37
Входные данные сайта BALLIN Помощь студентам 3 13.05.2010 11:13
Прочесть данные с сайта nix01d Общие вопросы Delphi 3 15.04.2010 11:26