Ответы пользователя по тегу PHP
  • 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 комментариев
  • Как дождаться обновления cookie?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Внутри $this->auth(), если устанавливаете setcookie() - то не забывайте менять и содержимое $cookie['code'] (который потом используете в $this->request())...
    Ответ написан
    Комментировать
  • Как при старте сервера запустить cron задачу только после старта Mysql?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ещё вариант. Если cron-задача запускается под пользователем, у которого есть права на чтение файла /var/run/mysqld/mysqld.pid (это где демон mysql хранит свой PID, у вас может быть по другому адресу) - то можно проверять наличие файла, читать из него PID, и проверять существование такого процесса через posix_getpgid($PID) или file_exists("/proc/{$PID}").

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

    А самое элементарное: в начале приведённого файла - sleep(300).
    Ответ написан
    Комментировать
  • Как выполнить sql запрос?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Однако очень-сильно-супер-нуб, да?
    <?php
    // Файл firstsql.php
    $host='localhost'; // имя хоста (уточняется у провайдера), и как правило используется 'localhost'
    $database='__database_name__'; // имя базы данных, которую вы должны вписать вместо __database_name__
    $user='__user_name__'; // заданное вами имя пользователя, его надо знать и вписать вместо __user_name__
    $pswd='__user_password__'; // заданный вами пароль, его надо вписать вместо __user_password__
     
    $dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL: ".mysql_error());
    mysql_select_db($database, $dbh) or die("Не могу подключиться к базе: ".mysql_error($dbh));
    
    //Идущие далее запросы УДАЛЯЮТ записи из таблиц,
    //опустошают таблицы,
    //вы ПОТЕРЯЕТЕ эти данные!!!!
    
    $query ="SET foreign_key_checks = 0;TRUNCATE TABLE oc_product;TRUNCATE TABLE oc_product_attribute;TRUNCATE TABLE oc_product_description;TRUNCATE TABLE oc_product_discount;TRUNCATE TABLE oc_product_image;TRUNCATE TABLE oc_product_option;TRUNCATE TABLE oc_product_option_value;TRUNCATE TABLE oc_product_related;TRUNCATE TABLE oc_product_related;TRUNCATE TABLE oc_product_reward;TRUNCATE TABLE oc_product_special;TRUNCATE TABLE oc_product_to_category;TRUNCATE TABLE oc_product_to_download;TRUNCATE TABLE oc_product_to_layout;TRUNCATE TABLE oc_product_to_store;TRUNCATE TABLE oc_review;DELETE FROM oc_url_alias WHERE query LIKE 'product_id=%';TRUNCATE oc_category;TRUNCATE oc_category_description;TRUNCATE oc_category_path; TRUNCATE oc_category_to_store;TRUNCATE oc_category_to_layout;TRUNCATE oc_category_filter;";
    
    foreach (explode(";", $query) as $q)
    {
            mysql_query($q, $dbh) or die("Ошибка выполнения запроса: ".mysql_error($dbh));
    }
    ?>

    Этот текст нужно сохранить в файл "firstsql.php", и в браузере открыть этот файл по ссылке типа http://адрес-вашего-сайта/firstsql.php.
    Ответ написан
  • Как определить, чередуются ли буквы и цифры в строке?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    if (preg_match('/^(\w\d|\w$)+$/', $arr[$i])) { }
    Ответ написан
    Комментировать
  • Как правильно написать php класс для работы с mysqli?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Конкретно в вашем коде первая ошибка из-за того, что переменная $sql (открытое соединение с MySQL) не попадает внутрь функции select(). Или передавайте в качестве аргумента (что неудобно из-за лишнего кода), или храните эту переменную внутри класса Database{}.

    Вторая ошибка вытекает из первой, поскольку mysqli_query() не отрабатывает корректно, не возвращает результат, необходимый в mysqli_fetch_array().
    Ответ написан
    Комментировать