Ответы пользователя по тегу PHP
  • Как пройтись по массиву php и вывести результат цикла в Select?

    m0pfin
    @m0pfin Автор вопроса
    Нашел такое решение, в принципе годится

    $data = [
        'Перв.',
        'Втор.',
        'трет.',
        'Четверт.',
        'и тд.',
    ];
    echo '<form action="" method="GET">';
    echo '<select>';
    foreach ($data as $item) {
        echo "<option value='$item'> $item </option>" ;
    }
    echo '</select>';
    echo '</form>';
    Ответ написан
    Комментировать
  • Где у меня ошибка (php)?

    m0pfin
    @m0pfin
    Если уж проверять есть ли переменные, то хотя бы используйте функцию
    isset()

    Найдите в сети исходник обычной формы отправки, и посмотрите как устроено, а то это велосипед.
    Например на: Github
    Ответ написан
    Комментировать
  • Как получить тело POST запроса в php?

    m0pfin
    @m0pfin
    Потому что ты берешь JSON и ничего с ним не делаешь)
    Его нужно обработать json_decode()

    $inputJSON = file_get_contents('php://input');
    $input= json_decode( $inputJSON, TRUE ); 
    
    print_r(json_encode($input));
    Ответ написан
    1 комментарий
  • Best practices по cUrl в php?

    m0pfin
    @m0pfin
    Писал функция для авторизации на сайте, и парсингом нужного значения с кабинета, если разберешься пригодится:
    P.S. использовал библиотеку PhpQuery
    /**
     * Функция для прасинга с авторизацией
     * @param $url - ссылка на сайт
     * @param $post - POST запрос для авторизации
     * @param string $pattern - шаблон для регулярки
     * @param string $url_page - ссылка куда нужно перейти после авторизации в кабинете, если нужное нам значение нет на главной ( не обязательное поле)
     * @param string $referer - реферер откуда пришли (необязательное поле)
     * @return mixed|string
     */
    
    function curl_get($url, $post, $pattern = "", $url_page = '', $referer = 'https://google.com'){
        $ch = curl_init();
    
        curl_setopt($ch, CURLOPT_COOKIESESSION, true);
        curl_setopt($ch, CURLOPT_COOKIEFILE, "/lead.txt"); // Куда записывать куки
        curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace("\\", "/", getcwd()).'/lead.txt');
    
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_ENCODING , "gzip");
    
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36");
        curl_setopt($ch, CURLOPT_REFERER, $referer); // Говорим откуда пришли REFERER
    
        curl_setopt($ch, CURLOPT_URL, $url); // Переходим по нашему URLу
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // Отправляем наши POST данные
        $sess_cookie=substr($data, strpos($data, "PHPSESSID=")+10, 32);
    
        curl_setopt($ch, CURLOPT_COOKIE, $sess_cookie);
        $data = curl_exec($ch);
    
    //Если после авторизации нужно перейти на определенную страницу проверяем нужно ли перейти или нет
        if($url_page != ''){ 
            curl_setopt($ch, CURLOPT_URL, $url_page);
            $data = curl_exec($ch);
    
        }
    
        //Извлекаем баланс
        $document = phpQuery::newDocument($data);
        $str = $document;
        preg_match_all($pattern, $str, $arr);
        $data = implode(”, $arr[1]);
    
        curl_close($ch);
        phpQuery::unloadDocuments($document);
        return $data;
    }
    
        /**
         * Парсим баланс
         */
    
        $referer = 'https://site.pro';
        $post = "mail=test%40gmail.com&pass=testtest"; // POST запрос при авторизации
        $pattern = "#<b>(.+?)</b>#is"; // Шаблон для регулярки чтобы выбрать нужное значение
    
        $balance = curl_get('https://auth.site.pro/login', $post, $pattern); // используем функцию
        echo $balance; // Выводим на экран
    Ответ написан
    1 комментарий
  • Роутинг на PHP?

    m0pfin
    @m0pfin
    В микрофреймворке Slim хороший роутинг
    Ответ написан
    Комментировать
  • Как правильно сделать, чтоб скрипт обработал лишь 4 записи?

    m0pfin
    @m0pfin
    ODRER BY id DESC LIMIT 4
    в запросе нельзя сделать?
    И затем их удалить
    Ответ написан
    Комментировать
  • Как в select вывести значения из БД?

    m0pfin
    @m0pfin
    <?php 
    include "db.php";
    
    $sql = mysqli_query ($db, "SELECT * FROM variants");
    
    echo '<select name="kolvo" id="kolvo_price">';
    
    while ($result = mysqli_fetch_array($sql)){
    
    echo ' <option value="'.$result['amount'].'">'.$result['price'].'</option>';
    
    }
    echo '</select>';
    Ответ написан
    Комментировать
  • Почему цикл while не останавливается?

    m0pfin
    @m0pfin
    Для счетчика обычно используют цикл FOR
    for ($i = 1; $i <= 3; $i++){
    echo $i;
    }
    
    // 1
    // 2
    // 3
    Ответ написан
    Комментировать
  • Как настроить запуск php скрипта через cron?

    m0pfin
    @m0pfin
    Какая панель управления хостингом/сервером?
    Ответ написан
    Комментировать
  • Почему не добавляются данные с формы в БД MySQL?

    m0pfin
    @m0pfin
    Первый раз вижу такой инклуд -_- БД, обычно так конфиг к БД инклудят
    $conn = require "db.php";
    Просто
    require "db.php";

    И вот это
    $sql = "INSERT INTO users (Name, Surname, email, telephon, pass) VALUES ('$Name', '$Surname', 'email', '$telephon', '$pass')";
          if (mysqli_query($conn, $sql))


    можно заменить:
    $sql = mysqli_query($conn, "INSERT INTO users (Name, Surname, email, telephon, pass) VALUES ('$Name', '$Surname', 'email', '$telephon', '$pass')");
          if ($sql){
               //
          }


    Чтобы поле не отправлялось пустым можно ставить required тогда браузер сам скажет что поле не может быть пустым

    <input type="text" name="Name" value="<?php echo @$data['Name']; ?>" required>


    Покажите код с db.php
    Ответ написан
  • Как вытянуть данные с JSON?

    m0pfin
    @m0pfin Автор вопроса
    Тоесть чтобы достать Email нужно указать так?

    $result->DATA->Email;
    Ответ написан
  • Как в Telegram bot сделать типа опросника?

    m0pfin
    @m0pfin Автор вопроса
    Кому-то может будет полезно, немного развил дальше получился такой код:
    (Пока не могу сохранить значение переменной в пределах скрипта, в базу пишутся пустые переменные)

    elseif ($text == "\xF0\x9F\x8E\xAC Заказать билет") {
            $reply = "Для заказа билета пришлите: 
            Пример - <code>Город: Ваш город</code>";
            
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $reply ]);
            
        }elseif(strstr($text, "Город")){
                
                $_SESSION['city'] = $text;
                $city = $_SESSION['city'];
                
                $reply = "$city - Сохранен! \nПример - <code>Кинотеатр: Ваш кинотеатр</code>"; 
                
                $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $reply ]);
                
                }elseif(strstr($text,"Кинотеатр")){
                
                $_SESSION['kinoteatr'] = $text;
                $kinoteatr = $_SESSION['kinoteatr'];
                
                $reply = "$kinoteatr - Сохранен! \nПример - <code>Фильм: Название фильма 20:45 (время сеанса)</code>"; 
                
                $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $reply ]);
                
                }elseif(strstr($text,"Фильм")){
                
                $_SESSION['film'] = $text;
                $film = $_SESSION['film'];
                
                $reply = "$film - Сохранен! \nПример - <code>Ряд: 7 ряд, 5 6 7 8 место</code>"; 
                
                $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $reply ]);
                }elseif(strstr($text,"Ряд")){
    
                $_SESSION['count'] = $text;
                $count = $_SESSION['count'];
                
                $reply = "$count,$film,$kinoteatr,$city - Сохранен! \nПример - <code>Сумма заказа: 690 р</code>"; 
                
                $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $reply ]);
                
                }elseif(strstr($text,"Сумма")){
                
                $_SESSION['cost'] = $text;
                $cost = $_SESSION['cost'];
                
                
                if (empty($city || $kinoteatr || $film || $count || $cost)){
                    
                    $reply = "$cost - Сохранен! \nВаш заказ сформирован! № Заказа: 2034"; 
                    $userlogin = '@'.$name;
                    mysqli_query($db, "INSERT INTO `bot_order`(`date`, `chat_id`, `username`, `city`, `kinoteatr`, `film`, `count`, `cost`) VALUES (NOW(),'$chat_id','$userlogin','$city','$kinoteatr','$film','$count','$cost')");
                     $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $reply ]);
                     $_SESSION  = array();
                     unset($_SESSION); // или $_SESSION = array() для очистки всех данных сессии
                     session_destroy();
                    }
                    else{
                         $reply = "Какое-то поле вы пропустили :( \nПожалуйста, начните сначала.\n\nДля заказа билета пришлите: \nПример - <code>Город: Ваш город</code>"; 
                         $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $reply ]);
                         $_SESSION  = array();
                         unset($_SESSION); // или $_SESSION = array() для очистки всех данных сессии
                         session_destroy();
                    }
               
              }
    Ответ написан
  • Как распарсить json ответ?

    m0pfin
    @m0pfin
    $details = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$ip}"));
    $city = $details->{'geoplugin_city'}; // Город
    $region = $details->{'geoplugin_region'}; // Регион
    $country = $details->{'geoplugin_countryCode'}; // Код страны

    Для примера
    $details = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$ip}"));
    echo $details;

    Посмотри что отдает просто Json_decode и что я выдираю, и поймешь как работает
    P.S. в переменную $ip не зубдь IP засунуть
    Ответ написан
    Комментировать
  • Как сделать так чтобы когда пользователь добавит запись то другому пользователю в профиле не будет видно запись того пользователь кто добавил?

    m0pfin
    @m0pfin
    Типа друзей что ли?
    Проверьте просто есть ли он в друзьях у него, если есть показываем, если нет то далее уже по логике приложения
    // Проверяем есть ли пользователь у него в друзьях
    if ($friends == $login){
    echo 'Привет друг';
    }

    Это конечно всё очень утрировано, но я думаю работать должно так.
    Можете выгружать массив с друзьями и искать среди него, либо сразу в SQL запросе искать по логину что естественно лучше, если совпадений не найдено то и ничего не покажет
    Ответ написан
    Комментировать
  • Как блокировать все возможные поисковые боты?

    m0pfin
    @m0pfin
    Можешь неавторизованным пользователям ничего не показывать, бот как раз не увидит
    Ответ написан
    1 комментарий
  • Какую книгу прочитать, чтобы смочь написать простенькую регистрацию и авторизацию для сайта?

    m0pfin
    @m0pfin
    Возьми скрипт регистрации любой простой, с комментариями и посмотри что и как сделано

    Вот пример логина по сессиям:

    <?php
    //Запуск сессий;
    session_start();
    include 'db.php';
    
    $login = 'test';
    $pass = 'test';
    
    if (isset($_POST['login']) && isset($_POST['password']))
    {
    // получаем данные из формы с авторизацией
    $login_c = mysql_real_escape_string($_POST['login']);
    $password_c = $_POST['password'];
    //проверка пароля и логина
    if (($login_c==$login)&& ($password_c==$pass)){
    echo ("логин совпадает и пароль верны");
    $_SESSION['Name']=$login_c;
    // идем на страницу для авторизованного пользователя
    header("Location: http://".$_SERVER['SERVER_NAME']);
    }
    else
    {
    die('Такой логин с паролем не найдены в базе данных.');
    }
    }
    ?>
     <h1>Log into your account</h1>
    
            <form method = "POST">
                  <input type="text" name="login" placeholder="Login">
                  <input type="password" name="password" placeholder="Password">
                  <button type="submit">Login</button>
            </form>
    Ответ написан
    Комментировать
  • Парсинг сайта как?

    m0pfin
    @m0pfin
    json_decode(); попробуй мне помогло

    $data = json_decode($html);
        $posts = $data->results->posts;
        if (isset($text_for_pars)) {
            foreach($posts as $post) {
                $filename = 'pars.txt';
                $text = "https://".$post->link;
                //записываем файл
                file_put_contents($filename, $text."\r\n", FILE_APPEND);
                
                //вывод результата на экран
               // echo "https://".$post->link."<br>";
                
            }
        }
        header("Location: ".$_SERVER['PHP_PHP_SELF']);
       break;
    Ответ написан
    Комментировать
  • Как корректно настроить заявки с сайта?

    m0pfin
    @m0pfin
    Заявки с одностраничников лучше в БД сохранять, будет структурированность данных.
    Ответ написан
    Комментировать