Недавно начал изучать php, а по этому не понимаю в чём дело. Вопрос.
В форме вводится имя, обрабатывает форму скрипт.
register_globals в настройках php включена, но при попытке вывести имя
пользователя $name выдаёт пустую строку. В $_POST['name'] тоже ничего
нет. Стоит сервер Apache.
Здравствуйте, Fluffy, Вы писали:
F>Недавно начал изучать php, а по этому не понимаю в чём дело. Вопрос. F>В форме вводится имя, обрабатывает форму скрипт. F>register_globals в настройках php включена, но при попытке вывести имя F>пользователя $name выдаёт пустую строку. В $_POST['name'] тоже ничего F>нет. Стоит сервер Apache.
Nu dlia nachala pokazhi hot kod to tvoi s formoi.
A voobshe prover kakaja u tebia PHP versija. Globalnie peremennie tipa $_GET, $_POST, $_SERVER i t.d. pojavilis ne tak davno.
Здравствуйте, Fluffy, Вы писали:
F>Недавно начал изучать php, а по этому не понимаю в чём дело. Вопрос. F>В форме вводится имя, обрабатывает форму скрипт. F>register_globals в настройках php включена, но при попытке вывести имя F>пользователя $name выдаёт пустую строку. В $_POST['name'] тоже ничего F>нет. Стоит сервер Apache.
А ты это случаем не в контексте функции делаешь? Тогда нужно вспомнить про правила видимости глобальных переменных.
function doSomething()
{
global $name;
echo "you are $name";
}
Здравствуйте, Fluffy, Вы писали:
F>Недавно начал изучать php, а по этому не понимаю в чём дело. Вопрос. F>В форме вводится имя, обрабатывает форму скрипт. F>register_globals в настройках php включена, но при попытке вывести имя F>пользователя $name выдаёт пустую строку. В $_POST['name'] тоже ничего F>нет. Стоит сервер Apache.
Попробуй посмотреть $_REQUEST['name']
Возможно у тебя в форме явно не прописан метод передачи данных и они уходят GETом.
Здравствуйте, Fluffy, Вы писали:
F>register_globals в настройках php включена
Вообще-то это потенциальная дырка в безопасности. Так можно в скрипт накидать кучу разной ерунды.
Если уж тебе хочется, лучше сделай так:
// в начале скрипта:
// кэширование параметров
$g_name = $HTTP_GET_VARS['name'];
$g_mail = $HTTP_GET_VARS['mail'];
// ты запоминаешь только те параметры, которые ожидаешь.
Можно даже автоматизировать:
/////////
// library.php
define('getvar', 'gv_'); // префикс всех get-переменных
define('postvar', 'pv_'); // префикс всех get-переменных
function get_var($id)
{
global $HTTP_GET_VARS;
$GLOBALS[getvar.$id] = $HTTP_GET_VARS[$id];
}
function get_vars($ids)
{
foreach($ids as $id)
get_var($id);
}
function post_var($id)
{
global $HTTP_POST_VARS;
$GLOBALS[postvar.$id] = $HTTP_POST_VARS[$id];
}
function post_vars($ids)
{
foreach($ids as $id)
post_var($id);
}
///////////
// main.php
include_once('library.php');
get_vars(array('name', 'mail')); // забираем нужные переменные
........
echo "name is $gv_name, mail is $gv_mail";
Здравствуйте, Fluffy, Вы писали:
F>Недавно начал изучать php, а по этому не понимаю в чём дело. Вопрос. F>В форме вводится имя, обрабатывает форму скрипт. F>register_globals в настройках php включена, но при попытке вывести имя F>пользователя $name выдаёт пустую строку. В $_POST['name'] тоже ничего F>нет. Стоит сервер Apache.
Если в $_POST['name'] ничего нет, то во-первых ты мог передавать гетом, во вторых, у тебя может быть старая версия пхп. В общем, приведи полный листинг того, что у тебя не работает — вместе с исходной формой.