- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
<?php
$dPh = fopen("photos.cfg", "r");
while (($aCrow = fgetcsv($dPh, 0, "|", "}")) !== FALSE){
$sNof = explode(".", $aCrow[0]);
echo "<a href='photo/_html/show.php?ph=$sNof[0]'>\n";
echo "\t<img src='photo/_thumbs/$aCrow[0]' alt='$aCrow[1]'>\n";
echo "</a>\n";
}
?>
guest 13.08.2009 08:30 # 0
xaionaro 13.08.2009 09:23 # −1
1.) Опять же из-за того что писано на PHP?
2.) Из-за того что вызов echo повторён, что делает лишние вызовы функций? Если так то в PHP такие вещи пренебрежимы, ибо сам язык несёт порядком большие потери ;). Следовательно из-за этого считать говном бессмысленно.
3.) Из-за того что нет close соответсвующего fopen? Дак это в мире PHP тоже принято считать нормальным, AFAIK. Ведь вероятная логика PHP-кодера в том, что "когда программа завершится, интерпретатор сам закроет все лишние дискрипторы, зачем его лишать такого удовольствия". (видел и намного хуже, ругался-ругался, а в ответ просто получил, что я - зануда)
Хотя возращаясь к пункту 1.) и затрагивая пункт 3.), php-кодеры, сколько я их видел в реальности, вообще не пытаются создавать красивый код; хотя с другой стороны PHP, IMHO, для этого и не предназначен :).
Всё это я говорил к тому, что данный кусок кода не вызывает ни интереса, ни улыбки.
numlock 13.08.2009 10:05 # 0
guest 14.08.2009 02:07 # 0
1)нет проверки, открылся ли файл правильно (он может быть занят);
2)HTML прямо в коде, причем еще и довольно кривой (никому не нужные \t\n, неэкранированный alt - потенциальная XSS-уязвимость, для картинки не указаны размеры, что приведет к "прыганию" страницы по мере загрузки картинок).
3)благодаря четвертой строке некорректно обработает имя файла вида my.picture.jpg
4)файл таки надо закрывать сразу же после использования - гораздо меньше вероятность, что файл навернется при проблемах в остальной части скрипта;
5)...и это только на первый взгляд :).
А красивый код можно писать на чем угодно. Красивый код - продукт мозга, а не языка программирования.
xaionaro 14.08.2009 10:21 # 0
1.) согласен;
2.) "\t" и "\n" впринципе, IMHO, имеют свою пользу, этоговый HTML-код становится читабельнее :). По поводу уязвимости, я так понимаю, тот кто писал э
тот код, тот наполняет файл из которого идёт чтение, т.е. впринципе возможно так и задумано с определёнными требованиями к содержимому файла. Тут, IMHO, сложно придраться не зная истории этого куска кода)
3.) аналогично пункту (2), возможно так и задумано, просто выставлены дополнительные требования к содержимому файла;
4.) согласен;
А по поводу красивого кода, я абсолбютно согласен. Просто на некоторых языках удобно поступать одним образом, а на других - другим образом.
Я на PHP не пишу, знаком с ним по средставм лишь минимальной отладки чужого PHP-кода. Ламерский вопрос, в PHP есть понятие поинтеры? Как красиво в PHP в так называть "строковой переменной" (эквиваленте "char*") временно убрать первый символ, а потом вернуть назад?
Я ни в коем случае не хочу холиварить, просто интересуюсь :).
xaionaro 14.08.2009 10:22 # 0
guest 14.08.2009 16:00 # 0
Ну и строчку $sNof = explode(".", $aCrow[0]); заменить на $sNof = substr($aCrow[0],0,strrpos($aCrow[0],".")); (и чуть ниже $sNof[0] поменять просто на $sNof). Работы - максимум на пару минут, но возможных будущих проблем становится _гораздо_ меньше.
Код должен быть устойчивым, а пользователь по умолчанию считается обезьяной с гранатой.
...
В общем понимании указателей в PHP нет. Чтобы убрать первый символ, надо использовать substr или что-то наподобие.
xaionaro 14.08.2009 22:50 # 0
Я никого не хочу обидеть своим пунктом 1.), просто есть многие вещи, которые как мне кажется принципиально невозможно написать красиво на PHP... Но с иной позицией спорить не буду :)
grimskin 26.08.2009 23:03 # 0
guest 14.08.2009 16:02 # 0
Для примера зайдите на Яндекс и посмотрите исходник.
guest 13.08.2009 11:18 # 0
dizzy2 13.08.2009 11:50 # 0
y6uTbIu_CMEXOM 13.08.2009 12:02 # 0
Поэтому Вы сказали глупость.
yurgen.goa 13.08.2009 22:55 # 0
p.s. mne kazhetsja stali zabyvat', chto takoe WTF ili luche WTFC (What A Fucking Code)
p.s.s. to chto PHP pozvoljaet tak pisat', vina ne v dev'ah, a v samom jazyke
p.s.s.s pisat' na PHP mozhno normal'no.