Как создать отдельный каталог для каждого видео в базе данных и извлечь его идентификатор из URL? - PullRequest
3 голосов
/ 30 июля 2009

Например - на vimeo.com каждое видео имеет идентификационный номер. Чтобы просмотреть это видео, просто перейдите на vimeo.com/2847535 или что-то еще.

Допустим, у меня есть похожий сайт, где каждый раз, когда пользователь добавляет видео, ему присваивается уникальный идентификатор. Как создать каталог с этим идентификатором после добавления видео в базу данных?

Кроме того, когда видео находится в базе данных и создан каталог, теперь мне нужно отобразить правильное видео на странице php, которое загружается, когда пользователь посещает www.example.com/38540305 ... мой второй вопрос такое, как я могу получить идентификатор видео из URL? Я знаю, как это сделать, когда URL выглядит как www.example.com/video.php?38540305 с использованием _GET, но я не думаю, что это будет работать без "?"

Ссылки на ресурсы или код высоко ценится!

Ответы [ 2 ]

9 голосов
/ 30 июля 2009

Вместо создания каталога для каждого видео, вы можете использовать mod_rewrite , чтобы сопоставить любой URL, например www.example.com/[numbers], с video.php. Обратите внимание, что для этого вам понадобится Apache в качестве веб-сервера.

например. в файле .htaccess (или в файле конфигурации apache в каталоге или vhost)

RewriteEngine On
#check path is not a file
RewriteCond %{REQUEST_FILENAME} !-f
#check path is not a directory
RewriteCond %{REQUEST_FILENAME} !-d
#redirect any numeric path to video.php
RewriteRule ^([0-9]+)$ video.php?id=$1 [L]

Теперь вы можете использовать $_GET[id'] для получения идентификатора видео.

Чтобы ответить на ваш первый вопрос напрямую, вы можете после вставки записи вызвать mysql_insert_id() (или эквивалент), чтобы получить последний вставленный идентификатор. Тогда вы, очевидно, могли бы использовать mkdir() для создания своего каталога. Это все равно не сработает, если вы не создадите файл index.php в каждом каталоге.

2 голосов
/ 30 июля 2009

Вы собираетесь использовать mod_rewrite для этого. Примерно так:

RewriteEngine On
RewriteRule ^([\-_0-9A-Za-z]+)$  index.php?a=$1 [L]
You can customize RewriteRule as much as you want.

Ths должен переписать URL после '/', поэтому вместо этого он идет в index.php? A = path

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...