Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не пойму что означает эта ошибка? И как с ней бороться? 
V
    Опции темы
terya
Дата 6.9.2010, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.3.2010

Репутация: нет
Всего: нет



есть у меня в .htaccess такие строчки
Код

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?params=$1 [L]

в index.php
Код

<?php
$GET = array();
$params = explode('/', trim($_GET['params'], '/'));    
for($x=0; $x<=count($params); $x++)$GET[] = $params[$x];
    if ($GET[0] == 'auth'){include 'pages/auth.php';}
    elseif ($GET[0] == 'about'){include 'about.php';}    
    else include 'pages/main.php';
?>

я использую это для того, чтобы был "красивее урл"
И у меня появляется ошибка
Notice: Undefined index: params in /srv/www/vhosts/site.ru/httpdocs/index.php on line 3 Notice: Undefined offset: 1 in /srv/www/vhosts/site.ru/httpdocs/index.php on line 4 

Что это такое? И как это исправить?
PM MAIL ICQ Skype   Вверх
Muerto
Дата 6.9.2010, 20:15 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Код

error_reporting(0);


Или менять код...

Код

$GET = array();


нафиг убрать register_globals в Ini ->off

И добавить проверку на 
Код

if(isset($_GET['params'])){
//сюда ваш код
}


Это сообщение отредактировал(а) Muerto - 6.9.2010, 20:15


--------------------
user posted image
PM MAIL   Вверх
SneG0K
Дата 6.9.2010, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



terya, смотри. Ты в начале скрипта присвоил $_GET пустой массив. Строкой ниже обратился к $_GET['params'], которой не существует. Отсюда и Нотис

Добавлено через 1 минуту и 36 секунд
Ой туплю. Ты присвоил $GET = array(). Но всеравно, эта ошибка обозначает что индекс params не существует в массиве $_GET

Добавлено через 2 минуты и 32 секунды
То-же самое и со вторым нотисом. Элемент под номером 1 не существует в массиве $params
PM WWW Skype   Вверх
enoff
Дата 6.9.2010, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



terya
Цитата(Muerto @  6.9.2010,  21:15 Найти цитируемый пост)
error_reporting(0);

при разработке ни в коем случае.
Во второй строчке вы массив $_GET делаете пустым, а потом пытаетесь использовать get параметры из этого массива.
Зачем трогать массив $_GET? Сохраните значение в переменную и дальше используйте ее.
Проверяйте на наличие значения в массиве - isset().

Цитата(terya @  6.9.2010,  21:09 Найти цитируемый пост)
$params

register_globals?
PM MAIL ICQ Skype GTalk   Вверх
SneG0K
Дата 6.9.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Цитата(enoff @  6.9.2010,  19:26 Найти цитируемый пост)
Во второй строчке вы массив $_GET делаете пустым

Обратите внимание, что там $GET без префикса.
Цитата(enoff @  6.9.2010,  19:26 Найти цитируемый пост)
register_globals? 

Нет, массив $params в третьей строчке вполне естественным путем появляется
PM WWW Skype   Вверх
terya
Дата 6.9.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.3.2010

Репутация: нет
Всего: нет



Цитата

эта ошибка обозначает что индекс params не существует в массиве $_GET

с этой ошибкой вроде разобрался проверкой
Код

if(isset($_GET['params'])){

а с этой никак
Notice: Undefined offset: 1 in /srv/www/vhosts/site.ru/httpdocs/index.php on line 4
она указывает на строчку
Код

for($x=0; $x<=count($params); $x++)$GET[] = $params[$x];


Это сообщение отредактировал(а) terya - 6.9.2010, 20:30
PM MAIL ICQ Skype   Вверх
SneG0K
Дата 6.9.2010, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Смотри. В массивах отсчет элементов начинается с нуля. Т.е. если в массиве $params три элемента, то у первого элемента индекс будет 0, у второго 1, у третьего 2.
Код

<?php
$array = array('one', 'two', 'three');
echo 'Array length:' . count($array);
echo $array[0];
echo $array[1];
echo $array[2];
?>

Проще говоря в твоем коде
Код

for($x=0; $x<=count($params) - 1; $x++)$GET[] = $params[$x];

PM WWW Skype   Вверх
Muerto
Дата 6.9.2010, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



terya
С токи зрения оптимизации стоит делать
Код

$arlength=count($params);
for($x=0; $x<$arlength; $x++)$GET[] = $params[$x];


А вообще имхо здесь умней использовать foreach

Код

foreach ($params as $key=>$value){
$GET[] = $value;
}


Кстати пардон за $GET=array(); проблем нету...
Не заметил что это не $_GET

Это сообщение отредактировал(а) Muerto - 6.9.2010, 20:33


--------------------
user posted image
PM MAIL   Вверх
terya
Дата 6.9.2010, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.3.2010

Репутация: нет
Всего: нет



Спасибо, все получилось. Сделал, и как рукой сняло
Код

foreach ($params as $key=>$value){
$GET[] = $value;
}

PM MAIL ICQ Skype   Вверх
IgorIV
Дата 6.9.2010, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Я только прочитать успел smile


Это сообщение отредактировал(а) IgorIV - 6.9.2010, 20:40
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1465 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.