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

Форум PHP

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

 

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

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

тема: Опять предача перемнных между скриптами.
 
 автор: Глеб   (25.10.2004 в 20:31)   письмо автору
 
 

У меня есть сайт с фреймами. Переменные в URL видятся, соответсвенно, только с главной страницы. Необходимо передать перемнную с главной страницы (index.php) в фреймовую страницу (menu.php).
Попытался передать перемнную через сессию

$quer=$_SERVER["QUERY_STRING"];
session_start();
$_SESSION['quer'] = $quer; 

получил сообщение:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\www\academy_site\index.php:7) in C:\www\academy_site\index.php on line 13

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\www\academy_site\index.php:7) in C:\www\academy_site\index.php on line 13

   
 
 автор: glsv (Дизайнер)   (25.10.2004 в 22:07)   письмо автору
 
   для: Глеб   (25.10.2004 в 20:31)
 

Вот пример передачи из фрейма во фрейм двумя способами: через JavaScript и просто по ссылке
Это главная страница, где определены фреймы

<frameset rows="50%,50%" frameborder="1" border="0" framespacing="0"> 
  <frame src="mainframe.php" name="topframe" scrolling="NO" noresize > 
  <frame src="bottomframe.php" name="bottomframe" scrolling="NO" noresize> 
</frameset> 

Чтобы передавать из фрейма во фрейм они должны иметь имя (параметр name). Здесь названы по именам файлов.

Далее - что находится во фреймах:
Это фрейм mainframe.htm - из него передаем значения во фрейм bottomframe.php

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
<title></title> 
<script language="JavaScript"> 
  function send(id) 
  { 
    top.frames.bottomframe.location.href="bottomframe.php?var="+id; 
  }     
</script>    
</head> 
<body> 
<h1>Фрейм 2</h1> 
<a href="#" onclick="send(4)">Передаем через JavaScript</a> <br>
<a href="bottomframe.php?var=4" target="bottomframe">Передаем просто по ссылке</a> <br>
</body> 
</html> 


А во фрейме bottomframe.php получаем значение $var

При передаче по ссылке нужно указывать значение target, равное имени фрейма-приемника. В данном случае - это target="bottomframe"

   
 
 автор: elenaki   (25.10.2004 в 22:08)   письмо автору
 
   для: Глеб   (25.10.2004 в 20:31)
 

а зачем открывать сессию? у меня между фреймами отлично передаются переменные в URL. наоборот, даже хорошо, что URL не видно.

   
 
 автор: Глеб   (26.10.2004 в 22:08)   письмо автору
 
   для: elenaki   (25.10.2004 в 22:08)
 

elenaki можно чуть поподробнее, что именно и как передается, а то что-то у меня не получается.

   
 
 автор: cheops   (25.10.2004 в 22:20)   письмо автору
 
   для: Глеб   (25.10.2004 в 20:31)
 

Сессии и cookie отправляются в HTTP-заголовках, которые по стандарту отправляются раньше всех данных. Если до обращения к функциям работы с сессиями и cookie выводится какой-либо текст, то требует от сервера отправки заголовков и когда приходит время для отправки заголовков сессий и cookie HTTP-заголовки уже сформированы.
Выходом здесь может служить использование функций управления выводом, позволяющих задержать вывод основного текста.

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=147

   
 
 автор: Глеб   (26.10.2004 в 22:30)   письмо автору
 
   для: cheops   (25.10.2004 в 22:20)
 

Решил проблему до безобразия просто:

        <frame src="
        <?php
                  $quer
=$_SERVER["QUERY_STRING"];
          print(
"menu.php?".$quer);    
        
?>
        " name="menuFrame">

   
 
 автор: glsv (Дизайнер)   (27.10.2004 в 01:07)   письмо автору
 
   для: Глеб   (26.10.2004 в 22:30)
 

Хм, а почему у Вас не работает стандартный способ передачи через URL, приведенный мной постом выше? Здесь даже и PHP не надо.. только параметр target указать.

<a href="bottomframe.php?var=4" target="bottomframe">Передаем просто по ссылке</a>

   
 
 автор: chip   (27.10.2004 в 03:03)
 
   для: glsv (Дизайнер)   (27.10.2004 в 01:07)
 

а как передать параметры
(значение переменных)
скрыто т.е. не через URL
методом POST наверно но как?

   
 
 автор: glsv (Дизайнер)   (27.10.2004 в 11:41)   письмо автору
 
   для: chip   (27.10.2004 в 03:03)
 

Скрыто это как? Чтоб никто не смог их увидеть (даже если захотел)?
Или чтобы просто их не было видно в адресной строке?
Для второго случая и если сайт на фреймах - отлично подходит вышеприведенный способ.
Если сайт не на фреймах, то можно воспользоваться Java-Script-ом или передачей данных методом POST через форму.

   
 
 автор: chip   (28.10.2004 в 00:17)
 
   для: glsv (Дизайнер)   (27.10.2004 в 11:41)
 

допустим есть некоторые переменные одни бурутся из других файлов посредством инклуд а другие предаются скрипты из зародненных ранее форм а третие задаются прямо в скрипте и как передать вме эти переменные в другой скрипт ?
ну через строку url (если можно чтоб они были не видны)
или как методом пост (но там переменные из форм заполненых ранее и из других файлов).
Ну в WML (WAP) фреймов пока вроде нет, как вроде и кукисов (хотя говорят и в сотовых появляются , но все ровно это пока исключение исправил).

Мне интересно вот что:
Вот человек зашел вел логин и пароль
и авторизировался т.е. нажимает настроки там его настройки нажимает входящие сообщения там его соообщения(применительно WAP и WEB).

   
 
 автор: glsv (Дизайнер)   (28.10.2004 в 01:29)   письмо автору
 
   для: chip   (28.10.2004 в 00:17)
 

Так Вы спрашиваете про именно про WAP?
Да, ява-скрипт здесь не поможет... Но для WAP-а есть вроде бы аналог JavaScript-а под названием WMLSCRIPT. Но тут я Вам посоветовать ничего не могу :(
Видимо, самое простое решение - все переменные передавать через URL открыто

   
 
 автор: chip   (28.10.2004 в 16:48)
 
   для: glsv (Дизайнер)   (28.10.2004 в 01:29)
 

Ну раз c WAP не подскажите то хотелось бы узнать как для WEB осуществить.
Чтоб знать какую анологию искать. WMLSCRIPT "слабенький" но ...

   
 
 автор: glsv (Дизайнер)   (29.10.2004 в 01:25)   письмо автору
 
   для: chip   (28.10.2004 в 16:48)
 

При всех ограничениях WAP пришло в голову только решение в лоб. Сформировать форму с методом POST и скрытыми переменными и запускать ее на выполнение JavaScript-ом. Как и показала elenaki


<form name="formname" action="index.php" method="POST">
<input type="hidden" name="var" value="2333">
</form>
<a href="#" onclick="formname.submit(); return false">Ссылка</a><br>


Саму форму будет не видно на странице. А отсылка данных из нее осуществляется JavaScript по методу form.submit(). А так как у формы метод POST, то переменных в URL не видно.

   
 
 автор: elenaki   (27.10.2004 в 13:41)   письмо автору
 
   для: chip   (27.10.2004 в 03:03)
 

мне тут недавно подкинули чужой скрипт доделывать. там параметры заполняются в форме, а передаются
Java-script'ом. я и не знала, что можно форму использовать без кнопки Submit. просто ее функции переданы скрипту.


<SCRIPT language="JavaScript">
function movecategory_submit()
{    radioRef=document.getElementsByName("selectcat_id");
    ssel=-1;
    for (i=0; i<radioRef.length; i++)
    {
        if (radioRef[i].checked) {ssel=i; break;}
    }
    if (ssel==-1) {alert ("Select the category."); return;}
    document.getElementById("movecategory_id").value=radioRef[ssel].value;
    document.getElementById("movecategory_form").submit();
}
function movecategory_reset()
{    if (!confirm("Reset the form.")) return false;
    radioRef=document.getElementsByName("selectcat_id");
    ssel=-1;
    for (i=0; i<radioRef.length; i++)
    {
        if (radioRef[i].checked) {ssel=i; break;}
    }
    if (ssel!=-1) radioRef[ssel].checked=false;
}
</SCRIPT>

<A href="#" onclick="movecategory_submit(); return false;" onmouseover="status='Select category'; return true;">category</A> 
 <A href="#" onclick="movecategory_reset(); return false;" onmouseover="status='Reset form'; return true;">Reset form</A>

   
Rambler's Top100
вверх

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