 |
 |
Форум сетевых администраторов » Программирование » PHP » Оптимизация кода, и новые фичи
|
Страницы (3): « 1 [2] 3 »
|
|
| Автор |
| Тема |
 |
|
 |
|
|
|
Участник+
|
А у меня такое вопрос, стоит ли делать так:
[PHP]
if... |
[сооб. #59951]
31-01-2004 09:43 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
А у меня такое вопрос, стоит ли делать так:
PHP:
if ( isset($_GET['act']) ) {
$act = $_GET['act'];
if ($act != "vote" AND $act != "show_miss" AND $act != "show_all_miss" AND $act != "add_compliment" AND $act != "show_news" AND $act != "show_all_news" AND $act != "show_all_quotes" AND $act != "logout") {
print "<h1 align=\"center\"><bR /> <bR /> <bR />ПОПАЛСЯ ХАКЕÐ_!!!</h1>";
exit;
}
}
Или не стоит $act = $_GET['act'];
И нужно обращаться на прямую к $_GET['act']?
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
31-01-2004 09:43 |
|
|
Администратор
|
| А в чем проблема так делать? Ð_то ничему не... |
[сооб. #59957]
31-01-2004 11:38 |
|
|
Участник+
|
| polo ну я имею ввиду оптимальность. а) Что... |
[сооб. #59962]
31-01-2004 13:47 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
polo ну я имею ввиду оптимальность. а) Что бы скрипт меньше ресурсов жрал...
б) Чтоб проблем невзникло непредвиденных...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
31-01-2004 13:47 |
|
|
Модератор
|
| Вообще, полная оптимальность - это конечно... |
[сооб. #59967]
31-01-2004 15:37 |
|
Модератор


Зарегистрирован: Sep 2002
Место проживания:
Публикаций: 470
Статус:  |
Вообще, полная оптимальность - это конечно бы без $act = $_GET['act'];. Но если у тебя в $_GET['act'] особо объемистых данных не будет... для удобства можно сделать и копию с "нормальным" именем - на потребляемых ресурсах это отразится лишь теоретически.
P.S. Кстати, вместо print() и exit; можно воспользоваться одной функцией - exit() (или её альясом die()).
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
31-01-2004 15:37 |
|
|
Участник+
|
| MarKer ну в приведенном примере значения... |
[сооб. #59974]
31-01-2004 19:12 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
MarKer ну в приведенном примере значения маленькие, но есть др. функции (подобные) в которых происходит добавление статей в БД, и там поля до longtext 65т. с коп. символов, я это так же делаю, из $_POST['var'] записываю в $var а потом подставляю в SQL запрос...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
31-01-2004 19:12 |
|
|
Модератор
|
| Ну... как говорится - копейка рубль бережет... |
[сооб. #59975]
31-01-2004 19:35 |
|
Модератор


Зарегистрирован: Sep 2002
Место проживания:
Публикаций: 470
Статус:  |
Ну... как говорится - копейка рубль бережет 
В таких случаях лучше конечно же не делать копии... или делать unset() для "неудобной" переменной после создания копии.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
31-01-2004 19:35 |
|
|
Участник
|
| Можно просто воспользоваться символьной... |
[сооб. #59986]
31-01-2004 23:04 |
|
Участник

Зарегистрирован: Oct 2003
Место проживания:
Публикаций: 31
Статус:  |
Можно просто воспользоваться символьной (или символической?) ссылкой:
$act =& $_GET['act'];
he][es Кстати, по твоему примеру - так делать не стоит имхо Слишком много условий - криво. Либо надо делать
if ... elseif ... elseif ... else, или что-то вроде этого:
$actions = array ('add', 'del', 'edit', 'etc...');
if (in_array($act, $actions) == false) {...}
Т.е. можно и как ты, но в таком месиве можно легко допустить фотальную ашипку.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
31-01-2004 23:04 |
|
|
Участник+
|
| whisk я просто с такими "фишками" плохо разбираюсь,... |
[сооб. #59998]
01-02-2004 08:17 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
whisk я просто с такими "фишками" плохо разбираюсь, объясни поподробнее плз...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
01-02-2004 08:17 |
|
|
Участник
|
| in_array - возвращает TRUE, если значение существует... |
[сооб. #60007]
01-02-2004 09:54 |
|
Участник

Зарегистрирован: Mar 2003
Место проживания: Москва
Публикаций: 98
Статус:  |
in_array - возвращает TRUE, если значение существует в массиве.
quote: $actions = array ('add', 'del', 'edit', 'etc...');
if (in_array($act, $actions) == false) {...}
читай так:
создать массив экшнс содержащий значения (эдит,добавить, и т.д.)
если ( функция ин_аррай возвращает ложь, (тоесть переменная акт отстутствует в массиве экшн) то ) {замечен хакер.}
во..
Кстати.. с точки зрения производительности лучше использовать &&, || вместо AND, OR соответсвенно.
__________________
http://www.best-pills-store.com
Сообщение было отредактировано zyablik 01-02-2004 в 09:57
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
01-02-2004 09:54 |
|
|
Участник+
|
------------
$act =& $_GET['act'];
-------------
& Ð_то указатель.
$act... |
[сооб. #60024]
01-02-2004 12:14 |
|
Участник+


Зарегистрирован: Dec 2001
Место проживания: Россия Е-бург
Публикаций: 322
Статус:  |
------------
$act =& $_GET['act'];
-------------
& Ð_то указатель.
$act =& $_GET['act']; в данном случае переменная $act будет ссылаться на тот же участок памяти что и $_GET['act'].
__________________
http://faq.pp.ru/read_mee/
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
01-02-2004 12:14 |
|
|
Участник+
|
Пасибо большое... заюзаю...
[size=1][i]he][es добавил... |
[сооб. #60038]
01-02-2004 16:16 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
Пасибо большое... заюзаю...
he][es добавил 01-02-2004 в 16:27:27:
А вот такие конструкции допустимы?
$vote_add =& (int) $_GET['vote_add'];
Судя по ошибке или нет, или пишу не так...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
01-02-2004 16:16 |
|
|
Администратор
|
| php имеет свойства сам определять тип переменной.... |
[сооб. #60043]
01-02-2004 18:37 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
php имеет свойства сам определять тип переменной. Если тебе надо быть уверенным что в $_GET['vote_add'] именно целое число то пиши intval($_GET['vote_add']).
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
01-02-2004 18:37 |
|
|
Участник+
|
polo т.е. пишу
$vote_add =& intval($_GET['vote_add']);
??? |
[сооб. #60052]
01-02-2004 21:08 |
|
|
Администратор
|
| да, только & нафига здесь. & создает ссылку... |
[сооб. #60114]
02-02-2004 14:19 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
да, только & нафига здесь. & создает ссылку на переменную, это здесь ни к чему. Ð_то полезно например использовать в функциях
при передачи параметров и чтобы глобальные переменные тоже менялись. Посмотри пример и сделай выводы:
PHP:
$a = 1;
function print_a ($a) {
$a++;
echo $a;
}
print_a($a); // выведет 2
echo $a; // выведет 1
print_a(&$a); // выведет 2
echo $a; // выведет 2
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
02-02-2004 14:19 |
|
|
Участник+
|
Блин, я ещё больше запутался...
если мы делая... |
[сооб. #60154]
02-02-2004 20:55 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
Блин, я ещё больше запутался...
если мы делая так:
$k=5;
$a =& $k;
print $a; // 5
Делаем ссылку, на область памяти и не делаем новой переменной, (как я понимаю изменение $k повлечет соотв. изменение $a), то вызывая ф-ию с параметром &$a мы чего делаем???
если ф бы было $b = & print_a($a);
я б понял но как с параметром ссылки...ээ...
Я просто не догоняю как это работает?
$a=5 -> function($a=5) -> $a++ -> 6
это понятно, а
$a=5 -> function(&$a=5) я не понимаю...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
02-02-2004 20:55 |
|
|
|
Страницы (3): « 1 [2] 3 »
|
|
Формат времени GMT. Текущее время 13:45.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 0.25155401 seconds (97.52% PHP - 2.48% MySQL) with 26 queries.
|
 |