[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Курсы PHP. Урок №1 от IRBIS-team
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23
twin
Цитата
Зачем register_globals = On делать?

Не надо...

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

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

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

user posted image
baston
Директива "RewriteCond %{REQUEST_FILENAME} !-f".
В интернете нашел информацию о ее синтаксисе: "СравниваемаяСтрока Условие".
В нашем случае, "СравниваемаяСтрока" - это переменная сервера в виде полного пути к файлу.
"Условие" - здесь записывается регулярное выражение. В данном случае, знак восклицания обозначает "Не".
А вот что обозначает "-f"? Не мог найти обозначение данного символа... То же самое и по второму условию "-d".
Спасибо.
baston
Все, нашел! smile.gif
Цитата
#
'-d' (является ли каталогом)
СравниваемаяСтрока считается путем, проверяется существование этого пути и то что этот путь является каталогом.
#
'-f' (является ли обычным файлом)
СравниваемаяСтрока считается путем, проверяется существование этого пути и то что этот путь является обычным файлом.
baston
Николай, подскажите пожалуйста, правильно ли я понимаю, что вот эта часть из директивы RewriteRule:
Цитата
?route=$1

означает, что мы заносим в переменную $route параметры из 1 группировки (то, что в скобках, а именно (.*), то есть любые символы после имени сайта)?
Например, был такой запрос:
http://www.kurs.irb/mona/lisa.php
Значит, в переменную $route попадет:
mona/lisa.php
При условии, что файла lisa.php не существует.
И тогда мы получим такое перенаправление:
http://www.kurs.irb/index.php?route=mona/lisa.php
Верно?
P.S. Проверил, вроде все правильно думаю...
P.P.S. Адрес получим без route: http://www.kurs.irb/mona/lisa.php
twin
Всё верно.

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

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

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

user posted image
baston
Может быть, я кажусь чрезмерно педантичным, но на самом деле это не так. Я просто хочу разобраться, что же я пишу и для чего; хочу понимать...
Спасибо.
baston
Единственное, что я не понимаю, так это назначение флага QSA. По мануалам, этот флаг добавляет исходные параметры запроса к замене.
В нашем случае, что является исходными параметрами запроса? /mona/lisa.php?
Тогда, что с ним, что без него в строке браузера будет в любом случае торчать полный путь к несуществующему файлу, даже если мы удалим роутер.
Может мне пояснить на пальцах назначение и необходимость этого флага?
Спасибо.
twin
Строка браузера не имеет к мод реврайту никакого отношения. Она у клиента, реврайт на сервере. Необходимости в этом флаге нет особой. Если чесно, я просто скопипастил из своего, другого .htaccess. Но он и не вредит, по этому и не заметил.

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

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

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

user posted image
PhoenoxAdm
Цитата
Лирическое отступление.
Вот тут есть маленький камушек под водой. Дело в том, что редакторы, использующие кодировку UTF-8, зачастую настроены на маркировку файлов так называемым BOM. Это три первых байта файла, в которых информация о кодировке. Так вот php-интерпретатор ругается на них как на вывод в поток. Как будто это мы что то написали. Нужно этот BOM отключить. Алгоритм проверки такой:
а) Делаем новый файл.
б) Пишем в него это:
<?php
header("Content-Type: text/html; charset=utf-8");
echo 'Шило в мешке не утаишь.';

в) Запускаем, смотрим.


Я может жутко тупой  sad.gif  но я не понял почти ничего что нужно сделать , не мог бы кто нибудь по проще мне в лс написать или тут ... а то я просто встрял.
Заранее спасибо
Цитата

if(выходит ошибка "Cannot modify header information")
{
//Ищем в редакторе, как отключить BOM
//Сносим файл, делаем новый без BOM
//Повторяем операцию
}
elseif(выходят кракозяблы)
{
//Устанавливаем в редакторе кодировку UTF-8
//Повторяем операцию
}
else
{
//Всё пучком
}


2. Переписываем листинг в по новому настроеном редакторе.

Важно!!! Не переделываем существующие файлы, а сносим их и делаем новые.
Обращайте внимание на опцию браузера "кодировка". Должно стоять - "Определять автоматически".

3. Запускаем и радуемся жизни. Впредь используя текущие настройки редактора.
________________________________________________________________

Не помешает выставить кодировку еще и заголовком, но об этом позже.

Дальше по теме
2, 3. Убиваем магические кавычки.

4. Отключаем глобальные переменные

5-8. Обработка ошибок запросов. Вот тут и пригодятся странички. Обратите внимание на строку
Options -Indexes
Эта строка запретит вывод списка файлов и директорий, если в папке не окажется индекса.

8-12. Обработка ошибок PHP интерпретатора. Тут немного по подробнее. Строки эти закомментированы, так как на момент разработки ошибки конечно лучше видеть на экране. А когда проект будет сдан в эксплуатацию, их лучше логировать (записывать в специальный файл), потому что если злой хацкер увидит ошибку, то может извлечь из неё полезную информацию. Но ошибки нужно знать, что бы вовремя их исправить.
По этому эти строки на готове.
Особо обратите внимание на строку
# php_value error_log "Z:/home/test.den/www/log/error.log"

Это путь до файла, куда мы и будем их складывать. Для этого сначала в корне нужно организовать директорию log и выставить на нё права 777. Путь должен быть абсолютный, от диска. Узнать его просто, нужно выполнить этот скрипт и скопировать то, что получится.
<?php

echo $_SERVER['DOCUMENT_ROOT'].'/log/error.log';


Я может жестко тупой баран sad.gif . Ничего почти не понял на этом месте , не мог бы кто по-проще мне написать что тут нужно сделать. либо по подробнее.
twin
Пиши что делал.

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

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

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

user posted image
PhoenoxAdm
Цитата
401.html
403.html
404.html

Оформлять их не нужно, это дело верстальщиков. Нам будет достаточно этого:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>404</title>
</head>
<body>
<h2 style="color:#FF0000">404</h2>
Запрашиваемая страница отсутствует на нашем сайте.
</body>
</html>


Еще там же в корне нужно сделать файл .htaccess с таким содержанием:
AddDefaultCharset UTF-8
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag register_globals Off
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
Options -Indexes

# php_value error_reporting 2047
# php_value error_log "Z:/home/test.den/www/log/error.log"
# php_flag log_errors on
# php_flag display_errors off

RewriteEngineon

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]


это все сделал , а дальше совсем потерялся
twin
Тогда тебе сюда. Там по проще. Потом тут продолжишь.

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

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

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

user posted image
PhoenoxAdm
Хорошо , вам виднее ...
PhoenoxAdm
Цитата
Вот тут есть маленький камушек под водой. Дело в том, что редакторы, использующие кодировку UTF-8, зачастую настроены на маркировку файлов так называемым BOM. Это три первых байта файла, в которых информация о кодировке. Так вот php-интерпретатор ругается на них как на вывод в поток. Как будто это мы что то написали. Нужно этот BOM отключить. Алгоритм проверки такой:
а) Делаем новый файл.
б) Пишем в него это:
<?php
header("Content-Type: text/html; charset=utf-8");
echo 'Шило в мешке не утаишь.';


Я конечно дико извиняюсь laugh.gif .У меня редактор - SciTE. Так вот я не нашел там никаких упоминаний на счет BOM, зато нашлось два вида кодировок UTF-8: это обычная и с заголовком .

P.S. Извините за частые возможно бесполезные вопросы , я просто осторожен оч. Кстати я все стать прочел , оказались оч полезными biggrin.gif , большое спасибо . Я думаю еще не раз туда загляну за справками laugh.gif
twin
<?php
header("Content-Type: text/html; charset=utf-8");
echo 'Шило в мешке не утаишь.';

Это работает?

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

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

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

user posted image
Быстрый ответ:

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