За последние 24 часа нас посетили 21926 программистов и 1101 робот. Сейчас ищут 723 программиста ...

Как делать красивые URL без mod_rewrite

Тема в разделе "PHP для новичков", создана пользователем Ti, 13 окт 2006.

  1. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    такой вопросище.

    Мы создали страницу, например site.ru/index.php?id=3, а в блокноте 3.txt прописали "company", соответственно index.php?id=4 из 4.txt и т.д.

    Как сделать в модреврайте чтобы index.php?id=3 заменялось на "company"??? Не знаю каким кодом можно так импортировать данные в htaccess из txt и подставлять их на замену!!!! Подскажите как
     
  2. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    блин, у меня постоянно 404 выдаёт. Чё в пхп обработчике писать-то?
     
  3. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    аууууууу!
     
  4. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
  5. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    вообще-то тут реализацию обсуждают а не идею
     
  6. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    Koc
    господи а че тут непонятного? обычный mod_rewrite.
    более подробно это обсуждают в параллельной теме, созданной, кажется, тобой же)
     
  7. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    здесь не про это:)
     
  8. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    По форстайпу: подскажите что в пхп обработчике писать
     
  9. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    в htaccess вписал:
    <Files news>
    ForceType application/x-httpd-php
    </Files>

    в файле без разрешения: (news)

    <?php
    $caughtURI = $_SERVER['REQUEST_URI'];
    echo $caughtURI;
    ?>

    соответственно выдаёт путь на белом фоне.

    НО. У меня есть site.ru/folder/news/index.php?id=23

    не пойму как сделать средствами выше так: site.ru/news/23

    что именно нужно прописать в файле без расширения news?
     
  10. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    спасиб!
     
  11. Reet

    Reet Активный пользователь

    С нами с:
    17 июн 2009
    Сообщения:
    12
    Симпатии:
    0
  12. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    В гугле не пробовали поискать примеры?

    Что-то вроде этого. Не проверено.
    Код (Text):
    1. RewriteRule  ^/(.*)id=([d]+)$   $1/$2
     
  13. Reet

    Reet Активный пользователь

    С нами с:
    17 июн 2009
    Сообщения:
    12
    Симпатии:
    0
    спасиб в гугле похоже нет
     
  14. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
  15. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Я раньше никогда не использовал forcetype, и хотел бы у ветеранов спросить. Полученный $URI = $_SERVER['REQUEST_URI']; в обработчике-файле который без имени, использовать далее методом if или swith и далее
    file_get_contents ("настоящий_урл_если_$URI_соответствует_задачи"), правильно понимаю, или это делается намного проще?
     
  16. lexinfo

    lexinfo Активный пользователь

    С нами с:
    16 янв 2007
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    Ростов-на-Дону
    У меня до боли простая задача:
    Как сделать чтоб в конце запроса автоматически ставился слэш?
    Т.е. есть например пользователь набрал в строке www.site.ru/qwerty/1/5, а htaccess переделал запрос в www.site.ru/qwerty/1/5/. То есть надо чтоб при любом запросе без слэша в конце, чтоб слэш добавлялся автоматом.
     
  17. ekip

    ekip Активный пользователь

    С нами с:
    11 авг 2009
    Сообщения:
    118
    Симпатии:
    0
    Action throw /news.php

    <FilesMatch "^([^.]+)$">
    ForceType throw
    </FilesMatch>

    <FilesMatch news.php>
    ForceType application/x-httpd-php
    </FilesMatch>

    Не подключает *.css и *.js + картинки не отображаются.
    До сих пор не понятно как это работает, видимо скрипт пытается вытащить изображение из несуществующего каталога news
     
  18. Jekis

    Jekis Активный пользователь

    С нами с:
    1 сен 2009
    Сообщения:
    14
    Симпатии:
    0
    Вот сайтик, там странички 1.2.3.4... и т.д вот этого мне и необходимо добиться, но здесь идёт автогенерация страниц как я понимаю, мне это не нужно, мне необходимо таким образом организовать 6-8 страниц. (http://www.free-download-internet.com/) Подскажите пожалуйста как это сделать???
     
  19. Noobie

    Noobie Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Вопрос глупый, но сам ответ не нашёл.
    PHP:
    1. mysql_query("select hash from users where id = $_COOKIE["id"];");
    Каким образом обособить массив COOKIE, чтобы он читался, как часть запроса, а то содержимое в квадратных скобках уже не воспринмается, как часть переменной.

    Спасибо!
     
  20. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Noobie
    Во-первых, учить русский и php.
    Во-вторых -

    $q = 'SELECT hash FROM users WHERE id = '.$_COOKIE['id'];
    mysqli_query($q);

    В-третьих - искать в гугле понятие "конкатенация строк".
     
  21. Noobie

    Noobie Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Благодарю за ответ!

    Не понял по-поводу "учить русский". Можно пояснить?
    Я ошибся только разделом из-за того, что изучал все прилепленные темы и хотел написать в "Вопросы новичков", а закладкой в браузере промахнулся. Я человек - могу ошибаться.

    Встречный вопрос - для чего sql-запрос выносить в отдельную переменную? Ведь это лишняя трата памяти...
     
  22. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Noobie
    С радостью.

    Имеется в виду - грамотно задавать вопрос: так, чтобы не приходилось додумывать)))))
    Я, честно говоря, только с третьего раза понял, что имелось в виду - и то, не по словам, а когда фкурил запрос))))))))

    Я считаю, это не такая критичная трата памяти.
    Да и удобнее мне так. Правишь переменную - и, если что, можно сделать, например, "echo $q;".
    А если вызываешь метод - $db->query('SELECT * FROM users'), уже так не сделаешь.
     
  23. Noobie

    Noobie Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Ну, как раз вопрос-то и задавался с целью уйти от ещё одной переменной :)
    Мне было нужно использовать только одну переменную - в которую результат запроса идёт.

    По-поводу критичности казалось бы да - особо не критично, но речь идёт о модуле аутентификации, который я планировал подгружать буквально на каждой странице.

    НО! До меня только сейчас дошло, что подгружать модуль надо только при первом заходе, дальше смотреть по сессии и так до закрытия браузера. Не зря ник - Noobie :) Для меня web-языки - сфера новая, ещё не освоился... Потерпите уж мои глупые вопросы))
     
  24. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Ну.... Я что-то не понимаю суть вопроса...
    Если мы используем cookie, то после установки, они доступны в переделах установленной директории по всему сайту БЕЗ ПРЕДВАРИТЕЛЬНОГО объявления...
    В зависимости от времени установки, куки сохранятются либо закрытия браузера, либо до установленного времени.

    Если мы используем сессию - то мы обязаны стартовать её в начале вызываемой страницы.
    После закрытия браузера сессия уничтожается.
     
  25. Noobie

    Noobie Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Как было задумано: в таблице БД строка содержит "id", "логин", "пароль" и "хэш". При авторизации человек вводит свой логин и пароль, если всё успешно, то генерируется случайный ключ, хэшируется и загоняется в базу данных. В кукисы клиенту прописываются id и хэш. Далее на каждой странице читаются кукисы и сверяются с базой.
    Как будет: в таблице БД строка содержит "id", "логин", "пароль" и "хэш". При авторизации человек вводит свой логин и пароль, если всё успешно, то генерируется случайный ключ, хэшируется и загоняется в базу данных. В кукисы клиенту прописываются id и хэш. Далее на каждой странице читается из сессии ID клиента, по которому производится аутентификация. Если сессии нет, то читаются кукисы и сверяются с базой, если ОК, то ID загоняется в сессию.

    Думаю, что
    PHP:
    кушает намного меньше, чем
    PHP:
    1. mysql_query("SELECT * FROM users WHERE hash=$_COOKIE["hash"] and id=$_COOKIE["id"];"));
    В синтаксисе выше накосячил :) Повторюсь - можно ли в SQL запрос вставить значение из массива без введения доп.переменных?

    И заодно ещё один вопрос - как можно защищаться от подмены данных в кукисах? Какую инфу PHP знает о клиенте, кроме IP (неизвестно какого) и той, которую также можно подменить?

    P.S.
    Чёт мне уже стыдно. Тему про красивые URL своими опытами замусорил :)
    Можно нашу переписку вынести в отдельную тему, которую назвать "Вопросы от нуба"? :)