Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблемы с HTTP_REFERER
 
 автор: FiX   (22.04.2006 в 18:39)   письмо автору
 
 

Когда отправляешь данные формы через IE, все работает отлично.
А вот начал проверять в Опере, Netscape - не работает. Вот код:


$ref=getenv('HTTP_REFERER');
if(!ereg("^http://www.my_site.ru",$ref)) {
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=\"error.php\"'>";
exit;
}


Хотел сделать защиту, чтобы форма отправлялась только с сайта... Может, кто подскажет, в чем проблема?

   
 
 автор: Саня   (22.04.2006 в 18:49)   письмо автору
 
   для: FiX   (22.04.2006 в 18:39)
 

<?php
$ref
=getenv('HTTP_REFERER'); 
if ( !
preg_match("#^(http:// | http://www\.)?site\.ru#i"$ref) ) { 
print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=\"error.php\"'>"
exit; 
}
?>

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

   
 
 автор: FiX   (22.04.2006 в 20:47)   письмо автору
 
   для: Саня   (22.04.2006 в 18:49)
 

А так вообще не работает, даже в IE. Я совсем без понятия, в чем тут может быть дело. Подскажите, пожалуйста, кто-нить, очень надо!!!

   
 
 автор: Саня   (22.04.2006 в 21:04)   письмо автору
 
   для: FiX   (22.04.2006 в 20:47)
 

А так:
<?php
$arr 
= array("http://""www.");
$ref str_ireplace($arr""getenv("HTTP_REFERER"));
if ( !
preg_match("#^site\.ru(.*)#i"$ref) ) {
  print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=\"error.php\"'>"
  exit;
}
?>

   
 
 автор: FiX   (23.04.2006 в 00:52)   письмо автору
 
   для: Саня   (22.04.2006 в 21:04)
 

Да, так работает. Но, как обычно, вслед за этой проблемой встала следующая: возникли проблемы с сессиями. В IE все работает... Захожу в Опере - сессия почему-то теряется, и скрипт не может опознать данные.
Кстати, хочу спросить, может, проблема в этом:

session_start(enter);
ini_set("session.cache_expire", "180");
ini_set("session.use_cookies", "1");

   
 
 автор: FiX   (23.04.2006 в 13:00)   письмо автору
 
   для: FiX   (23.04.2006 в 00:52)
 

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

   
 
 автор: Саня   (23.04.2006 в 13:32)   письмо автору
 
   для: FiX   (23.04.2006 в 13:00)
 

> А вообще, разве есть разница для PHP? какой браузер?
Вобщем, да. У вас ID сессии хранится в куках, и, если у браузера проблемы с ними, то и сессия теряется.
Передавайте ID через URI:
<?php
ini_set
("session.use_trans_sid""1");
ini_set("session.use_only_cookies""0");
?>

   
 
 автор: FiX   (23.04.2006 в 21:15)   письмо автору
 
   для: Саня   (23.04.2006 в 13:32)
 

Спасибо, все работает :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования