За последние 24 часа нас посетили 43876 программистов и 1813 роботов. Сейчас ищут 1497 программистов ...

Вопрос (глобальные переменные)

Тема в разделе "PHP для новичков", создана пользователем cannyLaff, 16 июл 2009.

  1. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    Здравствуйте!
    как можно переменную $num, которая находится в файле file1.php использовать в другом файле file2.php??
    я пробовал использовать include/include_once и require/require_once, но они все выполняют весь файл file1.php, а мне нужна одна переменная $num!

    помогите пожалуйста
    заранее благодарю!
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Вообще, никак.
    Узнать можно значения только тех данных, которые находятся в памяти или были туда переданы соответствующим образом.
    Один файл не может знать о существовании другого никоим образом, пока это принудительно не указано.
    Мне вот лично не понятно совершенно, что может понадобиться из переменной другого файла без его исполнения?
    Она или пустая, или значение у неё статическое.
    Скрипт никак не может узнать о значении другой переменной, нужно ему её передать, для этого существует запросы GET, POST, COOKIE, а также сессии.
    Можно, конечно, распарсить файл ... но нафига оно нужно.
     
  3. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    у меня значение переменной $num задаётся в index.php и потом используется в нескольких последующих файлах, которые используются, только после index.php!!

    Apple, а не подскажешь как через запросы GET, POST или COOKIE можно передать значение переменной в другой файл????
     
  4. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    cannyLaff, вынеси переменную $num в , скажем, файл constants.php и подключай этот файл везде с помощью require
     
  5. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Можно еще в сессию записать.
     
  6. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    TheShock
    я думал так сделать, но у меня эта переменная преобретает новое значение в файле индекс.пхп!!
    ...хм
    а если я её значение буду менять в других файлах, то её значение будет менятся в констант.пхп, да????
     
  7. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    cannyLaff, используй базу данных, или сессии, как рекомендовал Вольт.
     
  8. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
     
  9. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
     
  10. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    нет[/code]
     
  11. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    блин...
    ну а если базу использовать, тогда каким путйм идти??
     
  12. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Функции и классы - если нужно вынести определённый функицонал для получения значения
    сессии - если нужно временно сохранить значение
    БД/файлы - если нужно хранить статичное значение
     
  13. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    Mr.M.I.T.
    значит мне нужна сессия??
     
  14. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    В сессии можно менять переменную так чтобы эти изминения передовались для каждого файла??
     
  15. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    index.php
    PHP:
    1. <?
    2.  
    3.  
    4. $_SESSION['executed'] = "Yes, it was";
    5.  
    6. ?>
    another.php
    PHP:
    1. <?
    2.  
    3. if(isset($_SESSION['executed'])) {
    4.     // Инструкция выполнения
    5.     echo $_SESSION['executed'];
    6.  
    7.     // Можно так (аккуратней с этим)
    8.     extract($_SESSION);
    9.     // Теперь выводим переменную
    10.     echo $executed;
    11. }
    12.  
    13. ?>
     
  16. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    спасибо, Apple

    правда у меня выбивает, вот такую вот ворнинг:

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\Apache Group\Apache2\htdocs\dbRestaurant\index.php:2) in ...\index.php on line 3

    3-я строчка:
    session_start();

    в чем проблема, подскажите??
     
  17. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    еще вопрос!
    можно ли взять значение переменной с прошлой сессии??
     
  18. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    вторую строчку покажи
     
  19. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Строчка session_start должна идти раньше, чем будет оправлен любой вывод.
    Т.е, формально говоря в самом начале скрипта.
    Если скрипт что-то выводит, пусть даже пробел, то эта функция работать не будет.
     
  20. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Не существует прошлой или будущей сессии; есть только настоящее.
    Есть сессия, которая хранится какое-то время (до закрытия браузера) и этим значением можно манипулировать.
    Никаких прошлых или будущих сессий нет.
    Если нужны прошлые значения, следует им перманентно хранить где-либо, например, в базе данных.
     
  21. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
  22. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    спасибо, всем, особенно Apple=)
    наонец-то разобрался

    TheShock
    спасибо за совет..

    но у меня всё равно вылетает эта ворнинг
    TheShock
    2-я строчка:
    <?
    3-я строчка:
    session_start();
     
  23. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Позаботьтесь о том, чтобы ДО этой строчки не было никакого вывода в браузер.
    Что бы ни один пробел не был этим не был выведен.
     
  24. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    удалите все перед <?
     
  25. cannyLaff

    cannyLaff Активный пользователь

    С нами с:
    4 июл 2009
    Сообщения:
    38
    Симпатии:
    0
    Apple
    там тупо ниче нету!!!