Задать вопрос
Ответы пользователя по тегу PHP
  • Как правильно написать цикл while внутри while в PHP?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Всё потому, что вы используете одно и то же подключение к базе данных. Получается так:
    1. Запрашиваются записи из db_news, база принимает этот запрос как текущий.
    2. Читается первая запись текущего запроса, т.е. из db_news.
    3. Через это же подключение запрашиваются записи из db_news_img. База запоминает новый запрос как текущий, готова передавать записи из db_news_img.
    4. Читается первая запись текущего запроса, т.е. из db_news_img.
    5. Возврат к началу цикла, хочется прочитать из db_news. Но этот запрос уже не является текущим, он "потерян", поэтому из него невозможно получить данные.
    6. Данных нет - значит конец цикла.

    Вам нужно запоминать и использовать указатель запроса, скорее всего так:
    $db_res1 = $db->Query("SELECT * FROM db_news WHERE cat_id = '$catid' ORDER BY id DESC");//
    if($db_res1->NumRows() > 0){
           while($news = $db_res1->FetchArray()){
                   $textfull = $news["news"];
                    $db_res2 = $db->Query("SELECT * FROM db_news_img WHERE news_id = '$news[id]' ORDER BY id DESC");//
                    if($db_res2->NumRows() > 0){
                            while($img = $db_res2->FetchArray()){
    Ответ написан
    Комментировать
  • Что это значит? Как сделать?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Скорее всего нужно сделать PHP-код, который будет делать запросы к API mrpopular.ru.
    Собственно готовый код приведён в конце указанной страницы...

    Либо второй вариант, нужно на сайте кидальщика ссылок сделать аналогичный API-функционал.
    Если есть доступ к исходному коду сайта - можно разбираться в хитросплетениях, и делать...
    Ответ написан
  • Как отправлять почту через smtp на mail.ru/gmail?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Поменяйте строку (она примерно 35-ая):
    fputs($socket, "EHLO " . $config['smtp_host'] . "\r\n");

    на код:
    fputs($socket, "EHLO " .gethostname(). "\r\n");
    Ответ написан
  • WalletOne почему не приходит ответ на curl запрос?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Как я понимаю, insomnia - это не curl.
    И какие там заголовки улетают-прилетают - не видно и не понятно.
    Копайте в эту сторону.
    Ответ написан
    Комментировать
  • Как вызвать функцию через Ajax?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    function clickBanner(c, b) {
      url_str = b + "/include/get_info.php";
      $.ajax({
        method: "GET",
        url: url_str,
        data: { 'type': "banner", 'id': c },
        success: function(d) {}
      })
    }

    Только у вас всё та же проблема: в get_info.php передаёте ID баннера, а записывать в базу нужно email кликнувшего баннер пользователя (через addHit())...
    Ответ написан
  • PHP как проверить строку?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Вариант без учёта кодировки текста:
    $str = "abcd - абвг.";
    if (preg_match("/^[a-zA-Zа-яА-Я0-9\-_. ]+$/s", $str))
    {
        // выполнить PHP код
    }
    Ответ написан
    Комментировать
  • Не правильно работает код php?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Код вполне рабочий. Проверяйте место вызова banners::addHit(), там аргументом явно указан не ID текущего пользователя, а что-то ещё (первый из базы данных).

    P.S. Или class_click меняется где-то ещё.
    Ответ написан
  • Как добавить в поиск preg_replace пробел и тире?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    <? $str = preg_replace('/[^a-zA-Zа-яА-Я0-9\s\-]/ui', '',input('f_search', '')); ?>
    Ответ написан
    Комментировать
  • Вылазит ошибка, как исправить?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    <?php if(!empty($_GET['msg']) AND $_GET['msg'] =='success'):?>
    Ответ написан
    2 комментария
  • Как записать каждое значение отдельно?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Тупой вариант:
    if (preg_match("#</form>[\s\r\n]*<br/><br/>[\s\r\n]*(.+?)</center>#s", $data, $regs))
    {
            foreach(explode("<br>", $regs[1]) as $v)
            {
                    if (preg_match("#^([^:]+):\s*(.+)$#", strip_tags($v), $regs2))
                    {
                            $arr[$regs2[1]] = $regs2[2];
                    }
            }
    }
    echo($arr['Name']." = ".$arr['Status']); // Moscow = Yes
    Ответ написан
    1 комментарий
  • Почему не работает отправка формы?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    В 'smart.php' вставьте PHP-код:
    ini_set('error_reporting', E_ALL);
    $mail = new PHPMailer;
    $mail->SMTPDebug = 2;

    и после этого смотрите ошибки в errorlog файле.
    Скорее всего там что-нибудь найдётся, раз письма не отправляются.
    Ответ написан
    Комментировать
  • Как построить Regex для скрытия части номера телефона?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    <?php
    $phone = "+352 44 44 44";
    $phone_stripped = preg_replace("/(\d\D*){4}$/", "*", $phone);
    ?>
    Ответ написан
    Комментировать
  • Выполнить php кода перед отправкой формы?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Отправляйте POST на свой сайт, обрабатывайте, и тут-же, на страничке выводите эту же заполненную форму, и JavaScript с onload командой document.forms[0].submit().

    P.S. Разумеется вторая форма должна обращаться уже на правильный сайт. Только вот не начнёт-ли правильный сайт бороться с чужим referer-ом?
    Ответ написан
    Комментировать
  • Скрипт проверка емаил адреса на существование, есть что-то подобное?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Самое простое - fsockopen() на 25-ый порт MX-записи для указанного email-а, и попытка доставить письмо (RCPT TO). Если ящик существует - сервер ответит "250 OK" (или что-нибудь из ошибок 450/451/452 в качестве борьбы со спамом).

    Но надо учитывать, что такая проверка может затянуться на несколько десятков секунд, играют вообще существование и скорость работы почтовика...
    Ответ написан
    Комментировать
  • Почему не устанавливается expires на сессию php?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    При установки cookie ещё имеет значение строка "Date:" из HTTP-заголовка ответа. Она указывает браузеру текущее время сервера. Далее браузер отнимает от cookie expires значение "Date:", и по разнице узнаёт, сколько минут можно пользоваться этим cookie. Проверить это можно, посмотрев время окончания cookie в самом браузере, оно будет отличаться от серверного (если часовые зоны разные)...

    В новой вкладке (с "пропавшей" cookie) какая страничка загружается? В ней есть session_start()?
    Ответ написан
    Комментировать
  • Php cUrl как вывести возвращаемые заголовки?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    После curl_setopt($ch, CURLOPT_HEADER, true) при curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) HTTP-header возвращается в теле ответа $html = curl_exec($ch). Вот оттуда его и доставайте через
    $html = curl_exec($ch);
    if ($html !== false)
    {
      $ch_info = curl_getinfo($ch);
      $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
      $header = substr($html, 0, $ch_info['header_size']);
      $html = substr($html, $ch_info['header_size']);
    }
    Ответ написан
    Комментировать
  • Как не учитывать пробелы между символов в регулятрном выражении?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    https?:\/\/((?:\{%[^%]*%\}|\{#[^#]*#\}|\{\{[^}]*\}\}|\S)+)
    Ответ написан
  • Как делается серфинг?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Скорее всего на второй странице (если именно загружается отдельная страница) стоит счётчик на Javascript, по окончании которого или грузится содержимое ещё одной страницы, или в уже загруженную страницу вставляется новое или показывается ранее скрытое содержимое. Вот и всё.
    Ответ написан
    Комментировать
  • Не выводится цикл из бд?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    <?php
    $host = 'localhost';
    $database = 'db';
    $user = 'root';
    $password = '';
    $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка: ".mysqli_error($link));
    
    $result = mysqli_query($link, 'SELECT name FROM class_testregion') or die("Ошибка: ".mysqli_error($link));
    $i = 1;
    while ($row = mysqli_fetch_assoc($result)) {
        echo("<a href='".$row['name']."'>hello".($i++)."</a><br>\n");
    }
    ?>
    Ответ написан
  • Как правильно организовать парсер php?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Делается первый curl_exec(), получили страницу авторизации.
    Распарсили, вытащили auth token. И всё.

    А где второй curl_exec(), с уже заполнеными полями формы авторизации? Только curl_close() - и прощай.
    Да, и Referer у этого второго запроса уже не может быть google.com, должен быть адрес этого сайта.
    Ответ написан
    6 комментариев