Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проверка GET параметра

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: если он не задан
Nastena
Отправлено: 14 Февраля, 2007 - 13:55:14
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2007  


Помог: 0 раз(а)




Я пишу:
$alp = $_GET['alp'];
if ($alp=""){...}
И это не работает Недовольство, огорчение
Как можно проверить, что параметр не был задан в строке? То есть была ссылка
index.php а не index.php?alp=..
Спасибо
 
 Top
Jakeryf
Отправлено: 14 Февраля, 2007 - 14:01:27
Post Id



Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Янв. 2007  
Откуда: System Virta


Помог: 0 раз(а)




if(!$alp) //если не задан параметр
{

}else{

}

ЗЫ в вашем примере надо писать:
if($alp == '')
{

}


-----
What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
 
 Top
Nastena
Отправлено: 14 Февраля, 2007 - 14:05:48
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2007  


Помог: 0 раз(а)




ой блин ну надо же так опозориться с = а не с == Спасибки за понимание ))
 
 Top
Viper
Отправлено: 16 Февраля, 2007 - 13:55:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




а можно почитать это http://php.su/learnphp/operators/?compar Улыбка


да исчо тут вопрос по ходу возник. я проверяю значения параметра $_GET так

if ((isset($_GET['sort'], $_GET['in'])) && ($_GET['sort'] != "") and ($_GET['in'] != "")) {
$sort = $_GET['sort'];
$in = $_GET['in'];
}

ссылка вида .php?sort=col_name&in=ASC

можно ли как то сократить оператор if в этом случае ?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
evgenijj
Отправлено: 16 Февраля, 2007 - 15:28:35
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if ( !empty( $_GET['sort'] ) and !empty( $_GET['in'] ) )
  4. {
  5.     $sort = $_GET['sort'];
  6.     $in = $_GET['in'];
  7. }
  8. ?>
  9.  

Цитата:

boolean empty ( mixed var)

Примечание: empty() это конструкция языка.

Это противоположно (boolean) var, за исключением того, что никакого предупреждения не генерируется, если переменная не установлена.
 
 Top
valenok Модератор
Отправлено: 16 Февраля, 2007 - 19:02:09
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Проверять только на присутсвие а не на содержание при работе с БД - ужас.
Я делаю так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $col = 'id'; // Sort BY
  5. $sort = 'DESC'; // Sort type
  6.  
  7. $cols = Array("id",'name','cost');
  8.  
  9. if(@in_array($_GET['col'],$cols)) $col = $_GET['col'];
  10. if(@$_GET['sort'] =='ASC') $sort='ASC';
  11.  
  12.  


-----
Truly yours, Sasha.
 
My status
 Top
Viper
Отправлено: 17 Февраля, 2007 - 08:52:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




эээ... собстно соорудил вот так:

if (!empty($_GET['sort']) and !empty($_GET['in'])) {
if ($_GET['in'] == 'ASC') {
$sort = $_GET['sort'];
$in = $_GET['in'];
} else { $in = 'DESC'; }
}


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
valenok Модератор
Отправлено: 17 Февраля, 2007 - 09:18:11
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)





Viper пишет:
if (!empty($_GET['sort']) and !empty($_GET['in'])) {
if ($_GET['in'] == 'ASC') {
$sort = $_GET['sort'];
$in = $_GET['in'];
} else { $in = 'DESC'; }
}



Если $_GET['in'] == DESC то ты останешься без поля сортировки


-----
Truly yours, Sasha.
 
My status
 Top
Viper
Отправлено: 17 Февраля, 2007 - 11:29:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




ниче не могу понять... (тупняк напал)... вот переписал

if (!empty($_GET['sort']) and !empty($_GET['in']) and $in = "ASC") {
$sort = $_GET['sort'];
$in = $_GET['in'];
} else { $in = "DESC"; }

так сорт работает.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
evgenijj
Отправлено: 17 Февраля, 2007 - 11:40:06
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Viper пишет:
ниче не могу понять... (тупняк напал)... вот переписал

if (!empty($_GET['sort']) and !empty($_GET['in']) and $in = "ASC") {
$sort = $_GET['sort'];
$in = $_GET['in'];
} else { $in = "DESC"; }

так сорт работает.

Погоди, а что за переменная $in в условии? Она не определена.
 
 Top
Viper
Отправлено: 17 Февраля, 2007 - 11:45:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




переменная $in не присваивается. только через ссылку

вот кусок кода:

$sort = "id";
if (!empty($_GET['sort']) and !empty($_GET['in']) and $in = "ASC") {
$sort = $_GET['sort'];
$in = $_GET['in'];
} else { $in = "DESC"; }

SELECT p_number, p_name, p_geo, p_info, p_year FROM $dbname_Local ORDER BY ". $sort ." ". $in ."";

ссылки для сортировки:

<a href="<?php $_SERVER['PHP_SELF'] ?>?sort=p_number&in=ASC">1</a>
<a href="<?php $_SERVER['PHP_SELF'] ?>?sort=p_number&in=DESC">2</a>

я так понял что нужно помимо проверки на наличие ещё сделать проверку на правильность ?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
evgenijj
Отправлено: 17 Февраля, 2007 - 11:53:09
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Цитата:
я так понял что нужно помимо проверки на наличие ещё сделать проверку на правильность ?

Конечно. Когда ты задал вопрос, то не упомянул о том, что речь идет о работе с БД. Тем не менее valenok сразу об этом догадался. Догадался он, догадаются и другие. И не факт, что эти другие напишут на твой e-mail о дыре в безопасности. Будешь потом сайт из дампа восстанавливать. Что-то в этом духе:
PHP:
скопировать код в буфер обмена
  1.  
  2. // Проверяем, что переменные $_GET['sort'] и $_GET['in'] установлены и не равны пустой строке ""
  3. if ( !empty($_GET['sort']) and !empty($_GET['in']) )
  4. {
  5.     if ($_GET['in'] == 'ASC')
  6.         $in = $_GET['in'];
  7.     else
  8.         $in = 'DESC';
  9.     // Проверяем, а есть ли такое поле в таблице БД
  10.     if( @in_array($_GET['col'], $colls) )
  11.         $sort = $_GET['col'];
  12.     else
  13.         $sort = "id";
  14. }
  15. else
  16. {
  17.     $in = 'ASC';
  18.     $sort = "id";
  19. }
  20. ?>
  21.  
 
 Top
valenok Модератор
Отправлено: 17 Февраля, 2007 - 12:31:57
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Я делаю так:
[Выглядит проще..]
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $col = 'id'; // Sort BY
  5. $sort = 'DESC'; // Sort type
  6.  
  7. $cols = Array("id",'name','cost');
  8.  
  9. if(@in_array($_GET['col'],$cols)) $col = $_GET['col'];
  10. if(@$_GET['sort'] =='ASC') $sort='ASC';
  11.  
  12.  


-----
Truly yours, Sasha.
 
My status
 Top
Viper
Отправлено: 17 Февраля, 2007 - 13:52:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Цитата:
// Проверяем, что переменные $_GET['sort'] и $_GET['in'] установлены и не равны пустой строке ""
if ( !empty($_GET['sort']) and !empty($_GET['in']) )
{
if ($_GET['in'] == 'ASC')
$in = $_GET['in'];
else
$in = 'DESC';
// Проверяем, а есть ли такое поле в таблице БД...


неасилил. сделал по аналогии как написал valenok

получилось:
$sort = "id";
$in = "ASC";
$cols = array('p_number', 'p_year', 'ASC'); // По двум колонкам
if (@in_array($_GET['sort'], $cols)) $sort = $_GET['sort'];
if (@$_GET['in'] == 'ASC') {
$in = 'ASC';
} else { $in= 'DESC'; }


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
valenok Модератор
Отправлено: 17 Февраля, 2007 - 16:29:05
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Viper пишет:
if (@$_GET['in'] == 'ASC') {
$in = 'ASC';
} else { $in= 'DESC'; }


=)

А что толку что сделал по аналогии если не понимаешь что сделал?

PHP:
скопировать код в буфер обмена
  1.  if(@$_GET['in'] =='DESC') $in='DESC';
\n\n(Добавление)
Viper пишет:
$cols = array('p_number', 'p_year', 'ASC'); // По двум колонкам

А у тебя в таблице есть кологка ASC ?\n\n(Добавление)
Viper пишет:
$sort = "id";

У тебя же сортировка по id не доступна, а по умолчанию стоит именно она. Это как?\n\n(Добавление)
Поясняю:
PHP:
скопировать код в буфер обмена
  1.  
  2.  <?PHP
  3.  
  4.  $col = 'id'; // Поле по которому будет сортироваться по умолчанию. Если не указанно другое.
  5.  $sort = 'DESC'; // Тип сортировки по умолчанию - с конца к началу
  6.  
  7.  $cols = Array("id",'name','cost'); // Поля по которым мы разрешаем сортировать
  8.  
  9.  if(@in_array($_GET['col'],$cols)) $col = $_GET['col'];
  10. // Если наименование поля которое нам выдали - доступно, тоесть можно по нему сортировать - сортируем по нему.
  11.  
  12.  if(@$_GET['sort'] =='ASC') $sort='ASC';
  13. // Если тип сортировки ASC - сортируем ASC
  14.  


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB