PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (16): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец

> Найдено сообщений: 232
_Dark_ Отправлено: 07 Августа, 2013 - 22:50:38 • Тема: Несколько вопросов по mod_rewrite • Форум: Вопросы новичков

Ответов: 11
Просмотров: 389
tuareg пишет:
Ну у меня он 5.2 ругается на такое объявление ф-ий

Да, этот код для PHP >= 5.3, в связи с использованием замыканий.
Но там можно указать название функции и вызывать через .
_Dark_ Отправлено: 07 Августа, 2013 - 22:15:05 • Тема: Несколько вопросов по mod_rewrite • Форум: Вопросы новичков

Ответов: 11
Просмотров: 389
tuareg пишет:
А оно так сработает?

А что не так?
_Dark_ Отправлено: 07 Августа, 2013 - 19:31:42 • Тема: Несколько вопросов по mod_rewrite • Форум: Вопросы новичков

Ответов: 11
Просмотров: 389
Вот новый пример, тот не совсем рабочий и правильный.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // Получаем запрашиваем адрес и удаляем из него слэш, который будет в начале и может быть в конце
  3. $uri = trim($_GET['q'], '/');
  4.  
  5. // Правила роутинга, при совпадении будет вызвана соответствующая функция с одним аргументом — смотрите второй адрес
  6. $routes = array(
  7.         'firstaddr' => function() { echo 'This is a callback for /firstaddr'; },
  8.         'news/read/([0-9]+)' => function($params) { var_dump($params); },
  9.         '' => function() { echo 'Default callback'; } // Страница по умолчанию (она же главная). Это правило выполнится в случае, если не подошло ни одно другое правило, так что должно быть всегда самым последним
  10. );
  11.  
  12. foreach($routes AS $route => $callback)
  13. {
  14.         $matches = array();
  15.         if (preg_match("#$route#", $uri, $matches)) {
  16.                 $callback($matches);
  17.                 break; // break необходим, т.к. для правила по умолчанию ('') подходит любой адрес
  18.         }
  19. }


Попробуйте зайти на сайт введя:
http://site[dot]ru/firstaddr
http://site[dot]ru/news/read/123
http://site[dot]ru/news/read/incorrect (такого адреса нет — откроется главная страница без всяких 301 редиректов)
http://site[dot]ru/

Вот вам и ЧПУ.

В общем, я думаю, что вы разберетесь, этот код — и есть, в общем-то, рабочий роутинг Закатив глазки
_Dark_ Отправлено: 07 Августа, 2013 - 19:19:52 • Тема: Несколько вопросов по mod_rewrite • Форум: Вопросы новичков

Ответов: 11
Просмотров: 389
teddy пишет:
А что будет, если к примеру использовать $2 вместо $1 ? Эти цифры как то отличаются или есть только такое понятие как $1 ? т.к в регэксп $ означает конец строки, поэтому не очень понятно что означает единичка... Почему - описал чуть выше...

http://www.php.net/manual/ru/reg....subpatterns.php
Это из этой серии. Цифра означает порядковый номер маски, это не конец строки, в данном случае.

И я свой пост дополнил про 301 редирект.
(Добавление)
А пример...
Какой пример?

Ну, вот, смотрите, простой пример:

(удалено, ниже новый улучшенный пример)

(писал в браузере после целого дня кодинга, мог что-то упустить)
_Dark_ Отправлено: 07 Августа, 2013 - 19:06:02 • Тема: Несколько вопросов по mod_rewrite • Форум: Вопросы новичков

Ответов: 11
Просмотров: 389
teddy пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^(.*) index.php?q=$1 [L]


^(.*) значит "всё", это регулярное выражение.
$1 — это ссылка на эту маску, т.е. в $1 попадёт то, что подходит под выражение (.*), т.е., как я сказал выше, всё.

!-f и !-d значит, что выражение должно выпоняться только для того пути, который не является путем к файлу (!-file) или директории (!-dir). Восклицательный знак — это, как обычно, отрицание, нужно для того, чтобы пути к изображениям или файлам проходили напрямую, не через PHP.
(Добавление)
teddy пишет:
И я так понимаю это не универсальный вариант. Как можно грамотно настроить ЧПУ? Что бы на основе title статьи например, формировался ЧПУ. Если можно напишите код чтоб я вбил его у себя и прощупал на примере как это работает.

Это универсальный вариант для систем с единой точкой входа.
Это правильный вариант, а ЧПУ вы должны делать уже через PHP.
Вам нужно смотреть на роутинг запросов.
Т.к. через mod_rewrite все запросы перенаправляются на index.php, то, например, при запросе http://site.ru/news/12 в $_GET['q'] будет /news/12.

Соответственно, в самом PHP вы должны при помощи регулярных выражений выполнить роутинг этого адреса.
Например, чтобы получить из адреса /news/12 ID новости (12) вам понадобится регулярное выражение типа news/([0-9]+).

Насчет редеректов не понял, что вы имели в виду, но ЧПУ должно делаться через PHP для большей гибкости, так что эта проблема сама решится, когда разберетесь с роутингом.
_Dark_ Отправлено: 07 Августа, 2013 - 18:38:06 • Тема: Именование переменных и свойств • Форум: Вопросы новичков

Ответов: 10
Просмотров: 377
deniel1987 пишет:
я просто столкнулся с тем что имя свойства объекта надо было проверить на валидность

Зачем это проверять во время исполнения?
_Dark_ Отправлено: 07 Августа, 2013 - 18:33:42 • Тема: Манипуляции с месяцами • Форум: Вопросы новичков

Ответов: 1
Просмотров: 122
http://dclg[dot]net/2010/03/14/sklon[dot][dot][dot]_php_javascript/
http://forum.php.su/topic.php?fo...=35&topic=23
_Dark_ Отправлено: 07 Августа, 2013 - 15:30:22 • Тема: Именование переменных и свойств • Форум: Вопросы новичков

Ответов: 10
Просмотров: 377
Какая разница, было задокументировано или нет, не надо так писать и все.
_Dark_ Отправлено: 07 Августа, 2013 - 12:59:10 • Тема: Авторизация на куках и сесиях • Форум: Вопросы новичков

Ответов: 12
Просмотров: 488
caballero пишет:
сессия есть сессия - сеанс связи юзера с системмой. Не может быть никакой сессии между заходами юзера на сайт.


Таблица sessions:


При авторизации генерируется хэш, добавляется запись в sessions и устанавливается cookie с этим хэшем пользователю.

При заходе пользователя скрипт сравнивает его хэш и IP адрес с данными в таблице. Если совпадение есть — пользователь идентифицирован и мы можем из таблицы пользователей загрузить его по его ID.

Что вы там хотите — понятия не имею.
_Dark_ Отправлено: 07 Августа, 2013 - 11:17:01 • Тема: Авторизация на куках и сесиях • Форум: Вопросы новичков

Ответов: 12
Просмотров: 488
caballero пишет:
зачем какая то таблица сессий если есть таблица юзеров с идентификаторами

Наверное для того, чтобы можно было управлять сессиями?
P.S. Не путать с PHP сессиями.
_Dark_ Отправлено: 06 Августа, 2013 - 18:32:35 • Тема: No such file or directory БЕЗ WARNING • Форум: Вопросы новичков

Ответов: 14
Просмотров: 978
Если это не ошибка PHP, то это выводит скрипт, соответственно, может в скрипте надо найти это место?
_Dark_ Отправлено: 06 Августа, 2013 - 18:30:29 • Тема: Именование переменных и свойств • Форум: Вопросы новичков

Ответов: 10
Просмотров: 377
Ну конвертируется в строку название и в $GLOBALS заносится, а что?
_Dark_ Отправлено: 06 Августа, 2013 - 18:25:23 • Тема: загрузка модулей в собственной cms • Форум: Вопросы новичков

Ответов: 7
Просмотров: 230
DelphinPRO пишет:
Для начала следует определится с терминологией. Что такое "модуль" в вашей системе. Потому что я, например, модулем в первую очередь считаю небольшой функциональный блок на странице. (форма входа, меню, голосование) Улыбка

Я думаю, что приведенные автором темы названия "модулей" как бы намекают.
_Dark_ Отправлено: 06 Августа, 2013 - 18:24:31 • Тема: Авторизация на куках и сесиях • Форум: Вопросы новичков

Ответов: 12
Просмотров: 488
В БД в таблице sessions хранится идентификатор сессии пользователя, в cookie ему ставите идентификатор. При заходе пользователя берете сессию из БД по идентификатору в cookie и тем самым идентифицируете пользователя.
По другому никак.
_Dark_ Отправлено: 21 Июля, 2013 - 16:46:25 • Тема: Алгоритм MD5 • Форум: Вопросы новичков

Ответов: 15
Просмотров: 585
StackOverflow

(буквально 10 - 15 секунд в Google)

Страниц (16): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB