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
Форумы портала PHP.SU :: Версия для печати :: проверка GET параметра
Форумы портала PHP.SU » PHP » Программирование на PHP » проверка GET параметра

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

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

}else{

}

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

}
3. Nastena - 14 Февраля, 2007 - 14:05:48 - перейти к сообщению
ой блин ну надо же так опозориться с = а не с == Спасибки за понимание ))
4. Viper - 16 Февраля, 2007 - 13:55:05 - перейти к сообщению
а можно почитать это 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 в этом случае ?
5. evgenijj - 16 Февраля, 2007 - 15:28:35 - перейти к сообщению
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, за исключением того, что никакого предупреждения не генерируется, если переменная не установлена.
6. valenok - 16 Февраля, 2007 - 19:02:09 - перейти к сообщению
Проверять только на присутсвие а не на содержание при работе с БД - ужас.
Я делаю так:
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.  
7. Viper - 17 Февраля, 2007 - 08:52:08 - перейти к сообщению
эээ... собстно соорудил вот так:

if (!empty($_GET['sort']) and !empty($_GET['in'])) {
if ($_GET['in'] == 'ASC') {
$sort = $_GET['sort'];
$in = $_GET['in'];
} else { $in = 'DESC'; }
}
8. valenok - 17 Февраля, 2007 - 09:18:11 - перейти к сообщению

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 то ты останешься без поля сортировки
9. Viper - 17 Февраля, 2007 - 11:29:04 - перейти к сообщению
ниче не могу понять... (тупняк напал)... вот переписал

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

так сорт работает.
10. evgenijj - 17 Февраля, 2007 - 11:40:06 - перейти к сообщению
Viper пишет:
ниче не могу понять... (тупняк напал)... вот переписал

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

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

Погоди, а что за переменная $in в условии? Она не определена.
11. Viper - 17 Февраля, 2007 - 11:45:45 - перейти к сообщению
переменная $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>

я так понял что нужно помимо проверки на наличие ещё сделать проверку на правильность ?
12. evgenijj - 17 Февраля, 2007 - 11:53:09 - перейти к сообщению
Цитата:
я так понял что нужно помимо проверки на наличие ещё сделать проверку на правильность ?

Конечно. Когда ты задал вопрос, то не упомянул о том, что речь идет о работе с БД. Тем не менее 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.  
13. valenok - 17 Февраля, 2007 - 12:31:57 - перейти к сообщению
Я делаю так:
[Выглядит проще..]
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.  
14. Viper - 17 Февраля, 2007 - 13:52:09 - перейти к сообщению
Цитата:
// Проверяем, что переменные $_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'; }
15. valenok - 17 Февраля, 2007 - 16:29:05 - перейти к сообщению
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.  

 

Powered by ExBB FM 1.0 RC1