Ответы пользователя по тегу PHP
  • Почему не получается скачать файл по этой ссылке средствами PHP (403 ошибка)? Как исправить код, чтобы он работал?

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

    Как проще всего это реализовать:
    1. поставь лимит на файл в 100-200Кб
    2. проверь что загружаемый файл является картинкой например пережми с помощью GD2 или Imagick
    3. содержимое файла перекодируй в base64
    4. сохрани base64 в базу

    Для аватарок это более чем достаточно.
    Ответ написан
    Комментировать
  • Проблема в с php, что делать?

    Вероятно в скрипте есть утечка памяти и чтобы скрипт заработал корректно, надо убрать эту ошибку.
    Ответ написан
    Комментировать
  • Как выполнить execute VK API PHP?

    Например так:
    class DevClass {
    	public $group_id = 30666517;
    	public $membersGroups = array();
    	public $access_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    	public function devMethod(){
    		$opts = ["group_id"=>$this->group_id, "access_token"=>$this->access_token, "fields"=>"photo_50,members_count", "v"=>"5.80"];
    		$answer = $this->vk->getMethod("groups.getById", $opts, true);
    		//$members_count = $answer->response[0]->members_count;
    		$members_count = 45000;
    		$members_groups = 0;	//изначально в массиве 0 объектов
    		//выполняем цикл пока полученное кол-во участников меньше общего кол-ва участников в группе
    		while($members_count > $members_groups){
    			usleep(300000);	//задержка на 0.3 сек.
    			$answer = $this->getMembers25k($this->group_id, $members_count);
    			if($answer->response){
    				$new = explode(",",$answer->response);
    				$this->membersGroups = array_merge($this->membersGroups, $new);
    				//второй раз определяем переменную, уже с новым массивом данных
    				$members_groups = count($this->membersGroups);
    			}
    			else{
    				echo "NO RESPONSE";
                    print_r($answer);
    				die();
    			}
    		}
    		print_r($this->membersGroups);
    		die();
    	}
    
    	public function getMembers25k($group_id, $members_count) {
    		$members_groups = count($this->membersGroups);
    		$offset = 1000;
    		$code =  'var members = API.groups.getMembers({"group_id": '.$this->group_id.', "v": "5.80", "sort": "id_asc", "count": '.$offset.', "offset": '.$members_groups.'}).items;'
    			.'var offset = '.$offset.';'
    			.'while (offset < 25000 && (offset + '.$members_groups.') < '.$members_count.')'
    			.'{members = members + "," + API.groups.getMembers({"group_id": '.$this->group_id.', "v": "5.80", "sort": "id_asc", "count": '.$offset.', "offset": ('.$members_groups.' + offset)}).items;offset = offset + '.$offset.';};'
    			.'return members;';
    
    		$answer = $this->vk->getMethod("execute", ["code" => urlencode($code), "v"=>"5.80", "access_token" => $this->access_token], true);
            return $answer;
    	}
    }
    
    $dev = new DevClass();
    $dev->devMethod();

    но надо понимать что тут у меня уже сформирован access_token другим классом как и запросы к методам ($this->vk->getMethod), я лишь хотел показать логику.
    Ответ написан
    2 комментария