Ответы пользователя по тегу PHP
  • Как отправлять большое количество email?

    astrikovd
    @astrikovd
    Python Developer
    Можете использовать наш сервис - mailhandler.ru. Мы даем 10 000 email сообщений бесплатно, чтобы вы могли попробовать наш сервис и понять, подходим мы вам или нет. У нас есть как API для транзакционных писем, так и интерфейс для массовых рассылок (с конструктором и редактором HTML). Плюс мы предоставляем возможности трекинга писем, встраиваемые формы подписки для вашего сайта и многое другое.
    Ответ написан
    Комментировать
  • Будет ли правильным в php при авторизации просто занести только логин в сессию?

    astrikovd
    @astrikovd
    Python Developer
    Обычно при успешной авторизации запоминаю в сессию только id пользователя. Если логин в вашем случае уникален, то можно и его. Суть в том, чтобы при необходимости, вы могли в любой момент вытащить по этому полю остальные данные пользователя.
    Ответ написан
    Комментировать
  • Как реализовать отчет о доставке?

    astrikovd
    @astrikovd
    Python Developer
    На самом деле проверку доставки письма сделать можно, не 100% конечно, но все же. Делается это с помощью непосредственного взаимодействия с удаленным почтовиком, примерно так:

    /**
         * Запись в сокет
         */
        private function sWrite( $socket, $data){
            // отправляем команду в сокет
            fputs( $socket, $data );
            // получаем первый байт ответа от сервера
            $answer = fread( $socket, 1 );
            // узнаем информацию о состоянии потока
            $remains = socket_get_status( $socket );
            // и получаем оставшиеся байты ответа от сервера
            if( $remains --> 0 ) $answer .= fread( $socket, $remains['unread_bytes'] );
            // функция возвращает ответ от сервера на переданную команду
            return $answer;
        }
    
        /**
         * Соединение с почтовым сервером
         */
        private function connectToServer($hostname, $port, $timeout){
            $socket = fsockopen($hostname, $port, $errno, $errstr, $timeout );
            if( !$socket ){
                return false;
            }
            else return $socket;
        }
    
        /**
         * Проверка e-mail
         */
        private function checkEmail($email){
            // получаем данные об MX-записи домена, указанного в email
            $path = explode("@",$email);
            $hostname = $path[1];
            $mx = dns_get_record($hostname, DNS_MX );
            $hostname = empty($mx) ? $hostname : $mx[0]['target'];
            // открываем сокет и создаем поток
            $socket = $this->connectToServer($hostname, 25, 10);
            if(!$socket){
                return false;
            }
            else{
                // отправляем пустую строку, чтобы получить приветствие сервера
                $this -> sWrite( $socket, "" );
                // представляемся сами
                $this -> sWrite( $socket, "EHLO sitename.ru\r\n" );
                $ehlo = '<no-reply@sitename.ru>';
                $rcpt = '<'.$email.'>';
                $response = $this -> sWrite( $socket, "MAIL FROM: $ehlo\r\n" );
    
                $response = $this -> sWrite( $socket, "RCPT TO: $rcpt\r\n" );
    
                // закрываем соединение
                $this -> sWrite( $socket, "QUIT\r\n" );
                fclose( $socket );
                // ниже идет простейшая обработка полученного ответа
                if( substr_count( $response, "550" ) > 0 ) return false;
                else
                    if( substr_count( $response, "250" ) > 0) return true;
            }
        }
    Ответ написан
    3 комментария
  • Что лучше: mysql или mysqli или pdo (а также mysqli_real_escape_string или mysqli_prepare)?

    astrikovd
    @astrikovd
    Python Developer
    Исходя из обширного опыта использования PDO - 3 вариант лучше. Потому что:

    1. PDO работает с разными базами данных. В случае необходимости легко будет переключиться с mysql, например, на postgres.
    2. Используя PDO вы забываете о SQL-инъекциях (по крайней мере 1-уровня).
    3. Поверх PDO можно использовать ActiveRecord или DAO, что значительно сокращает время разработки конечного продукта.

    Есть и другие достоинства, но эти, как мне кажется, наиболее весомы.
    Ответ написан
    4 комментария