За последние 24 часа нас посетили 67876 программистов и 1649 роботов. Сейчас ищут 975 программистов ...

Подскажите ошибку в коде класса для работы с VK

Тема в разделе "PHP для новичков", создана пользователем marsik, 20 ноя 2016.

  1. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    Приветствую, уважаемые! Срочно нужна ваша помощь, сам пока не понял в чем проблема. Поставил php 7.0.13 - перестало загружать фото, ранее на php5 нормально все работало.

    Код (Text):
    1. class vk {
    2.     private $token;
    3.     private $app_id;
    4.     //ID группы или страницы пользователя
    5.     private $group_id;
    6.     public function __construct( $token, $app_id, $group_id ) {
    7.         $this->token = $token;
    8.         $this->app_id = $app_id;
    9.         $this->group_id = $group_id;
    10.     }
    11.     //получаем данные со стены
    12.     public function get_wall($count, $filter) {
    13.             $data = json_decode(
    14.                         $this->execute(
    15.                             'wall.get',
    16.                             array(
    17.                                 'owner_id' => -$this->group_id,
    18.                                 'count' => $count,
    19.                                 'filter' => $filter
    20.                             )
    21.                         )
    22.                     );
    23.             if( isset( $data->error ) ) {
    24.                 return $this->error( $data );
    25.             }
    26.             return $data->response;
    27.     }
    28.     //узнаем id группы
    29.     public function get_group_id($name) {
    30.             $data = json_decode(
    31.                         $this->execute(
    32.                             'groups.getById',
    33.                             array(
    34.                                 'group_ids' => $name
    35.                             )
    36.                         )
    37.                     );
    38.             if( isset( $data->error ) ) {
    39.                 return $this->error( $data );
    40.             }
    41.             return $data->response[0]->gid;
    42.     }
    43.     //Является ли пользователь участником сообщества
    44.     public function is_member($id) {
    45.             $data = json_decode(
    46.                         $this->execute(
    47.                             'groups.isMember',
    48.                             array(
    49.                                 'group_id' => $this->group_id,
    50.                                 'user_ids' => $id
    51.                            
    52.                             )
    53.                         )
    54.                     );
    55.             if( isset( $data->error ) ) {
    56.                 return $this->error( $data );
    57.             }
    58.             return $data->response;
    59.     }
    60.     //Бан юзера
    61.     public function ban_user($id) {
    62.             $data = json_decode(
    63.                         $this->execute(
    64.                             'groups.banUser',
    65.                             array(
    66.                                 'group_id' => $this->group_id,
    67.                                 'user_id' => $id,
    68.                                 'end_date' => strtotime("+1month"),
    69.                                  'reason' => 1,
    70.                                 'comment' => 'Размещение записей в группе разрешено только участникам данной группы',
    71.                                 'comment_visible' => 1
    72.                             )
    73.                         )
    74.                     );
    75.             if( isset( $data->error ) ) {
    76.                 return $this->error( $data );
    77.             }
    78.             return $data->response;
    79.     }
    80.     //Удаление записи со стены
    81.     public function delete_post($id) {
    82.             $data = json_decode(
    83.                         $this->execute(
    84.                             'wall.delete',
    85.                             array(
    86.                                 'owner_id' => -$this->group_id,
    87.                                 'post_id' => $id
    88.                             )
    89.                         )
    90.                     );
    91.             if( isset( $data->error ) ) {
    92.                 return $this->error( $data );
    93.             }
    94.             return $data->response;
    95.     }
    96.     //постинг на стену
    97.     public function post( $desc, $photo, $link ) {
    98.             $data = json_decode(
    99.                         $this->execute(
    100.                             'wall.post',
    101.                             array(
    102.                                 'owner_id' => -$this->group_id,
    103.                                 'from_group' => 1,
    104.                                 'message' => $desc,
    105.                                 /* 'attachments' => $photo . ',' . $link */
    106.                                 'attachments' => $photo
    107.                             )
    108.                         )
    109.                     );
    110.             if( isset( $data->error ) ) {
    111.                 return $this->error( $data );
    112.             }
    113.             return $data->response->post_id;
    114.         return 0;
    115.     }
    116.  
    117.     //загрузка фотографии
    118.     public function upload_photo( $file ) {
    119.         $data = json_decode(
    120.                     $this->execute(
    121.                         'photos.getWallUploadServer',
    122.                         array(
    123.                             'group_id' => $this->group_id
    124.                         )
    125.                     )
    126.                 );
    127.         if( isset( $data->error ) ) {
    128.             return $this->error( $data );
    129.         }
    130.        
    131.          $ch = curl_init( $data->response->upload_url );
    132.         curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: multipart/form-data"));
    133.         curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    134.         curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    135.         curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
    136.         curl_setopt ( $ch, CURLOPT_POST, true );
    137.         curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' =>  '@' . realpath($file)));
    138.         $data = curl_exec($ch);
    139.         curl_close($ch);
    140.        
    141.  
    142.  
    143.         $data = json_decode( $data );
    144.        
    145.        
    146.        
    147.         if( isset( $data->error ) ) {
    148.             return $this->error( $data );
    149.         }
    150.        
    151.         $data = json_decode(
    152.                     $this->execute(
    153.                         'photos.saveWallPhoto',
    154.                         array(
    155.                             'group_id' => $this->group_id,
    156.                             'server' => $data->server,
    157.                             'photo' => $data->photo,
    158.                             'hash' => $data->hash
    159.                         )
    160.                     )
    161.                 );
    162.                
    163.         if( isset( $data->error ) ) {
    164.             return $this->error( $data );
    165.         }
    166.         return $data->response['0']->id;
    167.        
    168.     }
    169.  
    170.     private function execute( $method, $params ) {
    171.         $ch = curl_init( 'https://api.vk.com/method/' . $method . '?access_token=' . $this->token );
    172.         curl_setopt ( $ch, CURLOPT_HEADER, false );
    173.         curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    174.         curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
    175.         curl_setopt ( $ch, CURLOPT_POST, true );
    176.         curl_setopt ( $ch, CURLOPT_POSTFIELDS, $params );
    177.         $data = curl_exec($ch);
    178.         curl_close($ch);
    179.         return $data;
    180.     }
    181.     private function error( $data ) {
    182.         //обработка ошибок
    183.         return false;
    184.     }
    185. }
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    86 строка ошибка -$this->group_id
     
  3. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    Это не ошибка, ошибка в 137 строке, только хз как ее решить.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    какая ошибка? PHP выводит текст ошибки или ещё что?
     
  5. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    Код рабочий для php5. Я думая проблема в том, что в php 7 https://php.ru/manual/migration70.incompatible.html
    Удалена $HTTP_RAW_POST_DATA Вместо нее используйте поток php://input.
    А вот хз как правильно курлом передать картинку используя поток php://input.
    а может быть ошибка в json, тоже какие то изменения есть, т.к. отдает
    {"server":код сервера,"photo":"[]","hash":"хеш код"}
     
    #5 marsik, 21 ноя 2016
    Последнее редактирование: 21 ноя 2016