Ответы пользователя по тегу PHP
  • Как сделать PDO + IN?

    Я для данной цели написал класс, который работает следующим образом
    $stmt = false;//Требуется объявить так как передаётся в метод execute по ссылке
    $params = array("ids"=>array(1,4,7));
    $sql = "SELECT * FROM `users` WHERE `id` IN (:ids)";
    nikolaevevgePDOIn::execute($pdo,$sql,$params,$stmt);

    Сам код класса выложен тут: https://blog.ivru.net/?id=270
    P.S. в моём случаи для формирования отчёта требовалось выполнить сразу ряд запросов в которых предполагалась передача массива значений в конструкцию IN(и даже нескольких массивов в несколько конструкций IN), поэтому применение данного класса вполне оправдано.
    Ответ написан
    Комментировать
  • PHP. PhpMailer как отправить почту по SMTP через gmail.com от Google?Почему ошибка авторизации?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Сделал следующее, поьзователь wisgest предложил переключить флажок небезопасных приложений по ссылке https://myaccount.google.com/lesssecureapps, он у меня был выключен переключил сразу не помогло.(потом я его кстати назад переставил так что и при выключенном видимо отправляется).

    Затем я из кода убрал строку(закомментировал): $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    вместо неё добавил такую $mail->SMTPSecure = 'tls';

    Вот окончательный код с использованием которого у меня отправилось:

    <?php
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\SMTP;
    use PHPMailer\PHPMailer\Exception;
    
    require 'vendor/autoload.php';
    $mail = new PHPMailer(true);
    
    try {
      $mail->SMTPDebug = SMTP::DEBUG_SERVER;
      $mail->isSMTP();
      $mail->Host = 'smtp.gmail.com';
      $mail->SMTPAuth   = true;
      $mail->Username   = 'gmaillogin@gmail.com';
      $mail->Password   = 'password';
      $mail->Port = 587;
      $mail->setFrom("gmaillogin@gmail.com","Имя от кого отправлять");
      $mail->addAddress("komuotpravlyaem@yandex.ru","");//Кому отправляем
    //$mail->addReplyTo("kudaotvetit@yandex.ru","Имя кому писать при ответе");
      $mail->SMTPSecure = 'tls';
      $mail->isHTML(true);//HTML формат
      $mail->Subject = "Тема сообщения";
      $mail->Body    = "Содержание сообщения";
      $mail->AltBody = "Альтернативное содержание сообщения";
    
      $mail->send();
      echo "Сообщение отправлено";
    } catch (Exception $e) {
      echo "Ошибка отправки: {$mail->ErrorInfo}";
    }


    Уже когда всё заработало увидел что оказывается google вот такое уведомление присылал:
    5ea5fd45bf5da648691348.jpeg
    Так что возможно переключатель небезопасных приложений имел значение, не смотря на то что я его сейчас выключил и без него тоже отправляется. Так же есть предположение что после переключения настройки небезопасных приложений, это изменение применяется не сразу, поэтому есть смысл повторно попробовать к примеру через час после его переключения.
    Ответ написан
    Комментировать
  • Как отформатировать текст письма, отправляемого на почту?

    Вот как раз вопрос задал по SMTP тут есть пример кода под Ваш вопрос - PHP. PhpMailer как отправить почту по SMTP через gmail.com от Google?Почему ошибка авторизации?
    Только в теле сообщения передавайте нужный Ваш HTML типа Благодарим вас за выбор нашей компании!Вам скоро перезвонят для уточнения деталей. и так далее

    Это если у Вас достаточно простое текстовое сообщение.
    Если же всё красиво делать то для разметки в письмах используется табличная верстка. Информацию в поисковиках ищите как верстать письма.
    Ответ написан
    Комментировать
  • Как наложить текст на изображение с помощью PHP?

    Если Вам нужно вывести русский(кирилический) текст на изображении которое геренируется с помощью языка информацию можно найти по ссылке blog.ivru.net/?id=189
    Ответ написан
    Комментировать
  • Как парсить выдачу yandex?

    Если говорить про разбор HTML кода яндекса и определение позиций, то вот код скрипта на php - https://blog.ivru.net/?id=185
    Ответ написан
    Комментировать
  • Php работа с регистром русских символов в UTF-8?

    Как на счёт использования следующего класса: blog.ivru.net/?id=187

    Примеры использования:
    mystrto::lower("АБВГABCD"); результат: абвгabcd
    mystrto::upper("абвгabcd"); результат: АБВГABCD.
    Ответ написан
    Комментировать
  • Отправляется шаблон письма без картинок?

    Как вариант картинки добавить аттачем к письму и src прописывать на них.
    Хотя не помню проблем когда указывал адреса картинок как <img src="domen.ru/abc.jpg"> где src полный url до сайта где лежат картинки
    Ответ написан
    Комментировать
  • Как включить zip в php7 ispmgr?

    Для случая без панели в командной строке CentOs для версии PHP 7.2 выполните yum install php-pecl-zip
    Ответ написан
    Комментировать
  • Как подключть яндекс кассу к самописному сайту?

    Вот пример php кода а так же моменты которые нужно знать при написании системы приёма платежей через яндекс-кассу blog.ivru.net/?id=80
    Ответ написан
    Комментировать
  • GeoIp - как определить город посетителя?

    nikolaevevgeGeoIp: blog.ivru.net/?id=82
    Библиотека подходит для Joomla Wordpress Bitrix теоретически любой версии. CMS определяется автоматически.
    Ответ написан
    Комментировать
  • Для чего нужны Генераторы (yield) в php?

    Благодаря использованию генератора сохраняется состояние функции. Следующая итерация начинается с места окончания с теми же переменными с которыми завершилась предыдущая.
    По ссылке пример кода и сразу же результат выполнения(а так же информация что будет если использовать return в генераторе) blog.ivru.net/?id=145
    Ответ написан
  • Как сделать, чтобы из json-массива создавался массив, а не объект?

    nikolaevevge
    @nikolaevevge Автор вопроса
    нашёл ответ:
    Создаём всё так же: $a = json_encode(array("a"=>"b","c"=>"d"));
    Назад в массив так json_decode($a,true);// то есть второй параметр устанавливаем в true
    Ответ написан
    Комментировать
  • Проверка работоспособности ipgeobase?

    По ссылке blog.ivru.net/?id=82 приводится код класса для работы с базой IpGeobase а так же кеширования запросов(чтобы несколько раз один и тот же стек адресов у сервера ipGeoBase не запрашивать и как следствие уменьшить время ответа Вашего сайта)

    А касаемо проверки работоспособности, запросы к ipGeoBase шлются на адрес ipgeobase.ru:7020/geo?ip=193.232.224.10 (по ссылке приведен пример для города Иваново - определилось корректно)
    Ответ написан
    Комментировать
  • Подключение яндекс кассы php?

    По ссылке blog.ivru.net/?id=80 описано как отправляется запрос к яндекс кассе и как получить ответ после оплаты.
    Так же приводятся необходимые ссылки, а именно где скачать SDK библиотеку, как проводить тестирование, где брать тестовые реквизиты для теста оплаты без реального перевода денег.
    Ответ написан
    Комментировать
  • Для чего используют isset в if(isset($_POST['submit'])) {}?

    Например для того, чтобы не использовать в скрипте не объявленных переменных и не существующих ключей массива.

    Генератор для безопасного получниея $_POST $_REQUEST $_GET $_COOKIE по ссылке: blog.ivru.net/issetgen.php
    Например вводим имя: traLaLa
    Выбираем $_REQUEST
    Значение по-умолчанию указываем: ""
    И ставим флаг htmlspecialchars

    Результат работы генератора:
    $traLaLa = "";
    if (isset($_REQUEST["traLaLa"])) {
    $traLaLa = htmlspecialchars($_REQUEST["traLaLa"]);
    }
    Ответ написан
    Комментировать
  • Как проверить переменную $_GET на целое число?

    Допустим есть переменная $a = "100"; То есть строка содержащая целое число.
    myint($a,true);// вернёт true
    myint($a,false);// вернёт false поскольку для того чтобы проверять и строковые значения нужно передавать true в качестве второго параметра

    или же
    $a = "100";// то-есть Int 100

    тогда
    myint($a,true);// вернёт true
    myint($a,false);// тоже вернёт true

    Обратите внимание в PHP нет функции myint, чтобы ей пользоваться разместите предварительно её код из листинга по ссылке: blog.ivru.net/?id=103
    Ответ написан
    Комментировать
  • Как запретить пользователю повторно заполнять и отправлять форму?

    Открываете сессию.

    при отправке формы проверяете в $_SESSION налчиие какого либо элемента например if (!isset($_SESSION["formsend"])) { ... тут код если ранее не отправлял}
    После отправки создаёте запись в сессии $_SESSION["formsend"] = 1;
    Ответ написан
    Комментировать
  • Curl php повторный запрос?

    HTTP устроен так что он в любом случаи после того как Вы получили данные с одной страницы разрывает соединение, хотя это не совсем так если есть кип аливе, хотя он не влияет на суть HTTP протокола - сервер отдал вам данные. Если даже соединение с сервером не разорвано запрос всё равно нужно делать заново и заново передавать все данные.

    Пробуйте так: curlpro.ivru.net

    <?php
    require_once('curlpro.php');
    $cp = new curlPro;
    $cp->newip("domen.ru");
    $cp->newuri("/page1.html");
    $cp->cookiedata("ключь_первой_куки","значение_первой_куки");
    //$cp->https(true);//Раскоментировать если https
    $html1 = $cp->go()->val();

    // Ещё один запрос с данными кук пришедших от сервера
    $cp->setservercookie();// Установить для нового запроса куки от сервера
    $cp->newuri("/page2.html");
    $html2 = $cp->go()->val();
    Ответ написан
    Комментировать
  • Почему не работает сайт, после смены PHP с 5.2 на 5.3?

    PHP 5.3 норм ещё - можно с ней работать.
    После того как обновили с PHP 5.2 возможно у Вас слетели модули php, такие как например php-mysql php-gd и другие. Таким образом Вам необходимо доставить все библиотеки которые были у Вас в PHP 5.2

    P.S. Странно конечно что в 2019 году Вы где то нашли PHP 5.2, ладно бы ещё 5.3 которая если не ошибкюсь по дефолту устанавливается на CentOs 6, но PHP 5.2 то у Вас откуда?
    Ответ написан
    Комментировать
  • Как использовать массив cookie PHP?

    <?php
    require_once('curlPro.php');
    $cp->newip("domen_или_ip");
    $cp->newuri("/example-test-page.php");

    $cp->cookiedata("cookieKey","cookieValue");

    $html = $cp->go()->val();// получили html от сервера

    Библиотеку curlPro можно скачать тут curlpro.ivru.net в ней же можно посмотреть как она работает с cookie в методе go

    Или вот даже напишу:
    if (count($this->cookiearray)) {
    foreach ($this->cookiearray as $name => $value) {
    $cookie[] = $name . "=" . $value;
    }
    curl_setopt($ch, CURLOPT_COOKIE, join('; ', $cookie));
    }

    То есть в curl_setopt($ch, CURLOPT_COOKIE, $param); в качестве $param передаётся что то вроде "key1=value1&key2=value2" и всего делов.
    Ответ написан
    Комментировать