Ответы пользователя по тегу PHP
  • Выполнить 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().
    Ответ написан
    Комментировать
  • Почему не работает функция php?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Рекомендую сделать так:
    if (empty($row['id'])) echo ('Ошибка!');
    else mysqli_query($mysqli, "INSERT INTO `notifications` VALUES ('', '".mysqli_real_escape_string($mysqli, $row['id'])."', 0, NOW(), '".mysqli_real_escape_string($mysqli, $p2)."')");
    Ответ написан
  • Как правильно написать с версии php 5 на 7?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Функции reset() нужна переменная типа массив.
    $selected_currency=array_keys($currencies);
    reset($selected_currency);
    Ответ написан
    Комментировать
  • Как обновить все ячейки у определённого id?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну вот так:
    $uid = 222;
    if ($result = $mysqli->query("SELECT * FROM `121` WHERE `uid`='".$mysqli->real_escape_string($uid)."' LIMIT 1"))
    {
        $set = array();
        $row = $result->fetch_object();
        foreach ($row as $k => $v)
        {
            if ($k != "uid" AND $v !== 0)
            {
                $set[] = "`{$k}`='0'";
            }
        }
        $result->close();
        $mysqli->query("UPDATE `121` SET ".implode(", ", $set)." WHERE `uid`='".$mysqli->real_escape_string($uid)."'");
        unset($set, $result, $row);
    }
    Ответ написан
    2 комментария
  • Как объединить многомерный массив?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Так это не объединение, это переформатирование...
    $new_arr = array();
    foreach ($old_arr as $r) {
        if (empty($r['id'])) {
            continue;
        }
        foreach ($r as $k => $v) {
            if (preg_match("/^man\d*$/s", $k)) {
                $new_arr[] = array('Team' => $v, 'id' => $r['id']);
            }
        }
    }
    Ответ написан
    Комментировать
  • Как исправить ошибку?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Обычное решение:
    if (!isset($_GET['lang']) OR !in_array(trim($_GET['lang']), $config['langs'])) {

    Плохая практика:
    if (!in_array(trim(@$_GET['lang']), $config['langs'])) {
    Ответ написан
    Комментировать
  • Как сделать чтобы при новом переходе на страницу менялся конец его url?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    <a href="<?=SITE_DIR?>personal/favorite?12<?=rand();?>">
    Ответ написан
    Комментировать
  • Разделение "запроса" и веб-страницы - о чем идет речь?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Видимо отдельно функцию для запроса входных данных, отдельно функцию получения SNMP, отдельно функцию вывода HTML, и отдельно функцию для вызова первого, второго и третьего.
    Ответ написан
    Комментировать