• Как обращаться к сессиям после перезагрузки браузера?

    YourDesire
    @YourDesire
    Я вообще по образованию бухгалтер...
    Вам стоит почитать о сессиях
    phpfaq.ru/sessions

    Конкретно по вопросу:
    В вашем случае, если вы хотите, допустим, чтобы пользователь остался авторизованным после закрытия/открытия браузера, то стоит смотреть в сторону cookies
    php.net/manual/ru/features.cookies.php

    Стоит учесть, что хранение данных в cookie может быть чревато. Советую почитать о безопасности в этом направлении.
    Ответ написан
    Комментировать
  • Как правильно организовать асинхронный цикл ajax запросов?

    @vshvydky
    furnction runAjax(){
    return $.ajax({
          url: 'parsing.php',
          success: function(data) {
            $('#read-objects').text(currentObject);
            counter++;
            currentObject++;
            setTimeout(runAjaxt, timeIntervalMS);
          }
        });
    }

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

    ЗЫ:
    Можно и без ретурна, runAjax лишь обертка для удобного ее вызова через сет таймаут
    ЗЫ2:
    complete - как раз то финальное действие, так же добавьте себе помимо саксеса обязательно эррор, негоже игнорировать ошибки, они съедятся вникуда иначе.
    Ответ написан
    6 комментариев
  • В чем заключается проблема с кодировкой на хостинге?

    @Mercury13
    Программист на «си с крестами» и не только
    $resultData = mb_convert_encoding($resultData, 'Windows-1251', 'UTF-8');

    Думаю, автодетекция кодировки заглючила.
    Ответ написан
    2 комментария
  • Как правильно выгружать большой объем данных?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Такие вещи делаются в командной строке, где нет лимита на время исполнения.
    Для удобства написания консольных команд есть, например, Symfony Console, которая позволяет делать такое:
    cli-show-1.png
    и такое:
    progressbar.gif
    Ответ написан
    2 комментария
  • Как правильно выгружать большой объем данных?

    glebovgin
    @glebovgin
    Full Stack Web Developer
    День добрый.
    Если сделать set_time_limit(0), то скрипт будет работать пока не закончит или не помрет из-за другой причины.
    Ответ написан
    7 комментариев
  • Можно ли авторизоваться на сайте с помощью javaScript или PHP?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Можно. Авторизуйтесь через cURL (на PHP) или через phantom.js/nightmare.js
    Ответ написан
    Комментировать
  • Можно ли авторизоваться на сайте с помощью javaScript или PHP?

    taliban
    @taliban
    php программист
    Да, любой запрос на форму логина с последующим созранением куки вам поможет, авторизация находится в куках, если будете их использовать то сайт вас запомнит
    Ответ написан
    5 комментариев
  • Можно ли с помощью PHP или Jquery сначала выполнить команду на Jquery, а после этого забрать DOM страницы?

    @entermix
    А что мешает парсить span и уже самостоятельно преобразовать?

    UPD:
    $a = "!aHR0cHM6Ly93d3cuYXZ0b3Zva3phbHkucnUvcmFzcGlzYW5pZS9tb3NrdmEvc2NoZWxrb3Zv";
    
    echo base64_decode($a); //https://www.avtovokzaly.ru/raspisanie/moskva/schelkovo
    Ответ написан
    6 комментариев
  • Как на JavaScript или с помощью jQuery загрузить страницу в iframe?

    z80b
    @z80b
    Frontend
    Примерно так же как у "Михаил Смыков", но с помощью jQuery
    <a href="..." data-href="http://some_url">Link</a>

    $('a[data-href]').on('click', function() {
      $('#iframe-id').attr('src', $(this).attr('data-href'));
    })
    Ответ написан
    Комментировать
  • Как через API Facebook опубликовать запись на стене группы?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Читаешь это все пока не поймешь getjump.me/ru-php-the-right-way Особенно про то, как установить и использовать Composer.
    Идешь сюда https://developers.facebook.com/docs/php/gettingst... и очень внимательно читаешь.
    Осваиваешь получение маркера пользователя.
    Потом этот код тебе поможет.
    $fbApi = new Facebook([
    		'app_id' => 'идентификатор приложения',
            'app_secret' => 'секрет приложения'
    ]);
    $post = [
       	'message' => 'текст сообщения',
    ];
    $accessToken = new AccessToken('токен или маркер пользователя из фейсбука');
    $fbApi->post(
        '/идентификатор_группы_или_страницы/feed',
        $post,
        $accessToken
    );
    Ответ написан
    Комментировать
  • Как через API Facebook опубликовать запись на стене группы?

    @vista1x
    1) Для начала создаешь приложение. Сделать это можно тут https://developers.facebook.com
    Важные моменты: в настройках необходимо указать email и активировать приложение (раздел app review)
    2) Нужно получить ключ для работы с апи. Идешь сюда https://developers.facebook.com/tools/explorer, в правом верхнем углу жмешь Get Token -> Get Page Access Token, даешь разрешения на запрос прав доступа. Жмешь снова Get Token и выбираешь свою группу, потом жмешь Request publish_pages и снова соглашаешься. Тут мы получили временный ключ. Нужно обменять его на постоянный (ну как постоянный.. действовать он будет 60 дней, далее - нужно будет снова получать).
    Выполняешь такой запрос (в этом же приложении)
    oauth/access_token?grant_type=fb_exchange_token&client_id=[ID_ПРИЛОЖЕНИЯ]&client_secret=[КЛЮЧ_ПРИЛОЖЕНИЯ]&fb_exchange_token=[ТОКЕН]

    То, что в квадратных скобках, естественно, подставляешь своё. Токен берешь из поля "маркер доступа". Выполняешь запрос, в ответе будет твой токен. Ура.

    Теперь то, что касается программирования:
    1) Берешь Facebook SDK https://github.com/facebook/facebook-php-sdk-v4/ (ставить конечно лучше через композер, но если не имеешь представления "что это и как с этим работать", то просто скачиваешь и инклудишь себе автозагрузчик, должно работать.
    2) Сам постинг.
    $app_id = ''; // ид приложения. берешь в настройках приложения (или копируешь с адресной строки)
    $app_secret = ''; // ключ приложения. берешь в настройках приложения
    $access_token = ''; // токен, который мы получили
    $page_id = ''; // id группы
    
    $fb = new Facebook\Facebook(array(
        'app_id' => $app_id,
        'app_secret' => $app_secret,
        'default_graph_version' => 'v2.2',
    ));
    $fb->setDefaultAccessToken($access_token);
    
    // а тут мы непосредственно постим запись на стену. 
    // в этом примере запись представляет собой картинку + текст
    $data = [
        'message' => 'Текст',
        'source' => $fb->fileToUpload('/полный/путь/к/картинке'),
    ];
    $batch = [
        'photo' => $fb->request('POST', "/{$page_id}/photos", $data),
    ];
    $responses = $fb->sendBatchRequest($batch);


    Если пост не уходит, смотришь переменную $responses - в ней есть ответ сервера.
    Ну и документацию не стоит обходить стороной https://developers.facebook.com/docs/php/gettingst... Тут, кстати, описана установка SDK поподробнее
    Ответ написан
    6 комментариев
  • Почему не загружается документ через API VK?

    @Firik67
    Middle PHP Developer
    Что за $get_params?
    Ответ написан
    Комментировать
  • Как решить ошибку "Class ... not found" в Yii2?

    @karminski
    Senior React.JS Developer
    У вас namespace модели app\models\customer, а файлик как вы говорите лежит в app\models. Исправляйте.
    Ответ написан
    1 комментарий
  • В чем разница между namespace и use? И как они связаны с файловой системой?

    @MadridianFox
    Web-программист, многостаночник
    На уровне языка пространства имён с файловой системой никак не связаны.
    Пространства имён - лишь способ решить конфликты имён классов.
    Вот ты говоришь - у меня есть класс ClassName, но к сожалению, такой класс уже есть в одной из библиотек, которые ты используешь. Можно было бы назвать класс MyClassName, ну и везде добавлять приставку My. Редко, но бывает что надо сделать два класса с одинаковым именем в одном проекте. Тогда ты называешь один класс MyBananaSybsystemClassName, а другой MyAnanasSubsystemClassName - тем самым обозначая разницу в названии.
    И даже это не спасёт от простого совпадения.

    И тут на помощь приходят пространства имён.
    В начале файла в котором лежат классы (лучше один класс в одном файле) пишется название пространсва имён, вот так:
    namespace banana;
    И теперь все классы, объявленные в этом пространстве имён имеют название banana\ClassName, хотя внутри этого файлв ты можешь по прежнему обращаться к ним просто по ClassName.
    В другом файле надо использовать полное название, вроде как:
    $obj = new banana\ClassName();
    но, если надо много раз писать название класса можно сделать вот так:
    use banana\ClassName;
    $obj = new ClassName();

    , но самое полезное здесь это разрешение конфликтов. Если вдруг в другом месте определён такой же ClassName, то можно просто переименовать его:
    use banana\ClassName;
    use ananas\ClassName as AnanasClass;
    $obj1 = new ClassName();
    $obj2 = new AnanasClass();


    Вот это и есть суть пространства имён. Таковы они во всех языках программирования в которых они есть.
    Но есть от них ещё одна польза - можно настроить автоматическое подключение unclude(); файла с классом.
    Делается это с помощью определения функции автозагрузки
    function __autoload($classname){
    // как-то по имени класса находим файл и подключаем
    }
    // или, лучше
    spl_autoload_register(function ($classname) {
       // как-то по имени класса находим файл и подключаем
    });


    Каждый раз, когда ты обращаешься к классу и php не может его найти в подключенных файлах - запускается код написанный в функции автозагрузки. В эту функцию передаётся название класса.
    При чём же тут пространства имён? А при том, что в функцию автозагрузки передаётся полное имя класса с пространтсвом имён.
    Это значит что ты можешь делать по одному файлу на класс, класть их в папки, а в пространство имён в каждом файле писать путь до этого файла.
    После этого пишешь функцию, которая просто заменяет в названии класса слеши на те, что поддерживаются операционной системой как разделители пути, и просто подключаешь файл.
    Именно об этом и написано в каком-то там PSR
    Ответ написан
    2 комментария
  • В чем разница между namespace и use? И как они связаны с файловой системой?

    @AlikDex
    попытаюсь более человечнее написать =)

    с файловой системой ни то ни другое никак не связаны. Просто приняли так, чтобы путь совпадал с namespace'ом, стандартизировали короче для удобства. Ну и свои плюсы имеются конечно же.

    namespace это установка пространства имен. Скажем так - виртуальная коробочка, в которой лежат всякие штуки (классы). Это дает возможность использовать одинаковые названия классов для одного приложения.

    use указывает какой класс из какого пространства имен использовать. Его можно не писать, но тогда придется вызывать классы вместе с их namespace (если у тех классов они заданы, если нет, то все равно надо указывать глобальное пространство "\").
    типа: $customers = new \app\models\Customers();

    а с use будет:
    <?php
    namespace app;
    use app\models\Customers;
    
    $customers = new Customers();
    
    $imagick = new \Imagick(); // вызов из глобала. обратный слеш нужен когда указан какой-либо неймспейс для этого файла. Иначе попытается вызвать из текущего пространства, что приведет соотвественно к ошибке.


    В мануале все четко расписано в принципе, читай и пытайся понять =)
    Ответ написан
    Комментировать
  • Как создать экземпляр класса внутри другого класса?

    riot26
    @riot26
    <:З )~~
    class Two
    {
        public $one;
    
        public function __cunstruct()
        {
            $this->one = new One();
        }
    }
    Ответ написан
    1 комментарий
  • Как создать экземпляр класса внутри другого класса?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Есть 4-й файл, который все эти классы объединяет посредством include.

    Почитайте, пожалуйста, PSR-4. У нас, вроде, 2016 год на дворе. Неймспейсы со времён PHP 5.3 доступны.
    Чтобы это реализовать, требуется обязательно наследовать классы?

    Это зависит от того, чего вы хотите добиться. В одном случае лучше будет сделать наследование, в другом - положить другой объект в свойство. Полагаю, если у вас должен быть объект, который использует 4 других независимых друг от друга и не имеющих общего кода объекта как зависимости, второй вариант действительно лучше в этом случае.
    Но php ругается, вываливая следующую ошибку: Parse error: syntax error, unexpected T_NEW in ...

    Просто нельзя создать новый объект в этой секции (объявление свойств). Положите новый объект в свойство в конструкторе.
    class Two {
        /**
        * @var One
        */
        public $one;
    
        public function __construct()
        {
            $this->one = new One();
        }
    
       #code.....
    }

    P.S. Вы бы хоть ошибки читали, которые вам PHP выкидывает.
    Ответ написан
    3 комментария
  • Как отловить ошибку imagecreatefromjpeg?

    @djay
    В документации, черным по белому написано, что при успехе функция возвращает ресурс, а при неудаче - false.

    $image = @imagecreatefromjpeg($file);
    
    if ($image !== false) {
       // Успех
    } else {
       // Не удалось загрузить
    }
    Ответ написан
    Комментировать
  • Как на JavaScript или с помощью jQuery загрузить страницу в iframe?

    Chronosms
    @Chronosms
    Программист-ботовод
    <a href="..." onClick="openInIframe("http://example.ru/")">Ссылка</a>
    <script>
    function openInIframe(arg_url){
    document.getElementById("iframe-id").src=arg_url;
    }
    </script>


    Отметь решением, если помогло
    Ответ написан
    1 комментарий