[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать такие ссылки?
metamarfoz
У меня на сайте движка нету. Все файлы лежат в папках, например для ссылки http://site.ru/modules/ у меня на фтп лежит папка modules а в ней index.php, у меня вопрос, можно ли чтобы по ссылке типа /modules?file=1 был тоже файл index.php????



Спустя 3 часа, 6 минут, 5 секунд (3.01.2010 - 16:06) ИНСИ написал(а):
metamarfoz если правильно понял тебя, то тебе надо посмотреть в сторону:

RewriteEngine on
RewriteBase /
RewriteRule ^modules?file=1?$ index.php

в файле .htaccess

Спустя 3 часа, 56 минут, 35 секунд (3.01.2010 - 20:02) metamarfoz написал(а):
Я так понял это прописать там надо?

Спустя 1 час, 23 минуты, 21 секунда (3.01.2010 - 21:26) ИНСИ написал(а):
metamarfoz да, это в файле .htaccess надо прописать

Спустя 39 минут, 51 секунда (3.01.2010 - 22:06) metamarfoz написал(а):
Ну я пропишу а дальше что делать?

Спустя 11 часов, 54 минуты, 55 секунд (4.01.2010 - 10:00) ИНСИ написал(а):
metamarfoz

RewriteEngine on
RewriteBase /
RewriteRule ^ссылка_какую_хотите (затем) ссылка_которая_ведет_на_настоящий_файл.php [NC]

Спустя 6 дней, 11 часов, 35 минут, 54 секунды (10.01.2010 - 21:36) papaiaaa написал(а):
Хм
а в случае если ссылка имеет вид
profile.php?id_usr=1, где 1 - номер пользователя
как сделать что-нибудь вроде:
user/1/

?

Спустя 10 часов, 36 минут, 54 секунды (11.01.2010 - 08:13) ИНСИ написал(а):
papaiaaa

RewriteRule ^user/([0-9-_]+)/ profile.php?id_usr=$1 [L]

Спустя 12 часов, 3 минуты, 41 секунда (11.01.2010 - 20:17) papaiaaa написал(а):
500 ошибка...
Использую Денвер-2
Чем может быть вызвана ошибка в этом случае? или это из-за особенностей денвера?

Спустя 21 минута, 56 секунд (11.01.2010 - 20:39) papaiaaa написал(а):
а допсутим сделать вместо login.php - modules/login/
получилось, но
при повторном нажатии ссылка становиться
modules/login/modules/login/
а если нажать на главную после того как нажать на login
получается modules/login/index.php

Вопрос: из-за чего это может происходить?

Спустя 1 час, 15 минут (11.01.2010 - 21:54) ИНСИ написал(а):
papaiaaa быть может в самой странице ты используешь неправильные ссылки. скинь код, который генерирует ссылку

Спустя 21 час, 34 минуты, 13 секунд (12.01.2010 - 19:28) papaiaaa написал(а):
<div id="container">
<div
id="header">
<h1>
Havana<span>TV</span></h1>
<div
id="topmenu">

<li><a
href="index.php?module=viewnews">Главная</a></li>
<li><a
href='to.php'>Личные сообщения </a></li>
<li><a
href='statistics.php'>Статистика</a></li>
<li><a
href="login.php">Авторизация</a></li>
<li><a
href="index.php?module=registration">Регистрация </a></li>
<li><a
href="userlist.php?u=1">Список пользователей</a></li>


</ul>
</div>
</div>



код шаблона шапки

а в htaccess:

RewriteEngine on
RewriteBase /
RewriteRule ^modules/login/$ login.php

Спустя 4 минуты, 42 секунды (12.01.2010 - 19:33) papaiaaa написал(а):
Некоторые файлы подрубаются
через index.php

<?

switch($_GET['module'])
{
case(''):
include('viewnews.php');
break;
case('allnews'):
include('allnews.php');
break;

case('viewnews'):
include('viewnews.php');
break;
case('registration'):
include('registration.php');
break;

}
?>


Спустя 1 минута, 24 секунды (12.01.2010 - 19:34) ИНСИ написал(а):
papaiaaa тогда я тебя не совсем понимаю. Ответь на несколько вопросов пожалуйста.

1. Ты хочешь, чтобы при нажатии на ссылку www.mySite.ru/modules/login/ открывался файл login.php?
2. А по поводу ссылок, сделай их в виде такого: http://www.mySite.ru/index.php и тогда то, что ты говорил, должно пропасть. Поменяй везде так smile.gif

Спустя 1 минута, 11 секунд (12.01.2010 - 19:35) papaiaaa написал(а):
1. да )
Некоторые файлы подрубаются через индекс, а некоторые напрямую
2. ок сейчас поробую...

Спустя 5 минут, 8 секунд (12.01.2010 - 19:41) papaiaaa написал(а):
Вроде все получилось)
Спасибо,
теперь проверю - не будет ли глючить сайт ибо это мой первый сайт на php и он очень коряво написан))

Спустя 2 минуты, 22 секунды (12.01.2010 - 19:43) ИНСИ написал(а):
papaiaaa
Цитата
1. Ты хочешь, чтобы при нажатии на ссылку www.mySite.ru/modules/login/ открывался файл login.php?

работает так?

Спустя 1 минута, 33 секунды (12.01.2010 - 19:44) ИНСИ написал(а):
papaiaaa я свой первый сайт, тоже коряво написал, но главное что ты развиваешься smile.gif

Спустя 3 минуты, 58 секунд (12.01.2010 - 19:48) papaiaaa написал(а):
Слушай а если я пользуюсь сессиями? просто у меня теперь авторизация несрабатывает)

Спустя 7 минут, 42 секунды (12.01.2010 - 19:56) papaiaaa написал(а):
Цитата (welbox2 @ 12.01.2010 - 16:43)
papaiaaa
Цитата
1. Ты хочешь, чтобы при нажатии на ссылку www.mySite.ru/modules/login/ открывался файл login.php?

работает так?


да, но я пока что все вернул как было)
Автроизация теперь не работает)
значение сессии не передается когда пути полные)

Спустя 7 минут, 43 секунды (12.01.2010 - 20:04) ИНСИ написал(а):
Цитата
да, но я пока что все вернул как было)
Автроизация теперь не работает)

papaiaaa если честно, то эта ссылка не должна влиять на твою форму. Если ты отправляешь данные с формы, то твой скрипт должен также работать как и всегда.
Цитата
значение сессии не передается когда пути полные)

не совсем понял, но это не влияет. Сессии и так должны нормально работать. RewriteRule влияет только на ссылку. а все остальное должно работать как всегда smile.gif

Спустя 6 минут, 36 секунд (12.01.2010 - 20:10) papaiaaa написал(а):
ну когдау меня ссылки типа
statistics.php
login.php
после авторизации они становятся
statistics.php?PHPSESSID=1c767040f8846456456452f8745642aa1
login.php?PHPSESSID=1c76704345356dc2e4c82f872aa456456156
а когда я поменял на
http://адрес сайта.ru/statistic.php

то после авторизации ссылка остается такой же и соответственно
пишет при нажатии: вы не авторизированы и тд.
тоже самое когда пытаемся сделать чпу

если кук вообще нет (только сессии), то возможно как-то передавать значение phpsessid при чпу?

Спустя 13 минут, 22 секунды (12.01.2010 - 20:24) ИНСИ написал(а):
papaiaaa мне кажется они сессию может работать и не показываясь в ссылке. как ты проверяешь в скрипте есть ли сессия?

Спустя 6 минут, 21 секунда (12.01.2010 - 20:30) papaiaaa написал(а):
if (isset($_SESSION['user_login'])) {
тут то, что неаторизированный пользователь не должен видеть
эта конструкция почти в каждом скрипте есть
}
else
{
die
('<br/>Для просмотра новостей необходимо <b>авторизироваться</b>.');
}

При авторизации происходит следующее:

if (isset($_POST['login']) && isset($_POST['password']))

{
$login = mysql_real_escape_string($_POST['login']);
$password = md5($_POST['password']);

$query = "SELECT *
FROM `users`
WHERE `login`='
{$login}' AND `password`='{$password}'
LIMIT 1"
;
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) == 1) {
$row = mysql_fetch_assoc($sql);
$_SESSION['user_id'] = $row['id'];
$_SESSION['user_login'] = $row['login'];
$_SESSION['user_password'] = $row['password'];
$_SESSION['user_email'] = $row['email'];
$_SESSION['user_name'] = $row['name'];
$_SESSION['user_fam'] = $row['fam'];
$_SESSION['user_info'] = $row['info'];
$_SESSION['user_city'] = $row['city'];
$_SESSION['user_group'] = $row['group'];
$_SESSION['user_ava'] = $row['avatar'];
$ip=$_SERVER['REMOTE_ADDR'];
$_SESSION['ip'] = $ip;
$result = mysql_query("SELECT * FROM users WHERE login='$login'"); //извлекаем из базы все данные о пользователе с введенным логином

Спустя 11 минут, 3 секунды (12.01.2010 - 20:41) ИНСИ написал(а):
papaiaaa у меня весь сайт на ЧПУ и проблем с сессиями у меня совсем нет. Так что поэксперементируй, создай новый файл и пусть ты потратишь КУЧУ времени, но ты разберешься в этом smile.gif

по поводу твоего кода, то есть несколько моментов, которые я бы сделал немного по другому, а именно

$login = mysql_real_escape_string($_POST['login']);

заменил бы на
$login = mysql_real_escape_string(stripslashes($_POST['login']));

а вот это:
		$_SESSION['user_id']       = $row['id'];
$_SESSION['user_login'] = $row['login'];
$_SESSION['user_password'] = $row['password'];
$_SESSION['user_email'] = $row['email'];
$_SESSION['user_name'] = $row['name'];
$_SESSION['user_fam'] = $row['fam'];
$_SESSION['user_info'] = $row['info'];
$_SESSION['user_city'] = $row['city'];
$_SESSION['user_group'] = $row['group'];
$_SESSION['user_ava'] = $row['avatar'];

замени бы на это:
$_SESSION['user'] = $row;

и чтобы вытащить какое-то значение, писал бы $_SESSION['user']['id'] - то есть вытаскиваем id и т.д. smile.gif

и or die(mysql_error() вовсе убрал бы, это хорошая помощь для взломщика

Спустя 11 минут, 6 секунд (12.01.2010 - 20:52) papaiaaa написал(а):
Ок)
Спасибо - проэксперементирую поповоду сессий )
А Phpsessid может передоваться так, чтоб значение невысвечивалось в адресной строке?

пс: в логе нашел
[Tue Jan 12 22:50:21 2010] [error] [client 192.168.1.1] File does not exist: /home/host/main/PHPSESSID=5adf11ff7b720f04453aaba3a5895d9b

Это когда с ЧПУ пробовал авторизироваться, возможно вообще таким способом сесии передавать?)


а это когда пытался сдеалть
RewriteEngine on
RewriteBase /
RewriteRule ^user/([0-9-_]+)/$ profile.php?id_usr=$1


[Tue Jan 12 23:15:37 2010] [alert] [client 192.168.1.1] /home/host/.htaccess: RewriteRule: cannot compile regular expression '^user/([0-9-_]+)/$'\n

Может быть опечатка или еще что-нибудь в этом роде?

Спустя 17 минут, 28 секунд (12.01.2010 - 21:10) ИНСИ написал(а):
papaiaaa могу все расписать, но думаю если ты почитаешь этот файл, то найдешь ответы на все свои вопросы:

1. Вот ссылка

2. По поводу
RewriteEngine on
RewriteBase /
RewriteRule ^user/([0-9-_]+)/$ profile.php?id_usr=$1

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

RewriteEngine on
RewriteBase /
RewriteRule ^user/([0-9-_]+)/?$ profile.php?id_usr=$1 [L]

то есть ссылка должна быть теперь http://mySite.ru/user/31/

Спустя 10 минут, 10 секунд (12.01.2010 - 21:20) papaiaaa написал(а):
500 ошибка..
А каким образом мы указываем что:
переменна $1 (я так понимаю сюда заносится номер юзера, тоесть то, что после знака равно profile.php?id_usr = $1 )
стоит после user/ ?

^user/([0-9-_]+)/

Спустя 10 минут, 40 секунд (12.01.2010 - 21:31) ИНСИ написал(а):
papaiaaa 500 ошибка, значит у тебя ошибка в файле .htaccess, значит что-то не то. ты сделал в том файле. скинь весь сюда его.....

по поводу $1, то правильно думаешь.

Спустя 2 часа, 20 минут, 53 секунды (12.01.2010 - 23:51) papaiaaa написал(а):
1)Так каким же образом указать что после ^user/ должна идти именно переменная?
2)
Вот весь текст

php_value error_reporting 7
php_flag display_errors off
php_value session.gc_maxlifetime 10800
php_value session.cookie_lifetime 10800

RewriteEngine on
RewriteBase /
RewriteRule ^user/([0-9-_]+)/?$ profile.php?id_usr=$1 [L]


Быстрый ответ:

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