[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с фреймами
Slays
фреймы не видят ни переменных, ни сессий определенных в основном файле.
Вопросы:

Как лучше всего передавать во фреймы переменные, сессии и другие данные (из главного скрипта и между фреймами).

Можно ли это сделать без передачи get-параметров в src (передавать таким способом все параметры сессии это жесть).

Можно ли запретить открывать фреймы в отдельном окне.


user posted image



Спустя 6 минут, 42 секунды (7.11.2010 - 01:49) Sanchopansa написал(а):
помойму нельзы из фрейма получить не пост запросы ни сессию отправленые из основного скрипта

Спустя 8 часов, 31 минута, 6 секунд (7.11.2010 - 10:20) Slays написал(а):
ак я знаю что напрямую он их не видит, потому и спрашиваю, мне нужны альтернативные варианты передачи =)

Блин, если делать тупо на куки, то достаточно будет перехватить и подставить себе куки любого пользователя, чтобы войти под его именем и с его привилегиями, не ахти.

Как думаете, насколько безопасна такая схема:
хэш - случайное число, записываем в куки, в чистом виде от него никакой пользы
а $id пользователя передаем во фреймы через get-параметр, грубо говорят так

<frameset rows="30px,*">
<frame
name="menu" src="main/menu.php?id=<?php echo $id?>">
<frame
name="main" src="main/main.php?id=<?php echo $id?>">
</frameset>


дальше во фреймах осуществлять проверку на соответствие хэша данному id

или как лучше user posted image

Спустя 2 часа, 54 минуты, 33 секунды (7.11.2010 - 13:14) Sanchopansa написал(а):
Я тебя не правильно понял... вот тебе пример где работают и POST запрозы и Сессия!
Файл testframe.html
<frameset rows="30px,*">
<frame
name="menu" src="test.php">
<frame
name="main" src="test.php">
</frameset>


Файл test.php
<?php
session_start();
if (!isset($_POST['test']))
{

$_SESSION['test'] = 'Sesssion test is PASSED!';
?>
<form action="" method="POST" target="main">
<
input type="hidden" name="test" value="Post test is PASSED!" />
<
input type="submit" />
</
form>
<?php
} else {
echo $_POST['test'] . '<br />';
echo $_SESSION['test'];
}
?>

А вот тут можешь поглянуть в действии http://induviawebdesign.com/developers/sancho/testframe.html

Нажми на верхнюю кнопку Отправить smile.gif и все будет гуд smile.gif

Спустя 4 минуты, 34 секунды (7.11.2010 - 13:19) Sanchopansa написал(а):
немного переписал...
файл frametest.html
<frameset rows="100px,*">
<frame
name="menu" src="test.php">
<frame
name="main" src="blank.html">
</frameset>


Файл blank.html
<html><head></head><body></body></html>


файл test.php
<?php
session_start();
if (!isset($_POST['test']))
{

$_SESSION['test'] = 'Sesssion test is PASSED!';
?>
<form action="" method="POST" target="main">
<
input type="hidden" name="test" value="Post test is PASSED!" />
<
input type="submit" />
</
form>
<?php
} else {
echo $_POST['test'] . '<br />';
echo $_SESSION['test'];
}
?>

так более наглядно.. протестить можешь все тамже!

Спустя 6 минут (7.11.2010 - 13:25) Slays написал(а):
тут сессия создается внутри каждого фрейма, у меня ситуация немного другая =)

Имеется сайт из фреймов, доступ только для зарегистрированных пользователей, т.е.



// тут проверка авторизации
// если есть сессия и есть пользователь с данными id и hach, то пусть гуляет по сайту
// если что-то не то, то редиректим его с сайта на форму авторизации

// Но помимо этого, мне с данными этой сессии нужно работать из каждого фрейма,
// т.е. чтобы test.php получил данные из сесии и знал с каким пользователем имеет дело,
// причем безопасность тут очень важный фактор, т.е. в каждом фрейме также идет проверка


<frameset rows="30px,*">
<
frame name="menu" src="test.php">
<
frame name="main" src="test.php">
</
frameset>

Спустя 1 час, 7 секунд (7.11.2010 - 14:25) Sanchopansa написал(а):
Ты не прав.. все работает нормально...
http://induviawebdesign.com/developers/sancho/test.php

Файл test.php
<?php
session_start();
if (!isset($_POST['test']))
{
unset($_SESSION['test']);
$_SESSION['test'] = 'Sesssion test is PASSED!';
?>
<form action="" method="POST">
<
input type="hidden" name="test" value="Post test is PASSED!" />
<
input type="submit" />
</
form>
<?php
} else {
header('Location:testframe.html');
}
?>

Файл testframe.html
<frameset rows="100px,*">
<frame
name="menu" src="test1.php">
<frame
name="main" src="test1.php">
</frameset>


Файл test1.php
<?php
session_start();
if (!isset($_SESSION['test']))
{
echo 'Session ERROR!!!';
die();
}
echo $_SESSION['test'];

?>

Спустя 40 минут, 35 секунд (7.11.2010 - 15:06) Slays написал(а):
ты написал много кода, не относящегося к проблеме ) Но я посмотрев твой код, понял, что просто был не внимателен и сессии из фреймов видны, просто в одном месте session_start() пропустил.



session_start();
$_SESSION['user_data'] = $row;

<frameset rows="30px,*">
<frame
name="menu" src="test.php">
<frame
name="main" src="test.php">
</frameset>



в test.php

session_start();
print_r($_SESSION);

и все работает, сам себе проблему придумал =)

user posted image

Спустя 1 минута, 58 секунд (7.11.2010 - 15:08) Sanchopansa написал(а):
НУ я тебе это и старался показать.. просто подошел к этому более объемно smile.gif ну чтоб и новичкам было более понятно smile.gif


_____________
если помог, не скупись на карму =)
Быстрый ответ:

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