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

Форум PHP

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

 

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

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

тема: Наверняка простой вопрос (подключение файла)
 
 автор: pal4ik   (22.05.2008 в 17:19)   письмо автору
 
 

Подскажите пожалуйста, если такое возможно, то как организовать следующее:


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

прошу вашей помощи

   
 
 автор: cheops   (22.05.2008 в 19:36)   письмо автору
 
   для: pal4ik   (22.05.2008 в 17:19)
 

Что-то не очень понятно. Попробуйте описать проблему более подробно?

   
 
 автор: Valick   (22.05.2008 в 22:14)   письмо автору
 
   для: cheops   (22.05.2008 в 19:36)
 

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

   
 
 автор: AcidTrash   (22.05.2008 в 23:08)   письмо автору
 
   для: pal4ik   (22.05.2008 в 17:19)
 

Не особо понятно, но может быть вам поможет глобализировать нужные переменные.

   
 
 автор: SiM(R)   (23.05.2008 в 02:44)   письмо автору
 
   для: AcidTrash   (22.05.2008 в 23:08)
 

Не совсем понимаю зачем это надо. Считывать файл в любом случаи придется.

<?php
$find
='$next'// имя переменной которую ищем

$file=file('text.txt');
foreach (
$file as $str)
{
    if (
$var=strstr($str$find)) // копируем переменную и ее значение (только целой строкой)
    
{
        
$var=substr($var0strpos($var';')); // если есть лишнее, то отбрасываем, оставляя только переменную и ее значение
        
$meaning=substr($varstrpos($var'=')+1); //если надо, то берем только значение переменной
        
break; // как только находим первое совпадение выходим из цикла
    
}
}

    echo 
$meaning;
    
$k=$meaning;
?>

   
 
 автор: pal4ik   (23.05.2008 в 13:07)   письмо автору
 
   для: SiM(R)   (23.05.2008 в 02:44)
 

Вообщем, рассказываю, что я пытаюсь сделать. есть страница ( у которой свой id). Она подключает другой php для отображения на ней 10 новостей. у каждой новости свой id. Когда переходим на какую-то новость, подключается третий php, который собственно и отображает всю новость инициализируя ее по id новости. так вот, в шаблоне страницы я по некоторым причинам подключаю 4-ый php, который должен был бы выводить заголовок страницы в соответствии с отображаемой новостью. Но не могу вытащить для этого id отображаемой новости. вот. как это сделать? те скрипты писал не я. Мой уровень знаний - начальный.

   
 
 автор: KPETuH   (23.05.2008 в 13:32)   письмо автору
 
   для: pal4ik   (23.05.2008 в 13:07)
 

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

   
 
 автор: pal4ik   (23.05.2008 в 13:39)   письмо автору
 
   для: KPETuH   (23.05.2008 в 13:32)
 

include
этой командой


а страница, которая отображает всю новость (3 -ий php) так:

<a href="<!--url-->/detnews/' . $r->id .'/" >подробнее...</a>

т.е. линком, где
$r->id - id этой новости

   
 
 автор: SiM(R)   (23.05.2008 в 16:04)   письмо автору
 
   для: pal4ik   (23.05.2008 в 13:39)
 

Попробуйте передать значение переменной $id через сессии. То есть в "третьем" php файле (скрипте) разместите код

<?php
session_start
();
$_SESSION['id']=$_GET['id'];


А в "четвертом" рhp разместите такой код:

<?php

session_start
();
$id=$_SESSION['id'];


Не забывайте, что сессии должны создаваться до вывода в браузер.

   
 
 автор: pal4ik   (23.05.2008 в 17:15)   письмо автору
 
   для: SiM(R)   (23.05.2008 в 16:04)
 

не работает. id пустое получается. сам скрипт без ошибок работает, но id не вытягивает

   
 
 автор: sim5   (23.05.2008 в 17:30)   письмо автору
 
   для: pal4ik   (23.05.2008 в 17:15)
 

У вас не работает сессия, или она теряется (нет старта сессии в последующих скриптах).

   
 
 автор: pal4ik   (23.05.2008 в 17:37)   письмо автору
 
   для: sim5   (23.05.2008 в 17:30)
 

и что делать в таком случае?

   
 
 автор: sim5   (23.05.2008 в 17:52)   письмо автору
 
   для: pal4ik   (23.05.2008 в 17:37)
 

Искать причину.

   
 
 автор: SiM(R)   (24.05.2008 в 00:58)   письмо автору
 
   для: sim5   (23.05.2008 в 17:52)
 

session_start() точно располагается до вывода в браузер??? До этой команды не должно быть ничего! Ни каких echo, никакого html кода, даже пробелов не должно выводиться в браузер! При чем это в обоих файлах.

   
 
 автор: pal4ik   (26.05.2008 в 12:01)   письмо автору
 
   для: sim5   (23.05.2008 в 17:52)
 

дельный совет)

   
 
 автор: sim5   (26.05.2008 в 12:24)   письмо автору
 
   для: pal4ik   (26.05.2008 в 12:01)
 

А какой вам нужен? Выше указана одна из самых распространенных ошибок при работе со сессиями, другая может быть связана с тем, что они у вас в php.ini не включены, треться с registr_globals. Надо указывать в вопросах своих, какие у вас ошибки при работе со сессиями, если они есть и т.д.. А так что же вам советовать?

   
 
 автор: pal4ik   (26.05.2008 в 12:41)   письмо автору
 
   для: sim5   (26.05.2008 в 12:24)
 

а как узнать какие ошибки?

   
 
 автор: sim5   (26.05.2008 в 12:57)   письмо автору
 
   для: pal4ik   (26.05.2008 в 12:41)
 

Если у вас происходит старт сессии после некоего вывода в барузер, например:

//вот тут к примеру, до РНР тега, есть пустая строка, 
//а это уже вывод в браузер
<?php //начинается вставка РНР кода
//или например здесь идет вывод в браузер, например
print "Session";
//и только потом стартуется сессия
session_start(); 

то вы обязательно получите с выводом в браузер и ошибку:

Session

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\domain\www\test.php:2) in Z:\home\domain\www\test.php on line 6

Если у вас ошибка связана с этим, но вы ее не видите, то у вас видимо включено подавление ошибок.

   
 
 автор: pal4ik   (26.05.2008 в 15:40)   письмо автору
 
   для: sim5   (26.05.2008 в 12:57)
 

у меня вот так:
<?php

session_start();
$_SESSION['id']=$_GET['id'];

пробела и перевода строки перед <?php нет

   
 
 автор: sim5   (26.05.2008 в 16:32)   письмо автору
 
   для: pal4ik   (26.05.2008 в 15:40)
 

Если у вас ошибок не выводит, и если (!!!) работа сессий включена в php.ini то должна быть запись переменной в сессии:

id|N; - в случае, если $_GET['id'] не определена
id|s:0:""; - в случае, если $_GET['id'] пуста
id|i:12; - в случае, если $_GET['id'] равна, например, 12

Вы не гадайте, а проверяйте. Если у вас работа сессий разрешена, то в папке tmp (по умолчанию) будет создан файл сессии с именем, например:

sess_06a29aab23e84035c8ad1ac21a09fb3d

Можете открыть его своим РНР-редактором или любым текстовым и просмотреть. Если файла сессии не создается, то у вас не работает (не включен) механизм сессий, просмотрите свой файл php.ini секцию [Session]

   
 
 автор: pal4ik   (26.05.2008 в 17:27)   письмо автору
 
   для: sim5   (26.05.2008 в 16:32)
 

я не гадаю, просто не понимаю о чем вы говорили. у меня нет файла php.ini. И вообще .ini нет. и папки tmp и сессий тоже нет

p.s. сайт писал не я.

   
 
 автор: GeorgeIV   (26.05.2008 в 17:36)   письмо автору
 
   для: pal4ik   (26.05.2008 в 17:27)
 

... и вообще - что такое сайт?... ;-)

   
 
 автор: sim5   (26.05.2008 в 17:45)   письмо автору
 
   для: pal4ik   (26.05.2008 в 17:27)
 

Как вам можно давать советы, если у вас вообще ничего нет!? )

   
 
 автор: pal4ik   (26.05.2008 в 20:18)   письмо автору
 
   для: sim5   (26.05.2008 в 17:45)
 

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

   
 
 автор: sim5   (27.05.2008 в 01:32)   письмо автору
 
   для: pal4ik   (26.05.2008 в 20:18)
 

>у меня нет файла php.ini. И вообще .ini нет. и папки tmp и сессий тоже нет

И чем в таком случае помочь? Вы тестируете свой сайт на локальном сервере, или ваши проблемы - это на реальном удаленном сервере? Если первое - то все у вас должно быть, если второе - то можно посмотреть по FTP свой сайт, можно просмотреть информацию о РНР настроках на вашем сервере, можно в конце концов обратиться в службу тех поддержки.

   
 
 автор: SiM(R)   (27.05.2008 в 01:50)   письмо автору
 
   для: sim5   (27.05.2008 в 01:32)
 

Если сайт распологается на локальном сервере {У меня винда и AppServ}:

1) файл php.ini распологается в директории C:\Windows
2) temp распологается в C:\AppServ\php\session\
3) чтобы просмотреть насройки вашего сервера используйте следующий код:


<?php
phpinfo
();
?>

Он выведет настройки вашего php-сервера.

Если ваш сайт находиться на удаленном сервере, то остается только использовать 3 способ. Залейте файл со скриптом на сервер и запустите его...

   
 
 автор: pal4ik   (27.05.2008 в 12:55)   письмо автору
 
   для: SiM(R)   (27.05.2008 в 01:50)
 

вижу настройки с помощью предоставленного скрипта (спасибо). что там смотреть??

вот инфо про сессии:

session
Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary wddx

Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0

   
 
 автор: pal4ik   (27.05.2008 в 12:54)   письмо автору
 
   для: sim5   (27.05.2008 в 01:32)
 

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

   
 
 автор: sim5   (27.05.2008 в 13:44)   письмо автору
 
   для: pal4ik   (27.05.2008 в 12:54)
 

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

   
 
 автор: pal4ik   (27.05.2008 в 15:49)   письмо автору
 
   для: sim5   (27.05.2008 в 13:44)
 

>Напишите хотя бы небольшой кусок кода вашей работы с сессией.

Попробуйте передать значение переменной $id через сессии. То есть в "третьем" php файле (скрипте) разместите код

<?php
session_start();
$_SESSION['id']=$_GET['id'];


А в "четвертом" рhp разместите такой код:

<?php

session_start();
$id=$_SESSION['id'];


Вот как посоветовали. вот так и пытался использовать.

   
 
 автор: mihdan   (27.05.2008 в 13:06)   письмо автору
 
   для: pal4ik   (23.05.2008 в 13:07)
 

Используйте разные переменные id_news, id_page, id_menu .....

   
 
 автор: SiM(R)   (27.05.2008 в 13:45)   письмо автору
 
   для: mihdan   (27.05.2008 в 13:06)
 

Ладно, давай сначала отделим мух от котлет.
Нам надо разобраться существует ли переменная $_GET['id'], точнее какое значение она имеет. В коде, где вы присваиваете сессии значение $_GET, разместите :

<?php
session_start
();
$_SESSION['id']=$_GET['id'];
echo 
$_SESSION['id'].'-session<br>';
echo 
$_GET['id'].'-get';
?>


Если ничего не будет выводиться значит ваши значения = нулю. И надо искать проблему в создании переменной $_GET['id']

   
 
 автор: pal4ik   (27.05.2008 в 16:02)   письмо автору
 
   для: SiM(R)   (27.05.2008 в 13:45)
 

Дело в том что этот php запускается только когда просматриваем всю новость. Поэтому сложно понять, где оно его выводит. и я исправил код так:

<?php

session_start();
$_SESSION['id']=$_GET['id'];
echo $_SESSION['id'].'-session<br>11111';
echo $_GET['id'].'-get';
....
мой код страницы

чтобы по метке 11111 найти в коде страницы это место. Так вот, даже "11111" не вывело. ..

   
 
 автор: pal4ik   (27.05.2008 в 16:08)   письмо автору
 
   для: mihdan   (27.05.2008 в 13:06)
 

>Используйте разные переменные id_news, id_page, id_menu .....

допустим я в 3-м php сделаю так (я так и пытаюсь), но как мне его потом передать в 4-ый php?

сам механизм или код какой чтобы из одного (3.php) файла передать значение переменной в другой (4.php), который вызывается в результате выполнения предыдущего (3.php).

   
 
 автор: SiM(R)   (28.05.2008 в 02:19)   письмо автору
 
   для: pal4ik   (27.05.2008 в 16:08)
 

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


Можно еще передать переменную таким образом:

<?php
define
("ID_NEWS"$id); // создаем в третьем файле константу, с номером новости
                                             // потом с помощью unclude() подключаем 4 php ( у Вас помоему так)
                                             // и используем уже эту константу.
?>

   
 
 автор: pal4ik   (28.05.2008 в 12:19)   письмо автору
 
   для: SiM(R)   (28.05.2008 в 02:19)
 

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


Итак,
session_start();
$_SESSION['id']=$_GET['id'];
echo $_SESSION['id'].'-session<br>;
echo $_GET['id'].'-get'

выдает:

-session
-get

я так понимаю, значит они пустые...


Все получилось! =))) отлично. все огромное спасибо! Вы были терпиливы)

   
Rambler's Top100
вверх

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