Все про PHP

Не нашли подходящего раздела? Вам сюда!

Re: Все про PHP

Сообщение Encoder » 30 сен 2013, 15:29

Еще заметил у вас в коде вот такие вещи:

Код: Выделить всё
if (strlen($_POST['submit']) !== 0) ...


Почему не написать так?

Код: Выделить всё
if ($_SERVER['REQUEST_METHOD'] == 'POST') ...


Или так:

Код: Выделить всё
if (isset($_POST['submit'])) ...


Вы постоянно используйте функцию strlen. Почитайте про функция isset и empty.
В вашем случае вместо strlen используите empty

Пример того как можно заменить например вот это:

Код: Выделить всё
if (strlen($login)==0) ...


Можно написать так:

Код: Выделить всё
if (empty($login)) ...


Еще вот такое заметил:

Код: Выделить всё
login=$_POST['login'];
$login=htmlspecialchars($login);$login=trim($login);


Можно написать так:

Код: Выделить всё
$login = trim(htmlspecialchars($_POST['login']));


Еще вот это:

Код: Выделить всё
unset($_SESSION['code']);unset($_SESSION['login']);unset($_SESSION['mail']);unset($_SESSION['password']);


Меняем на это:
Код: Выделить всё
unset($_SESSION['code'], $_SESSION['login'], $_SESSION['mail'], $_SESSION['password']);


Вот примерно так, некоторые моменты просто короче. С кодировкой письма разобрались?
Аватара пользователя
Encoder
Модератор
 
Сообщения: 360
Зарегистрирован: 21 фев 2011, 11:15

Re: Все про PHP

Сообщение Nikel097 » 30 сен 2013, 15:35

Когда читал про isset и empty, у меня с ними почему-то не получалось работать, потом забыл про них и в привычку вошел "глупый" способ на проверку длины.
А вот в остальных двух случаях не догадался, спасибо.

С кодировкой пока еще не разобрался, так как только что пришел домой.
Аватара пользователя
Nikel097
 
Сообщения: 276
Зарегистрирован: 04 июн 2012, 12:27
Откуда: Казахстан, Алматы

Re: Все про PHP

Сообщение Encoder » 30 сен 2013, 16:18

А что не получилось? Вместо (strlen() == 0) используйте empty(). А вместо (strlen() != 0) используйте !empty() вот и все. ;)
Аватара пользователя
Encoder
Модератор
 
Сообщения: 360
Зарегистрирован: 21 фев 2011, 11:15

Re: Все про PHP

Сообщение Nikel097 » 30 сен 2013, 18:41

Как вечер так не могу отправить письмо на mail.ru. (Скорее всего оставлю до выходных)
А Вы не знаете ли, почему я обрабатываю From так
Код: Выделить всё
   $from='=?utf-8?B?'. base64_encode("Администрация сайта").'?='.' smodels.kz'."\r\n";

А на @yandex.ru приходит так, но когда я открываю сообщение все отображается просто замечательно!
Изображение
Аватара пользователя
Nikel097
 
Сообщения: 276
Зарегистрирован: 04 июн 2012, 12:27
Откуда: Казахстан, Алматы

Re: Все про PHP

Сообщение Encoder » 01 окт 2013, 13:24

Вообщем вот потестировал этот код, отправляет на mail, yandex, google нормально.

Код: Выделить всё
<?php
    $to = 'email-address';
    $subject = 'Тема письма';
    $msg       = "Содержание письма code продолжение.";
    $headers = "Content-type: text/plain; charset=utf-8\r\nFrom: Encoder";
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (mail($to, $subject, $msg, $headers))
        echo "Письмо успешно отправлено.";
        else
            echo 'Ошибка!'; 
    }
?>
<!doctype html>
<html>
<head>
   <meta charset="utf-8">
   <title>Отправка письма</title>
</head>
<body>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
  <input type="submit">
</form>
</body>
</html>
Аватара пользователя
Encoder
Модератор
 
Сообщения: 360
Зарегистрирован: 21 фев 2011, 11:15

Re: Все про PHP

Сообщение Nikel097 » 01 окт 2013, 14:48

Спасибо большое. Но так как у меня в $headers русские буквы я ее немножко доработал:
Код: Выделить всё
$headers = "Content-type: text/plain; charset=utf-8\r\nFrom: ".iconv("UTF-8","Windows-1251","Администрация сайта smodels.kz");

А теперь буду звонить хостеру по причине не отправки на mail.ru.
Аватара пользователя
Nikel097
 
Сообщения: 276
Зарегистрирован: 04 июн 2012, 12:27
Откуда: Казахстан, Алматы

Re: Все про PHP

Сообщение Nikel097 » 01 окт 2013, 17:55

Хотя тоже не работает.
Аватара пользователя
Nikel097
 
Сообщения: 276
Зарегистрирован: 04 июн 2012, 12:27
Откуда: Казахстан, Алматы

Re: Все про PHP

Сообщение Nikel097 » 03 окт 2013, 13:33

По поводу долгой отправки...
Меня попросили отправить тестовое письмо себе на почту с сайта:
Код: Выделить всё
Судя по журналу работы, сначала сервер mail.ru оборвал соединение:
2013-10-02 18:25:05 cwd=/var/spool/exim 3 args: /usr/sbin/exim -Mc 1VRLUH-001T7H-4A
2013-10-02 18:25:05 1VRLUH-001T7H-4A SMTP connection outbound 1380716705 1VRLUH-001T7H-4A smodels.kz nikel097@bk.ru
2013-10-02 18:25:05 1VRLUH-001T7H-4A == nikel097@bk.ru <Nikel097@bk.ru> R=lookuphost T=remote_smtp defer (-46): SMTP error from remote mail server after DATA: host mxs.mail.ru [94.100.176.20]: 421 Try again later (91.201.215.149)

И затем при повторной отправке принял письмо:
2013-10-02 18:51:17 cwd=/var/spool/exim 11 args: /usr/sbin/exim -MCS -MCQ 377932 5 -MC remote_smtp mxs.mail.ru 94.100.176.20 2 1VRLUH-001T7H-4A
2013-10-02 18:51:18 1VRLUH-001T7H-4A => nikel097@bk.ru <Nikel097@bk.ru> R=lookuphost T=remote_smtp H=mxs.mail.ru [94.100.176.20]*
2013-10-02 18:51:18 1VRLUH-001T7H-4A Completed


Еще сказали, что скорее всего данные сервера используют грейлистинг.

Есть ли устранить каким-нибудь чудесным образом это.
Аватара пользователя
Nikel097
 
Сообщения: 276
Зарегистрирован: 04 июн 2012, 12:27
Откуда: Казахстан, Алматы

Re: Все про PHP

Сообщение Nikel097 » 04 окт 2013, 18:26

Теперь все отправляется быстро. Просто не отправлял письма пару дней с сайта.
Кстати понял почему у меня раньше было столько проблем при отправке писем
Вы написали:
...
$headers = "Content-type: text/plain; charset=utf-8\r\nFrom: Encoder";
if (mail($to, $subject, $msg, $headers))
...
А я
...
$headers = "Encoder Content-type: text/plain; charset=utf-8\r\n";
if (mail($to, $subject, $msg,"From:".$headers))
...
Аватара пользователя
Nikel097
 
Сообщения: 276
Зарегистрирован: 04 июн 2012, 12:27
Откуда: Казахстан, Алматы

Re: Все про PHP

Сообщение Nikel097 » 05 окт 2013, 14:06

Снова нужна помощь:
Вот фрагмент кода:
Код: Выделить всё
<?
echo($_POST['example']);
?>
<html><head></head><body>

<form action='' method='POST' name='form'>
<input type='text' name='example' value='<? echo($_POST['example']);?>'>
<input type='submit' value='Нажми'>
</form>

</body></html>


При вводе знака " выводит на экран \"
При вводе знака \" выводит на экран \\\"
и так далее. В чем ошибка??!! Можно ли как-нибудь исправить?
Аватара пользователя
Nikel097
 
Сообщения: 276
Зарегистрирован: 04 июн 2012, 12:27
Откуда: Казахстан, Алматы

Пред.След.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 54

cron
Рейтинг@Mail.ru