1

Тема: Функція mail()

include("blocks/bd.php"); /*З'єднання з БД*/
<form action="mail.php" method="post" name="mail_form">
    <p><label><input name="adress" type="" maxlength="" size="30"> Моя пошта</label></p>
    <p><label><input name="theme" type="" maxlength="" size="30"> Тема</label></p>
    <p><label>Повідомлення: <br><textarea name="text" cols="50" rows="8"></textarea></label></p>
    <p class="cap">
        <label><img src="<?php 
            $result4 = mysql_query("SELECT img FROM com_set ORDER BY rand()", $db);
            $myrow4 = mysql_fetch_array($result4);
            $img = $myrow4["img"];
            echo $myrow4["img"]; ?>" width="80" height="40">
        <input name="pr" type="text" size="5" maxlength="5"></label>
    </p>
    <input name="img" type="hidden" value="<?php echo $img; ?>">
    <p><label><input class="knopka" name="submit" type="submit" value="Відправити"></label></p>
</form>
<?php
include ("blocks/bd.php"); /*З'єднання з БД*/

if (isset($_POST['adress'])) { $adress = $_POST['adress']; }
if (isset($_POST['theme'])) { $theme = $_POST['theme']; }
if (isset($_POST['text'])) { $text = $_POST['text']; }
if (isset($_POST['pr'])) { $pr = $_POST['pr']; }
if (isset($_POST['submit'])) { $submit = $_POST['submit']; }
if (isset($_POST['img'])) { $img = $_POST['img']; }

if (isset($submit)) {
    if (isset($adress)) { trim($adress); } else { $adress = ""; }
    if (isset($theme)) { trim($theme); } else { $theme = ""; }
    if (isset($pr)) { trim($pr); } else { $pr = ""; }
    if (isset($text)) { trim($text); } else { $text = ""; }
    if (empty($adress) or empty($text) or empty($theme) or empty($pr)) { exit("<p>Ви ввели не всю інформацію! <br> <input name='back' type='button' value='Назад' onclick='javascript:self.back();'></p>"); }

    $result = mysql_query("SELECT sum FROM com_set WHERE img='$img'", $db);
    $myrow = mysql_fetch_array($result);

    if ($pr == $myrow["sum"]) {
        $emailTo = ''; /*Електронна пошта*/
          $body = "Email: $adress \n\nSubject: $theme \n\nComments:\n $text";
         mail($emailTo, $theme, $body);
    } else { exit("<p>Ви ввели неправильну інформацію з картинки! <br> <input name='back' type='button' value='Назад' onClick='history.go(-1)'></p>"); }
    echo "<html><head><meta http-equiv='Refresh' content='0; URL=contact.php'</head></html>";
    exit();
}
?>

В чому проблема?Помилок ніяких не показується, але на пошту лист не приходить?Вже кілька днів парюсь над цією проблемою...

2

Re: Функція mail()

Хоститеся де? У провайдера мейл дозволений? В папку "спам" заглядали?

Подякували: Monolith1

3 Востаннє редагувалося VTrim (22.12.2015 12:35:19)

Re: Функція mail()

В верх обох файлів

error_reporting(E_ALL);

І скиньте помилки,якщо вилізли.
Також може бути встановлений фільтр, який не приймає повідомлення з підозрілих серверів.

4

Re: Функція mail()

localhost, спам перевіряв.

5

Re: Функція mail()

VTrim написав:

В верх обох файлів

error_reporting(E_ALL);

І скиньте помилки,якщо вилізли.
Також може бути встановлений фільтр, який не приймає повідомлення з підозрілих серверів.

помилок не виводить...

6

Re: Функція mail()

Детальніше про налаштування localhost розповісти не хочете? Який php, який веб-сервер, який поштовик?

7

Re: Функція mail()

Використовую Denwer.А поштовик...А як дізнатися який поштовик?

8

Re: Функція mail()

не знаю як Denver, а OpenServer листи mail() функції шле в лог mail.

9

Re: Функція mail()

У N:\tmp\!sendmail ці всі листи я знайшов.Тому питання чому лист не приходить на саму пошту?

10 Востаннє редагувалося reverse2500 (22.12.2015 16:14:17)

Re: Функція mail()

бо денвер і ці всі  сервера ідуть для розробки і тесту, а не продакшену

Подякували: 221VOLT, koala, Monolith3

11

Re: Функція mail()

reverse2500 написав:

бо денвер і ці всі  сервера ідуть для розробки і тесту, а не продакшену

Тобто, коли в мене сайт на локальному сервері, то воно і не буде працювати?

12

Re: Функція mail()

воно працює, але записує в лог файлу, шо такий тест відправлено і статус ОК

Подякували: Monolith, 221VOLT2

13

Re: Функція mail()

reverse2500 написав:

воно працює, але записує в лог файлу, шо такий тест відправлено і статус ОК

Тобто, коли завантажу на хостинг, то буде нормально працювати?

14

Re: Функція mail()

так, саме так

Подякували: Monolith1

15

Re: Функція mail()

З локального хосту листи не відправляються.

Подякували: Monolith1

16

Re: Функція mail()

misha_bondar_2012 написав:
include("blocks/bd.php"); /*З'єднання з БД*/
<form action="mail.php" method="post" name="mail_form">
    <p><label><input name="adress" type="" maxlength="" size="30"> Моя пошта</label></p>
    <p><label><input name="theme" type="" maxlength="" size="30"> Тема</label></p>
    <p><label>Повідомлення: <br><textarea name="text" cols="50" rows="8"></textarea></label></p>
    <p class="cap">
        <label><img src="<?php 
            $result4 = mysql_query("SELECT img FROM com_set ORDER BY rand()", $db);
            $myrow4 = mysql_fetch_array($result4);
            $img = $myrow4["img"];
            echo $myrow4["img"]; ?>" width="80" height="40">
        <input name="pr" type="text" size="5" maxlength="5"></label>
    </p>
    <input name="img" type="hidden" value="<?php echo $img; ?>">
    <p><label><input class="knopka" name="submit" type="submit" value="Відправити"></label></p>
</form>
<?php
include ("blocks/bd.php"); /*З'єднання з БД*/

if (isset($_POST['adress'])) { $adress = $_POST['adress']; }
if (isset($_POST['theme'])) { $theme = $_POST['theme']; }
if (isset($_POST['text'])) { $text = $_POST['text']; }
if (isset($_POST['pr'])) { $pr = $_POST['pr']; }
if (isset($_POST['submit'])) { $submit = $_POST['submit']; }
if (isset($_POST['img'])) { $img = $_POST['img']; }

if (isset($submit)) {
    if (isset($adress)) { trim($adress); } else { $adress = ""; }
    if (isset($theme)) { trim($theme); } else { $theme = ""; }
    if (isset($pr)) { trim($pr); } else { $pr = ""; }
    if (isset($text)) { trim($text); } else { $text = ""; }
    if (empty($adress) or empty($text) or empty($theme) or empty($pr)) { exit("<p>Ви ввели не всю інформацію! <br> <input name='back' type='button' value='Назад' onclick='javascript:self.back();'></p>"); }

    $result = mysql_query("SELECT sum FROM com_set WHERE img='$img'", $db);
    $myrow = mysql_fetch_array($result);

    if ($pr == $myrow["sum"]) {
        $emailTo = ''; /*Електронна пошта*/
          $body = "Email: $adress \n\nSubject: $theme \n\nComments:\n $text";
         mail($emailTo, $theme, $body);
    } else { exit("<p>Ви ввели неправильну інформацію з картинки! <br> <input name='back' type='button' value='Назад' onClick='history.go(-1)'></p>"); }
    echo "<html><head><meta http-equiv='Refresh' content='0; URL=contact.php'</head></html>";
    exit();
}
?>

В чому проблема?Помилок ніяких не показується, але на пошту лист не приходить?Вже кілька днів парюсь над цією проблемою...

про email-заглушку денвера вам вірно відповіли,,

дивлячись на ваш код - можу вам порадити відокремлювати php-обчислення та звернення до бд від виводу,
як це ще називають - "php від html" - що є не зовсім вірним висловлюванням, проте можливо - більш зрозумілим.


як мінімум у вашого коду буде більш зрозуміла структура,
легше буде орієнтувати у вашому коді іншим програмістам при підтримці певного проекту,
можливо і вам також (для прикладу через пів-року+ після того як ви цей код написали, та й просто при пошуку помилок, зміні дизайну etc)

приклад вашого коду:

<?php
include("blocks/bd.php"); /*З'єднання з БД*/

/*блок php обчислень*/
$result4 = mysql_query("SELECT `img` FROM `com_set` ORDER BY rand()", $db);
$myrow4 = mysql_fetch_array($result4);
$img = $myrow4["img"];


/*далі блок виводу*/
?>
<form action="mail.php" method="post" name="mail_form">
    <p><label><input name="adress" type="" maxlength="" size="30"> Моя пошта</label></p>
    <p><label><input name="theme" type="" maxlength="" size="30"> Тема</label></p>
    <p><label>Повідомлення: <br><textarea name="text" cols="50" rows="8"></textarea></label></p>
    <p class="cap">
        <label><img src="<?php echo $img; ?>" width="80" height="40">
        <input name="pr" type="text" size="5" maxlength="5"></label>
    </p>
    <input name="img" type="hidden" value="<?php echo $img; ?>">
    <p><label><input class="knopka" name="submit" type="submit" value="Відправити"></label></p>
</form>
<?php
include ("blocks/bd.php"); /*З'єднання з БД*/

/*блок обчислень*/
$t1="<p>Ви ввели не всю інформацію! <br> <input name='back' type='button' value='Назад' onclick='javascript:self.back();'></p>";
$t2="<p>Ви ввели неправильну інформацію з картинки! <br> <input name='back' type='button' value='Назад' onClick='history.go(-1)'></p>";
$t3="<html><head><meta http-equiv='Refresh' content='0; URL=contact.php'></head></html>";
$q1=true;
$q2=true;

if (isset($_POST['adress'])) { $adress = $_POST['adress']; }
if (isset($_POST['theme'])) { $theme = $_POST['theme']; }
if (isset($_POST['text'])) { $text = $_POST['text']; }
if (isset($_POST['pr'])) { $pr = $_POST['pr']; }
if (isset($_POST['submit'])) { $submit = $_POST['submit']; }
if (isset($_POST['img'])) { $img = $_POST['img']; }

if (isset($submit)) {
    if (isset($adress)) { trim($adress); } else { $adress = ""; }
    if (isset($theme)) { trim($theme); } else { $theme = ""; }
    if (isset($pr)) { trim($pr); } else { $pr = ""; }
    if (isset($text)) { trim($text); } else { $text = ""; }
    if (empty($adress) or empty($text) or empty($theme) or empty($pr)) { $q1=false; }else{

    $result = mysql_query("SELECT `sum` FROM `com_set` WHERE `img`='$img'", $db);
    $myrow = mysql_fetch_array($result);

    if ($pr == $myrow["sum"]) {
        $emailTo = ''; /*Електронна пошта*/
          $body = "Email: $adress \n\nSubject: $theme \n\nComments:\n $text";
         mail($emailTo, $theme, $body);
    } else { $q2=false; }
    
    /*блок виводу*/
    
    if(!$q1){
        exit($t1);
    }
    if(!$q2){
        exit($t2);
    }
    
    echo $t3;
    exit;
    
    }
    }
?>

окрім цього хотів би звернути вашу увагу на те, що ---
1) mysql_query застарів, використовуйте mysqli_query
2) запити до mysql все ж краще писати правильно - використовуючи зворотні лапки - щоб одного чудового дня, коли часу зовсім не буде - не потратити багато часу, виясняючи чому "обвалився" сервіс-додаток-сайт...
3) вивід

<?php echo $img; ?>

можна записати як

<?=$img?>

за умови що версія php та налаштуання short_open_tag дозволяють ним користуватися
4) переадресацію можна робити не лише на html-meta

<meta http-equiv='Refresh' content='0; URL=contact.php'>

але й на js

<script type="text/javascript"> 
  window.location="http://site.com/page.php"
</script>

і на php - відразу

header("Location: http://site.com/page.php");exit;
header( 'Refresh: 0; url=http://site.com/page.php' );

чи через декілька секунд - наприклад 5 -

header( 'Refresh: 5; url=http://site.com/page.php' );

5) з відправленнями email не все так просто - для різних емейл-скриньок потрібно прописати різні заголовки щоб лист не попадав у спам - тобто може бути таке що на мейл-ру лист приходить добре а на гугл- у спам, чи навпаки

можливо тут можна додати ще багато чого)
запитуйте, відповім-допоможу по мірі можливостей і сил))

Подякували: Monolith1

17

Re: Функція mail()

Величезне спасибі.А щодо лапок:

2) запити до mysql все ж краще писати правильно - використовуючи зворотні лапки

Тобто замість "" використовувати '' ?

Подякували: 221VOLT1

18

Re: Функція mail()

Зворотні лапки - `keyword`.


3) вивід

<?php echo $img; ?>

можна записати як

<?=$img?>

за умови що версія php та налаштуання short_open_tag дозволяють ним користуватися

Починаючи з версії 5.4, запис "<?= ?>" доступний завжди.

Подякували: Monolith, 221VOLT2

19 Востаннє редагувалося Djalin (24.12.2015 23:08:31)

Re: Функція mail()

misha_bondar_2012 написав:

Використовую Denwer.А поштовик...А як дізнатися який поштовик?

Я більше скажу у денвері є заглушка яка усі листи кладе у певну папку - яку не пам’ятаю читайте інструкцію, для тестів юзайте хоча б якийсь безкоштовний хостинг.

Уже знайшов

http://localhost/Tests/sendmail/index.php

переглянути ваші листи

\тека з денвером\tmp\!sendmail\

20

Re: Функція mail()

Читайте документацію

Подякували: 221VOLT1