За последние 24 часа нас посетили 55619 программистов и 1720 роботов. Сейчас ищут 876 программистов ...

У меня возникла проблема с индексами и Notice.

Тема в разделе "Вопросы от блондинок", создана пользователем MrExecute, 10 июл 2015.

  1. MrExecute

    MrExecute Новичок

    С нами с:
    10 июл 2015
    Сообщения:
    4
    Симпатии:
    0
    Здрасьте!Тут такая вот проблема: я плохо знаю PHP и скачал шаблон, основные ошибки исправил (О великий Google!), но осталась последняя которой не нашел разумного объяснения в интернете. При загрузке ЛК на сайте пишет: Notice! Undefined index: file in ... on ... .
    Вот PHP код #1:
    Код (PHP):
    1. <? $ajax_file = '';
    2.     /* Защита от XSS, SQL инъекций */
    3.         foreach($_POST as $key=>$val)
    4.             if(!is_array($val)) $_POST_REAL[$key] = strip_tags(mysql_real_escape_string($val));
    5.     /* Защита от XSS, SQL инъекций */
    6.     
    7.     if ( $cfg['unban_price'] ) {
    8.     
    9.         $user['ban_blocked'] = mysql_num_rows(mysql_query("SELECT `name` FROM `banlist` WHERE `name` = '{$user['name']}'"));
    10.         $price_unban = $cfg['unban_price'] + $user['ban_count'] * $cfg['unban_next_price'];
    11.         
    12.     }
    13.     
    14.     /* Получение статусов из файла и их вывод */
    15.     $file_status = file_get_contents($cfg['folder_secret'].'status.txt');
    16.     
    17.     if ( preg_match_all('/#(\d+)(.*)/', $file_status, $status_info) ) { 
    18.         foreach($status_info[2] as $key=>$val) {
    19.             $status_id = $status_info[1][$key];
    20.             $status[$status_id] = explode('|', trim($status_info[2][$key]));
    21.             
    22.             if ( !$ajax_file && $status[$status_id][2] != -1 || $user['user_group_admin'] )    
    23.                 $tpl_set['statuses'] .= '
    24.                     <div class="lk-miniblock">
    25.                         <table>
    26.                             <td width="100"><p class="lk-h3">'.$status[$status_id][0].'</p></td>
    27.                             <td><button class="button" onclick="buyStatusId('.$status_id.')">'.($user['group_id'] != $status_id 'Купить за '.$status[$status_id][2] : 'Продлить за '.($status[$status_id][2]-$status[$status_id][3])).'р</button></td>
    28.                             '.($user['user_group_admin'] ? '<td><button title="Редактировать" class="button" onclick="formStatusId('.$status_id.')">*</button></td>' : false).'
    29.                         </table>
    30.                     </div>
    31.                 ';
    32.         }
    33.     }    
    34.     /* Получение статусов из файла и их вывод */
    Вот текст его ошибки:
    Notice: Undefined index: statuses in /home/u486142116/public_html/lk/general.php on line 23
    Вот PHP код #2:
    Код (PHP):
    1. <?    $tpl_set = array();
    2.     
    3.     require_once('config.php');
    4.     require_once('general.php');
    5.     
    6.     if ( file_exists('send_get_lk.php') ) include('send_get_lk.php');
    7.     
    8.     if ( $user['user_group_admin'] && $cfg['lk_new_version_info'] ) {
    9.     
    10.         $arr = @explode(' | ', file_get_contents($cfg['lk_new_version_info']));
    11.         if ( count($arr) > 2 && $arr[0] != $cfg['lk_version'] ) $message = 'Вышла новая версия Личного Кабинета v'.$arr[0].'. [url="'.$arr[1].'"]Скачать[/url] '.$arr[2];
    12.         
    13.     }
    14.     
    15.     /* Делает авторизацию в ЛК */
    16.     if ( !$user['name']  ) {
    17.         if ( !$cfg['id_session'] ) include('login.php');
    18.         exit();
    19.     }
    20.     
    21.     $path_skin = $cfg['path_skin'].$user['name'].'.png';
    22.     $path_cloak = $cfg['path_cloak'].$user['name'].'.png';
    23.     
    24.     if ( file_exists($path_skin) ) $tpl_set['skin_name'] = $user['name']; else $tpl_set['skin_name'] = 'default';
    25.     
    26.     /* Загрузка скинов/плащей и HD скинов/ HD плащей */
    27.     if (is_uploaded_file($_FILES['file']['tmp_name'])) {
    28.  
    29.         $imgsize = getimagesize($_FILES['file']['tmp_name']);
    30.         if ( $_FILES['file']['size'] < $cfg['file_maxsize']*1024*1024 && $_FILES ['file']['type'] == 'image/png' ) {
    31.             if ( $_POST_REAL['upload-skin'] )
    32.             
    33.                 if ( $imgsize['0'] == 64 && $imgsize['1'] == 32) {
    34.                 
    35.                     if ( $status[$user['group_id']][5] && move_uploaded_file($_FILES['file']['tmp_name'], $path_skin) )
    36.                         $message = 'Ваш скин успешно загружен.';
    37.                     
    38.                 } else if ( $imgsize['0'] == 256 && $imgsize['1'] == 128 || $imgsize['0'] == 1024 && $imgsize['1'] == 512 ) {
    39.                     
    40.                     if ( $status[$user['group_id']][7] && move_uploaded_file($_FILES['file']['tmp_name'], $path_skin) )
    41.                         $message = 'Ваш HD скин успешно загружен.';
    42.                     
    43.                 } else $message = 'Неверные размеры скина.';
    44.                 
    45.             else if ( $_POST_REAL['upload-cloak'] )
    46.             
    47.                 if ( $imgsize['0'] == 64 && $imgsize['1'] == 32 || $imgsize['0'] == 22 && $imgsize['1'] == 17) {
    48.                 
    49.                     if ( $status[$user['group_id']][6] && move_uploaded_file($_FILES['file']['tmp_name'], $path_cloak) )
    50.                         $message = 'Ваш плащ успешно загружен.';
    51.                         
    52.                 } else if ( $imgsize['0'] == 512 && $imgsize['1'] == 256 ) {
    53.                     
    54.                     if ( $status[$user['group_id']][7] && move_uploaded_file($_FILES['file']['tmp_name'], $path_cloak) )
    55.                         $message = 'Ваш HD плащ успешно загружен.';
    56.                     
    57.                 } else $message = 'Неверные размеры плаща.';
    58.         } else $message = 'Файл должен быть формата .png и весить не более '.$cfg['file_maxsize'].'Mb.';
    59.         
    60.     }
    61.     /* Загрузка скинов/плащей и HD скинов/ HD плащей */
    62.     $message = '';
    63.     
    64.     if ( $message ) $tpl_set['message'] = '<div class="alert">'.$message.'</div>';
    65.     
    66.  
    67.     
    68.     mysql_close();
    И, соответственно, ошибка к нему:
    Notice: Undefined index: file in /home/u486142116/public_html/lk/index.php on line 27
    Подскажите, что такое вообще индекс и как исправить? (Я, как уже написал выше, курица в PHP)
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Произошло обращение к ключу индекса массива который отсутствует в массиве.
    https://secure.php.net/manual/ru/language.types.array.php

    Если в $tpl_set массив, можно инициализировать ключ так $tpl_set['statuses'] = ''; перед $tpl_set['statuses'] .= ....

    ещё можно проверять есть ли массив и только после этого к нему обращаться
    Код (PHP):
    1. if( is_array($tpl_set) && isset($tpl_set['statuses']) )
    2. {
    3.   $tpl_set['statuses'] .= '......
    4. }
     
  3. MrExecute

    MrExecute Новичок

    С нами с:
    10 июл 2015
    Сообщения:
    4
    Симпатии:
    0
    Спасибо Денис! Помогло, но что делать с ошибкой в index.php?
    (Попробовал проделать тоже самое, но не помогло, а наоборот вызвало ещё одну ошибку)
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Сюда
    if (is_uploaded_file($_FILES['file']['tmp_name']))
    добавить
    if ((isset($_FILES) && is_array($_FILES) && isset($_FILES['file']) && is_uploaded_file($_FILES['file']['tmp_name']))
     
  5. MrExecute

    MrExecute Новичок

    С нами с:
    10 июл 2015
    Сообщения:
    4
    Симпатии:
    0
    Не помогло. Выдает ошибку:
    Parse error: syntax error, unexpected '{' in /home/u486142116/public_html/lk/index.php on line 26
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    опачятки
    if ( isset($_FILES) && is_array($_FILES) && isset($_FILES['file']) && is_uploaded_file($_FILES['file']['tmp_name']) )
     
  7. MrExecute

    MrExecute Новичок

    С нами с:
    10 июл 2015
    Сообщения:
    4
    Симпатии:
    0
    Все работает огромное спасибо =)