[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Курсы PHP. Урок №2 от IRBIS-team
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Guest
Доброго времени суток.

Изучаю урок "ядро".

в процессе параллельного изучения данной ветки форума возник вопрос касаемо config.php и ошибки 404, а также злостного хацкера.

А почему нельзя при внешнем обращении и к config.php (www.my-site.ru/config.php) редиректить на index.php?

Тут вообще будет не понятно - перенаправили или сработал default в switch...
Vseonet
Уважаемые, всю голову сломал...
Прошел все уроки до ядра, вроде все понятно, а во втором уроке ядра появилась проблемка.

После того как изменили вид ссылок в menu.tpl у меня перестали срабатывать ссылки на сайте. Денвер пишет, что они не найдены.

Реврайт включен, в конфиге путь прописан.

Когда ссылки были вида <a href="<?php echo IRB_HOST ?>?page=main">Главная страница</a> - все работало.
Как стали <a href="/main">Главная страница</a> - работать перестало.

Работает, если добавить каталог, который я уже прописал в конфиге, т.е. получится <a href="/my-site/main">Главная страница</a>

Работает еще, если прописать там константу <a href="<?php echo IRB_HOST ?>/main/small/10/4">Главная страница</a>

Видимо, Вы пропустили константу или я что то не так думаю
twin
А какой именно урок? В "легкой" версии нет реврайта, а в "тяжелой" нет констант... Чет я не пойму.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Vseonet
Вот здесь

<!-- skins/tpl/menu.tpl begin -->  
Сегодня <?php echo $date ?> года
<ul>
<li><a
href="/main">Главная страница</a></li>
<li><a
href="/second">Вторая страница</a></li>
</ul>


<!-- skins/tpl/menu.tpl end -->
devon
Добрый день Николай.
Не до конца понятен смысл условия:

elseif(count($_GET))
{
foreach($GET as $var => $val)
if(!empty($_GET[$var]))
$GET[$var] = $_GET[$var];
}


Просмотрел несколько мануалов везде одно и то же. Функция count() - возвращает кол-во элементов массива т.е. число.

Предостережение
count() может возвратить 0 для переменных, которые не установлены, но также может возвратить 0 для переменных, которые инициализированы пустым массивом. Используйте функцию isset() для того, чтобы протестировать, установлена ли переменная.

Как я понимаю из выше изложенного, если в $_GET параметров не передавалось, то функция возвратит 0, а 0 == FALSE и условие не сработает? Если кол-во элементов глобального массива $_GET равно 1 или больше, то значит передаются параметры и условие сработает?
Не проще воспользоваться стандартным оператором isset(). Логика условия в этом случае на мой взгляд более прозрачна.
Если я что-то не так понял в виду того, что PHP начал изучать недавно, просьба пояснить.
twin
isset() тут не годится. Потому что $_GET есть всегда. Вообще логичнее использовть !empty()

Хотя и так работает. smile.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
devon
Цитата (twin @ 1.06.2011 - 08:21)
isset() тут не годится. Потому что $_GET есть всегда. Вообще логичнее использовть !empty()


Об этом я и не подумал. Спс за поправку.
Это конечно хорошо, когда натыкаешься на незнакомые вещи, что провоцирует лично меня открыть мануал и разобраться до конца каким образом работает выражение.
С другой стороны, для новичка у которого в голове огромный ком информации после прочтения сотен страниц теории, которая не закреплена хорошей практикой, а не тупым приведением элементарных примеров, да еще и в разных книгах авторы утверждают, что надо делать именно так как хотят они, потому что они гуру PHP и знают все и вся, в итоге этот ком по полочкам разложить становиться сложнее.
Во меня понесло biggrin.gif
Что касается курса, то огромное человеческое спс за Ваш труд. С уважением Дмитрий.
twin
Цитата
в разных книгах авторы утверждают, что надо делать именно так
Я наоборот всегда повторяю - я показываю только основы. Дальше нужно думать. Кто способен, тот сможет. Кто нет - тому и не надо. smile.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
devon
Добрый день.
Просто стало интересно.
 
foreach($GET as $var => $val)
{
if(!empty($param[$i]))
$GET[$var] = $param[$i];

++
$i;
}

Какую роль играет операция инкремента ++$i в этом цикле записанная таким образом?
Как я понимаю никакой, все равно это последняя операция в цикле.
twin
Ну как никакой, это же цикл. При следующей итерации тут
$GET[$var] = $param[$i]; 
будет следующий элемент.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
devon
++$i и $i++ как я понял немного разные вещи. И тут не имеет значения как мы эту операцию запишем. Я это имел ввиду. То что эта операция увеличивает на единицу значение индекса массива при каждой итерации цикла это я понял.
Не корректно задал вопрос. Извиняюсь.
twin
Цитата
++$i и $i++ как я понял немного разные вещи.

В данном случае разницы нет, просто префиксная форма работает быстрее, потому както уютнее.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Гость_Sergei
Пожалуйста, скажите пару слов о таком варианте url-a, например:

http://mysite.dm/?main,news,10,1


Он тоже достоин внимания, или нет?
inpost
Гость_Sergei
запятая вместо слеша? Ну не знаю как вам, мне, лично, ооочень не удобно и ниразу не видел smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Гость_Sergei
Нет, не вместо слеша. Это вместо GET ключей (не знаю как обозвать).
Тоесть '?page=main&rem=news&id=10&num=1' заменить на '?main,news,10,1'.

Если судить по принципу обработки ЧПУ в примере урока, то там просто берется первый элемент 'main' и вставляется в массив GET['page'] и так далее с другими элементами.
И там же в уроке есть обработчик таких GET-ов: '?page=main&rem=news&id=10&num=1'. Однако, если провести аналогии с обработчиком в ЧПУ, то было бы логичнее использовать вот такое: '?main,news,10,1' и обрабатывать одинаково как ЧПУ так и GET.
Если в одном случае можно элементы брать попорядку и пренебречь ключами GET-ов, почему в другом нельзя?

Мне уже попадалось несколько сайтов с такими урлами '?main,news,10,1' и я пробовал такую реализацию. Мне понравилось, что не надо писать ключи.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.