Недавние обновления
Российская Федерация
  • UC Browser не открывал сайты с https://
    Решение найдено не работает протокол HTTPS! UC Browser отключение проверки сертификатов Столкнулся с проблемой не мог в UC Browser зайти в ВК и в Гугл-почту даже и в Ютуб выдавало ошибка подключения защищенного соединения типа заходить мог только на сайты с http:// на не с https:// -защищенные просто не хотели работать!Перерыл кучу настроек в браузере все перепробывал но не нашел не чего чтоб...
    0 Комментарии 0 Поделились
  • Скрипт распаковки загруженных на сервер файлов
    Данный скрипт позволяет распаковать загруженный на сервер архив в заданную папку.
    Код функции распаковки:
    /**
    * Распаковка архива
    *
    * @param string $source - Путь к файлу архива
    * @param string $dest - куда извлекать
    *
    * @return bool
    */
    function ar_unpack( $source, $dest )
    {

    $zip = new ZipArchive;
    $is = $zip -> open( $source );
    if( $is ) {
    $zip -> extractTo( $dest );
    $zip -> close();
    } else {
    return false;
    }

    return true;
    }
    Код скрипта:
    if(isset($_POST['load']))
    {
    // файл архива, загруженный на сервер
    $archive = $_FILES['archive'];

    // путь куда будет сохраняться архива
    $dest = getcwd() . '/' . $archive['name'];

    // пытаемся переместить загруженный архив из временной папки в нужную
    if (!move_uploaded_file($archive['tmp_name'], $dest)) {
    print "Невозможно загрузить {$archive['name']} ";
    }
    else {
    print "Временная папка {$archive['tmp_name']}</br>";
    print "Файл <b>{$archive['name']}</b> успешно загружен: <b>{$dest}</b><br/>";

    // даем имя папке, в которую будем извлекать файлы
    $dir = substr( $archive['name'], 0, strrpos( $archive['name'], '.' ) );

    // распаковываем архив и даем ссылку на файл index.php
    // для доступа к распакованному содержимому
    if( ar_unpack( $dest, $dir ) ) {
    print "
    Архив <b>{$dest}</b> успешно распакован в папку <b>{$dir}</b><br/>
    <a href = '{$dir}/index.php'>{$dir}</a>
    ";
    }
    }

    }
    Код формы:
    <p>
    <h3>Загрузка архива</h3>
    </p>
    <p>
    <form action = "" method = "post" enctype = "multipart/form-data">
    <p>
    <input type = "file" name = "archive" />
    </p>
    <p>
    <input type = "submit" name = "load" value = "Загрузить" />
    </p>
    </form>
    </p>

    Таким образом, с помощью данного скрипта можно распаковать архив на сервере в PHP.
    Скрипт распаковки загруженных на сервер файлов Данный скрипт позволяет распаковать загруженный на сервер архив в заданную папку. Код функции распаковки: /** * Распаковка архива * * @param string $source - Путь к файлу архива * @param string $dest - куда извлекать * * @return bool */ function ar_unpack( $source, $dest ) { $zip = new ZipArchive; $is = $zip -> open( $source ); if( $is ) { $zip -> extractTo( $dest ); $zip -> close(); } else { return false; } return true; } Код скрипта: if(isset($_POST['load'])) { // файл архива, загруженный на сервер $archive = $_FILES['archive']; // путь куда будет сохраняться архива $dest = getcwd() . '/' . $archive['name']; // пытаемся переместить загруженный архив из временной папки в нужную if (!move_uploaded_file($archive['tmp_name'], $dest)) { print "Невозможно загрузить {$archive['name']} "; } else { print "Временная папка {$archive['tmp_name']}</br>"; print "Файл <b>{$archive['name']}</b> успешно загружен: <b>{$dest}</b><br/>"; // даем имя папке, в которую будем извлекать файлы $dir = substr( $archive['name'], 0, strrpos( $archive['name'], '.' ) ); // распаковываем архив и даем ссылку на файл index.php // для доступа к распакованному содержимому if( ar_unpack( $dest, $dir ) ) { print " Архив <b>{$dest}</b> успешно распакован в папку <b>{$dir}</b><br/> <a href = '{$dir}/index.php'>{$dir}</a> "; } } } Код формы: <p> <h3>Загрузка архива</h3> </p> <p> <form action = "" method = "post" enctype = "multipart/form-data"> <p> <input type = "file" name = "archive" /> </p> <p> <input type = "submit" name = "load" value = "Загрузить" /> </p> </form> </p> Таким образом, с помощью данного скрипта можно распаковать архив на сервере в PHP.
    0 Комментарии 0 Поделились
  • Авторизация на сайте с помощью GuzzleHttp
    Автоматическая авторизация на сайте может потребоваться в разных случаях. Например, вам необходимо собрать информацию о товарах с сайта, который доступен только авторизованным пользователям. В такой ситуации автоматизация поможет ускорить сбор необходимой информации.

    Войти на сайт автоматически можно с помощью различных инструментов, одним из таких инструментов является библиотека GuzzleHttp. С помощью этой библиотеки можно осуществить авторизацию на сайте, загрузить файлы и много чего еще сделать.

    Но прежде чем приступать к написанию скрипта, необходимо ознакомиться с тем как, работает сайт - какие запросы принимает и как авторизовывает посетителя. Используются лишь только cookies или еще какие-либо другие средства? Ответив на эти вопросы, можно двигаться дальше.

    Сначала устанавливаем саму библиотеку GuzzleHttp:
    composer require guzzlehttp/guzzle

    Далее пишем скрипт следующего содержания, в котором описывается как войти на сайт, который для доступа, например, к специальным предложениям, использует авторизацию.
    <?php
    require 'vendor/autoload.php'; // автозагрузчик

    use GuzzleHttp\Client; // подключаем библиотеку

    // создаем нового клиента
    $client = new Client([
    'base_uri' => 'https://какой-то-сайт.ru/', // базовый uri, от него и будем двигаться дальше
    'verify' => false, // если сайт использует SSL, откючаем для предотвращения ошибок
    'allow_redirects' => false, // запрещаем редиректы
    'headers' => [ // устанавливаем различные заголовки
    'User-Agent' => 'Mozilla/5.0 (Linux 3.4; rv:64.0) Gecko/20100101 Firefox/15.0',
    'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Content-Type' => 'application/x-www-form-urlencoded' // кодирование данных формы, в такой кодировке
    браузер отсылает данные на сервер
    ]
    ]);


    /**
    * В метод request передается три параметра:
    *
    *
    * 1. Методы GET, POST
    * 2. URL на который отправляются данные формы
    * 3. forms_params - значения логина и пароля
    */
    $login = $client -> request('POST','/login.html',[
    'form_params' => [
    'login' => 'VasyaPupkin',
    'password' => 'SuperPuperParol'
    ]
    ]);


    print($login -> getStatusCode()); // статус код, если 200 или 302, то все норм, хотя не всегда)))
    $cookie = $login -> getHeaderLine('Set-Cookie'); // обязательно вытаскиваем cookies из запроса, без них ничего не сработает


    $discounts = $client -> request('GET','secret/discounts.html',[
    'headers' => [
    'Cookie' => $cookie
    ],
    /*'debug' => true*/ // если захотите посмотреть что-же отправляет ваш скрипт, расскоментируйте
    ]);

    //print $articles -> getStatusCode();

    // html код страницы со скидками, например
    $body = $articles -> getBody() -> getContents();

    Скрипт выше хорошо комментирован, но я отмечу пару важных моментов. После авторизации на сайте, вы можете выполнять любые запросы, используя метод request, главное передать в него правильные заголовки через массив headers. Если что-то пойдет не так, то используйте параметр debug для отображения того, что отправляется в данный момент.

    Таким образом, с помощью библиотеки GuzzleHttp можно выполнять как простые так и весьма сложные Http запросы.
    Авторизация на сайте с помощью GuzzleHttp Автоматическая авторизация на сайте может потребоваться в разных случаях. Например, вам необходимо собрать информацию о товарах с сайта, который доступен только авторизованным пользователям. В такой ситуации автоматизация поможет ускорить сбор необходимой информации. Войти на сайт автоматически можно с помощью различных инструментов, одним из таких инструментов является библиотека GuzzleHttp. С помощью этой библиотеки можно осуществить авторизацию на сайте, загрузить файлы и много чего еще сделать. Но прежде чем приступать к написанию скрипта, необходимо ознакомиться с тем как, работает сайт - какие запросы принимает и как авторизовывает посетителя. Используются лишь только cookies или еще какие-либо другие средства? Ответив на эти вопросы, можно двигаться дальше. Сначала устанавливаем саму библиотеку GuzzleHttp: composer require guzzlehttp/guzzle Далее пишем скрипт следующего содержания, в котором описывается как войти на сайт, который для доступа, например, к специальным предложениям, использует авторизацию. <?php require 'vendor/autoload.php'; // автозагрузчик use GuzzleHttp\Client; // подключаем библиотеку // создаем нового клиента $client = new Client([ 'base_uri' => 'https://какой-то-сайт.ru/', // базовый uri, от него и будем двигаться дальше 'verify' => false, // если сайт использует SSL, откючаем для предотвращения ошибок 'allow_redirects' => false, // запрещаем редиректы 'headers' => [ // устанавливаем различные заголовки 'User-Agent' => 'Mozilla/5.0 (Linux 3.4; rv:64.0) Gecko/20100101 Firefox/15.0', 'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Content-Type' => 'application/x-www-form-urlencoded' // кодирование данных формы, в такой кодировке браузер отсылает данные на сервер ] ]); /** * В метод request передается три параметра: * * * 1. Методы GET, POST * 2. URL на который отправляются данные формы * 3. forms_params - значения логина и пароля */ $login = $client -> request('POST','/login.html',[ 'form_params' => [ 'login' => 'VasyaPupkin', 'password' => 'SuperPuperParol' ] ]); print($login -> getStatusCode()); // статус код, если 200 или 302, то все норм, хотя не всегда))) $cookie = $login -> getHeaderLine('Set-Cookie'); // обязательно вытаскиваем cookies из запроса, без них ничего не сработает $discounts = $client -> request('GET','secret/discounts.html',[ 'headers' => [ 'Cookie' => $cookie ], /*'debug' => true*/ // если захотите посмотреть что-же отправляет ваш скрипт, расскоментируйте ]); //print $articles -> getStatusCode(); // html код страницы со скидками, например $body = $articles -> getBody() -> getContents(); Скрипт выше хорошо комментирован, но я отмечу пару важных моментов. После авторизации на сайте, вы можете выполнять любые запросы, используя метод request, главное передать в него правильные заголовки через массив headers. Если что-то пойдет не так, то используйте параметр debug для отображения того, что отправляется в данный момент. Таким образом, с помощью библиотеки GuzzleHttp можно выполнять как простые так и весьма сложные Http запросы.
    Like
    1
    0 Комментарии 0 Поделились
  • Скрипт проверки битых ссылок в PHP

    Данный простой скрипт позволяет проверить является ли ссылка действующей или же страница, на которую она ведет уже не существует, т.е. являтеся битой ссылкой.
    function is_valid_uri($uri) {

    // получаем заголовки ответа сервера
    // знак @ - перед вызовом функции - это оператор подавления ошибок в php
    // в случае ошибки просто возвращаем false
    $hds = @get_headers($uri);

    // проверка, если нет заголовков, т.е. такого сайта нет например
    // или сервер вернул код 404
    return !$hds || (strpos($hds[0], ' 404 ') !== false ) ? 'Битая ссылка' : 'Ссылка работает';
    }
    Пример использования:
    <?php
    $urls = [ 'https://yandex.ru', 'http://myrusakov.ru', 'http://349e9esjXaa.com', 'https://myrusakov.ru/hello' ];

    foreach($urls as $url)
    print $url . " " . is_valid_uri($url) . PHP_EOL;

    Вот так можно проверить битые ссылки, например, в статьях на сайте.
    Скрипт проверки битых ссылок в PHP Данный простой скрипт позволяет проверить является ли ссылка действующей или же страница, на которую она ведет уже не существует, т.е. являтеся битой ссылкой. function is_valid_uri($uri) { // получаем заголовки ответа сервера // знак @ - перед вызовом функции - это оператор подавления ошибок в php // в случае ошибки просто возвращаем false $hds = @get_headers($uri); // проверка, если нет заголовков, т.е. такого сайта нет например // или сервер вернул код 404 return !$hds || (strpos($hds[0], ' 404 ') !== false ) ? 'Битая ссылка' : 'Ссылка работает'; } Пример использования: <?php $urls = [ 'https://yandex.ru', 'http://myrusakov.ru', 'http://349e9esjXaa.com', 'https://myrusakov.ru/hello' ]; foreach($urls as $url) print $url . " " . is_valid_uri($url) . PHP_EOL; Вот так можно проверить битые ссылки, например, в статьях на сайте.
    Like
    1
    0 Комментарии 0 Поделились
  • Извлечение текста из PDF файла в PHP
    Порой бывает необходимо извлечь текст из PDF файла средствами PHP и далее я Вам покажу пример скрипта, который решаете данную проблему.

    Устанавливаем необходимую библиотеку:
    composer require smalot/pdfparser

    Код скрипта:
    <?php

    // подключаем загрузчик
    include 'vendor/autoload.php';

    // Создаем объект для парсинга PDF
    $parser = new \Smalot\PdfParser\Parser();


    // парсим PDF файл
    $pdf = $parser->parseFile('technic_report.pdf');

    // выводим текст из файла
    print $pdf -> getText();

    Обратите внимание на то, что текст, который Вы получите из pdf файла не будет иметь исходного форматирования документа. Однако это не так уж и важно, чтобы извлечь из текста интересующие Вас данные.

    Если в PDF файле несколько страниц, то можно пройтись по каждой странице по отдельности:
    // ссылка из PDF
    // Извлекаем все страницы из PDF файла
    $pages = $pdf->getPages();

    // проходимся по каждой странице и получаем текст
    foreach ($pages as $page) {
    echo $page->getText();
    }

    А здесь можно получить метаданные PDF файла:
    // извлекаем метаданные из pdf файла
    $details = $pdf -> getDetails();

    // Проходимся по каждому значению.
    foreach ($details as $property => $value) {
    if (is_array($value)) {
    $value = implode(', ', $value);
    }
    echo $property . ' => ' . $value . "\n";
    }

    Вот так просто можно, например, автоматизировать обработку большого количества PDF файлов в PHP, извлекая из них необходимые данные.
    Извлечение текста из PDF файла в PHP Порой бывает необходимо извлечь текст из PDF файла средствами PHP и далее я Вам покажу пример скрипта, который решаете данную проблему. Устанавливаем необходимую библиотеку: composer require smalot/pdfparser Код скрипта: <?php // подключаем загрузчик include 'vendor/autoload.php'; // Создаем объект для парсинга PDF $parser = new \Smalot\PdfParser\Parser(); // парсим PDF файл $pdf = $parser->parseFile('technic_report.pdf'); // выводим текст из файла print $pdf -> getText(); Обратите внимание на то, что текст, который Вы получите из pdf файла не будет иметь исходного форматирования документа. Однако это не так уж и важно, чтобы извлечь из текста интересующие Вас данные. Если в PDF файле несколько страниц, то можно пройтись по каждой странице по отдельности: // ссылка из PDF // Извлекаем все страницы из PDF файла $pages = $pdf->getPages(); // проходимся по каждой странице и получаем текст foreach ($pages as $page) { echo $page->getText(); } А здесь можно получить метаданные PDF файла: // извлекаем метаданные из pdf файла $details = $pdf -> getDetails(); // Проходимся по каждому значению. foreach ($details as $property => $value) { if (is_array($value)) { $value = implode(', ', $value); } echo $property . ' => ' . $value . "\n"; } Вот так просто можно, например, автоматизировать обработку большого количества PDF файлов в PHP, извлекая из них необходимые данные.
    Like
    1
    0 Комментарии 0 Поделились
  • Скрипт вывода новостей на PHP
    На многих сайтах-визитках есть блок с "Новостями". Если сайт работает на движке, то это отдельная огромная история. Но если это фактически HTML-сайт с набором скриптов, то вывод новостей на PHP происходит через скрипт. Именно его мы и создадим в этой статье.

    Поскольку движка и Admin-панели нет, то будем хранить все наши новости в текстовом файле (например, пусть файл называется news.txt):
    График работы;Мы работаем с 9:00 до 23:00;04.02.2014
    Скидки!;У нас действует система скидок;03.02.2014
    Мы открылись!;Ждём Вас!;01.02.2014

    Формат новостей в текстовом файле может быть любым, главное, его всегда соблюдать. Дальше пишем скрипт вывода новостей на PHP:
    <div id="news">
    <?php
    $news = file_get_contents("news.txt");
    $news = explode("\n", $news);
    for ($i = 0; $i < count($news); $i++) {
    $new = explode(";", $news[$i]);
    ?>
    <h1><?=$new[0]?></h1>
    <p><?=$new[1]?></p>
    <p><?=$new[2]?></p>
    <?php } ?>
    </div>

    Вот таким образом делается скрипт новостей на PHP
    Скрипт вывода новостей на PHP На многих сайтах-визитках есть блок с "Новостями". Если сайт работает на движке, то это отдельная огромная история. Но если это фактически HTML-сайт с набором скриптов, то вывод новостей на PHP происходит через скрипт. Именно его мы и создадим в этой статье. Поскольку движка и Admin-панели нет, то будем хранить все наши новости в текстовом файле (например, пусть файл называется news.txt): График работы;Мы работаем с 9:00 до 23:00;04.02.2014 Скидки!;У нас действует система скидок;03.02.2014 Мы открылись!;Ждём Вас!;01.02.2014 Формат новостей в текстовом файле может быть любым, главное, его всегда соблюдать. Дальше пишем скрипт вывода новостей на PHP: <div id="news"> <?php $news = file_get_contents("news.txt"); $news = explode("\n", $news); for ($i = 0; $i < count($news); $i++) { $new = explode(";", $news[$i]); ?> <h1><?=$new[0]?></h1> <p><?=$new[1]?></p> <p><?=$new[2]?></p> <?php } ?> </div> Вот таким образом делается скрипт новостей на PHP
    Like
    1
    0 Комментарии 0 Поделились
  • Like
    1
    0 Комментарии 0 Поделились
  • Like
    1
    0 Комментарии 0 Поделились
  • Простая галерея на PHP
    У меня время от времени спрашивают, как создать галерею изображений на PHP. То есть имеется директория с картинками, и нужно их вывести в виде таблицы на страницу сайта. Вот такой скрипт я продемонстрирую в данной статье.

    Скрипт простой и его задача, в первую очередь, показать, как можно решать подобные задачи, ведь выводить можно не только картинки, а, например, список файлов в директории. Можно даже сделать свой файловый менеджер. Итак, вот код:
    <?php
    /* Функция для удаления лишних файлов: сюда, помимо удаления текущей и родительской директории, так же можно добавить файлы, не являющиеся картинкой (проверяя расширение) */
    function excess($files) {
    $result = array();
    for ($i = 0; $i < count($files); $i++) {
    if ($files[$i] != "." && $files[$i] != "..") $result[] = $files[$i];
    }
    return $result;
    }
    $dir = "images"; // Путь к директории, в которой лежат изображения
    $files = scandir($dir); // Получаем список файлов из этой директории
    $files = excess($files); // Удаляем лишние файлы
    /* Дальше происходит вывод изображений на страницу сайта (по 4 штуки на одну строку) */
    ?>
    <?php for ($i = 0; $i < count($files); $i++) { ?>
    <img src="<?=$dir."/".$files[$i]?>" alt="" />
    <?php if (($i + 1) % 4 == 0) { ?><br /><?php } ?>
    <?php } ?>

    Разумеется, крайне желательно сделать все картинки одинакового размера, либо хотя бы сделать их одинаковыми по пропорциям, а через CSS поставить фиксированную ширину у изображений.

    Вот так создаётся простая галерея на PHP.
    Простая галерея на PHP У меня время от времени спрашивают, как создать галерею изображений на PHP. То есть имеется директория с картинками, и нужно их вывести в виде таблицы на страницу сайта. Вот такой скрипт я продемонстрирую в данной статье. Скрипт простой и его задача, в первую очередь, показать, как можно решать подобные задачи, ведь выводить можно не только картинки, а, например, список файлов в директории. Можно даже сделать свой файловый менеджер. Итак, вот код: <?php /* Функция для удаления лишних файлов: сюда, помимо удаления текущей и родительской директории, так же можно добавить файлы, не являющиеся картинкой (проверяя расширение) */ function excess($files) { $result = array(); for ($i = 0; $i < count($files); $i++) { if ($files[$i] != "." && $files[$i] != "..") $result[] = $files[$i]; } return $result; } $dir = "images"; // Путь к директории, в которой лежат изображения $files = scandir($dir); // Получаем список файлов из этой директории $files = excess($files); // Удаляем лишние файлы /* Дальше происходит вывод изображений на страницу сайта (по 4 штуки на одну строку) */ ?> <?php for ($i = 0; $i < count($files); $i++) { ?> <img src="<?=$dir."/".$files[$i]?>" alt="" /> <?php if (($i + 1) % 4 == 0) { ?><br /><?php } ?> <?php } ?> Разумеется, крайне желательно сделать все картинки одинакового размера, либо хотя бы сделать их одинаковыми по пропорциям, а через CSS поставить фиксированную ширину у изображений. Вот так создаётся простая галерея на PHP.
    Like
    1
    0 Комментарии 0 Поделились
  • Дерево директории на PHP
    Недавно меня попросили написать скрипт, который выводит дерево директории на PHP. Я решил, что это будет интересно многим, поэтому написал подобный скрипт, который сейчас продемонстрирую.

    Вот весь код скрипта:
    <?php
    function showTree($folder, $space) {
    /* Получаем полный список файлов и каталогов внутри $folder */
    $files = scandir($folder);
    foreach($files as $file) {
    /* Отбрасываем текущий и родительский каталог */
    if (($file == '.') || ($file == '..')) continue;
    $f0 = $folder.'/'.$file; //Получаем полный путь к файлу
    /* Если это директория */
    if (is_dir($f0)) {
    /* Выводим, делая заданный отступ, название директории */
    echo $space.$file."<br />";
    /* С помощью рекурсии выводим содержимое полученной директории */
    showTree($f0, $space.'&nbsp;&nbsp;');
    }
    /* Если это файл, то просто выводим название файла */
    else echo $space.$file."<br />";
    }
    }
    /* Запускаем функцию для текущего каталога */
    showTree("./", "");
    ?>

    Код тщательно прокомментирован, поэтому вопросов возникнуть не должно. Как видите, всё построено вокруг рекурсии, и каждый каталог рекурсивно обследуется. А когда полностью обследован (а также все его подкаталоги), то возвращаемся в цикл и двигаемся дальше. Такой процесс происходит абсолютно с каждым каталогом, который попадается на пути.

    Я Вам предлагаю найти у себя на компьютере сайт, где много директорий, поддиректорий и файлов и испытать данный PHP-скрипт, построив дерево корневой директории.
    Дерево директории на PHP Недавно меня попросили написать скрипт, который выводит дерево директории на PHP. Я решил, что это будет интересно многим, поэтому написал подобный скрипт, который сейчас продемонстрирую. Вот весь код скрипта: <?php function showTree($folder, $space) { /* Получаем полный список файлов и каталогов внутри $folder */ $files = scandir($folder); foreach($files as $file) { /* Отбрасываем текущий и родительский каталог */ if (($file == '.') || ($file == '..')) continue; $f0 = $folder.'/'.$file; //Получаем полный путь к файлу /* Если это директория */ if (is_dir($f0)) { /* Выводим, делая заданный отступ, название директории */ echo $space.$file."<br />"; /* С помощью рекурсии выводим содержимое полученной директории */ showTree($f0, $space.'&nbsp;&nbsp;'); } /* Если это файл, то просто выводим название файла */ else echo $space.$file."<br />"; } } /* Запускаем функцию для текущего каталога */ showTree("./", ""); ?> Код тщательно прокомментирован, поэтому вопросов возникнуть не должно. Как видите, всё построено вокруг рекурсии, и каждый каталог рекурсивно обследуется. А когда полностью обследован (а также все его подкаталоги), то возвращаемся в цикл и двигаемся дальше. Такой процесс происходит абсолютно с каждым каталогом, который попадается на пути. Я Вам предлагаю найти у себя на компьютере сайт, где много директорий, поддиректорий и файлов и испытать данный PHP-скрипт, построив дерево корневой директории.
    Like
    1
    0 Комментарии 0 Поделились
Больше