ScorpionX
2.10.2006 - 17:45
Я новичок в php и возможно мой вопрос покажется глупым. Например, в форме я переменной $name присваиваю значение "2", передача просиходит в файл test.php. Как мне сделать, чтобы после отправи в ФАЙЛе test до повторного изменения она ввсегда оставалась такой же(2), пока я её снова не поменяю... Я хочу, чтобы когда я эту переменную ввел, всегда она оставалась. В index.php я пишу include(./test.php). Мне надо, чтобы в index.php была видна... Надеюсь меня поняли)))
lunatikov
2.10.2006 - 22:15
Если я тебя правильно понял, то речь идет о глобальных переменных. Попробуй в test.php вставить оператор global $name; , и тогда в index.php можно этой переменной пользоваться, до тех пор пока она опять не изменится в test.php .
ScorpionX
3.10.2006 - 12:22
'lunatikov'
Да Вы меня правильно поняли, вот только я не помойму, как вставить оператор? Куда и как?
lunatikov
3.10.2006 - 22:28
Поскольку, по сути, информации о проблеме никакой, смею предположить следующее: в test имеется некая процедура func, в которой используется/задаётся $name; необходимо, чтобы $name было доступно и в index.php . Для этого в test.php пишем следующее: Код <? function func() { global $name; ... $name = 5; // изменяем глобальную переменную ... } ?> В index.php можем её проверить: Код <? func(); echo $name; ?> Если что-то не так, тогда уточни структуру index.php и test.php . И используешь-ли ты функции?
ScorpionX
4.10.2006 - 09:28
нет, так не пракит, объясню структуру. В index.php у меня только вот это Код <?PHP include("./test.php"); ?>
В test.php у меня таблица, а её значения передаются мной из формы admin.php Покажу на примере: в admin.php Код <form action=\"test.php\" method=\"post\"> <select name=name> <option value=\"текст1\">текст1</option> <option value=\"текст2\">текст2</option> <option value=\"текст3\">текст3</option> </select><br> в test.php Код <table> <tr> <td>слово <td><php echo $name <?> <td>слово <td>слово </tr> </table> Вот, когда отправляю данные из формы(admin.php) в test.php, у меня страница переходит автоматически на test.php и все работает, а стоит перезайти в test.php, она пропадает, и вот вопрос, как сделать, чтобы значение переменной $name всегда оставалось А в index.php вообще ничего не появляется
Ну, и чего удивительного, или, непонятного? Надо уяснить для себя несколько простых вещей: 1. Что такое GET и POST запросы. 2. Как их обрабатывать на php, желательно, с опцией в php.ini: register global=off (по умолчанию сейчас у большинства хостеров, особенно у тех, кто следит за обновлениями модулей пхп и мускула, и кстати, ценит собственную безопасность).
Практический совет: Поставьте себе на комп Денвер: www.denwer.ru Задавайте вопросы самому себе, путем написания php-скриптов, тестируя их на локальном полноценном веб-сайте. Если есть мозг - то должно получИтся.
Если не получилось - лучше поискать программиста, а вам - впустую не растрачивать время на освоение ненужной профессии, вполне возможно, что Вы - на самом деле - блестящий организатор, и таким образом, просто впустую тратите время. Может быть, еще какой специалист, я, право, не знаю.
С уважением.
lunatikov
5.10.2006 - 00:49
ScorpionXВ твоём случае надо сделать так: в admin.php в самое начало вставляем Код <?php session_start(); session_unregister ("name"); ?> а в test.php в самое начало вставляем Код <?php session_register("name"); ?>
ScorpionX
5.10.2006 - 11:32
VitS Я не пытаюсь стать програмистом, я в свободное время пытаюсь чем нибудь занятся, во и решил, что нибудь на php сделать...столкнулся проблемой, с которой я надеялся опытный програмист без проблем справится... lunatikov Спасибо, поробую Вашим вариантом!
ScorpionX
5.10.2006 - 14:31
Попробовал, вот такие ошибки! в admin.php Код Warning: session_start(): Cannot send session cookie - headers already sent by (output started at z:\home\****\www\admin.php:13) in z:\home\******\www\admin.php on line 16
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at z:\home\******\www\admin.php:13) in z:\home\*******\www\admin.php on line 16 и в test.php Код Warning: session_register(): Cannot send session cache limiter - headers already sent (output started at z:\home\*****\www\table.php:5) in z:\home\*******\www\table.php on line 6
ScorpionX Вставки, приведённые lunatikov-ым, должны быть самыми первыми строками в твоих прогах. Т.е. стоять перед всеми твоими операторами, включая <HEAD>.
ScorpionX
5.10.2006 - 17:43
Огромное всем спасибо, кто мне помогал... Все зароботало... Кстати, я эту тему поднимал в форумах 10, тоже крупных, как этот... И только здесь меня поняли и помогли! Сайт уже в избранном)))
ScorpionX
5.10.2006 - 19:22
только у меня вопрос возник, эти переменные в сессии на долго будут сохранятся? А то мне в другом форуме сказали, что тольок 20 минут(((
Ну, это можешь проверить и сам опытным путём. Или посмотри в учебниках по PHP, что там пишут про сессии.
lunatikov
5.10.2006 - 23:02
ScorpionXВ файле php.ini есть директива: Код session.gc_maxlifetime=1440 в которой 1440 и есть промежуток времени (в секундах), по истечении которого данные сеанса считаются недействительными и уничтожаются. Отсчет начинается с момента последнего обращения пользователя в текущем сеансе. А 1440 сек - это будет 24 мин! Само значение этого параметра, естественно, устанавливается провайдером.
ScorpionX
9.10.2006 - 17:54
А есть ли еще способы сохранения без использования базы данных
lunatikov
9.10.2006 - 22:28
Можно предложить ещё два варианта: 1. Это использовать Cookies, т.е. хранить данные на стороне клиента в виде пары "имя-значение". При этом срок годности cookies ты устанавливаешь сам. Проблема может заключаться в том, что некоторые пользователи отключают cookie в настройках своих браузеров. 2. Если нет возможности использовать базу данных, то данные можно хранить в обычных файлах на сервере. Но и здесь возникнут проблемы как с идентификафией файлов, так и с организацией одновременного доступа к ним.
ScorpionX
10.10.2006 - 14:57
lunatikov Спасибо, я все, понял))) Модератор может закрыть топик
..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
|