Консультация № 169083
07.06.2009, 16:15
0.00 руб.
07.06.2009, 17:42
0 8 2
Добрый день! Я начинаю учится РНР и у меня проблемка, помогите. В учебнике тема переменные, там же есть листиг, я его с небольшими изменеиями выполняю, но переменные не выводятся. почему?
в приложении кладу оба файла.
Выкладываю сразу на сервер. в пределах одного файла переменные работают нормально.
при типе передпчи GET - в адресной строке пишет:
http://school233.jino-net.ru/?F=%E2%FBX=%E2%E0&CC=%FB%E2
тоесть вроде видит переменные, а на старанице:Hi. Your email address is
помогите уже 2 дня штурмую учебник.

Приложение:
index.php:
<HTML>
<head>
<Title></Title>
<body>
<form ACTION ="" METHOD="POST">
ИМЯ <input type=text name="F" size=60><BR>
e-mail <input type=text NAME="X" size=60><BR>
СООБЩЕНИЕ <TEXTAREA NAME="C" ROWS=5 COLS=40></TEXTAREA><BR>
<INPUT TYPE=SUBMIT VALUE="Отправить">
</form>
</body>
</HTML>

form.php:
<html> <head>
<title></title>
</head>
<body>
<?php
// Вывести имя и адрес электронной почты.
print ("Hi. $F!. Your email address is $X");
?>
</body> </html>

Обсуждение

Неизвестный
07.06.2009, 16:52
общий
это ответ
Здравствуйте, Словик.В.А.

Ну во первых в поле action нужно указать файл которому передаем информацию, далее Вы даете понять php что выводить нужно не переменную а слова в данном случае "Hi. $F!. Your email address is $X"

для того что бы php вывел Вам то что получает из формы делаем следующее:

Код:

print ('Hi'.$F.'!'.'Your email address is '.'$X'.');



Приложение:
index.php:
<HTML>
<head>
<Title></Title>
<body>
<form ACTION ="forum.php" METHOD="POST">ИМЯ <input type=text name="F" size=60>
<BR>e-mail <input type=text NAME="X" size=60>
<BR>СООБЩЕНИЕ <TEXTAREA NAME="C" ROWS=5 COLS=40></TEXTAREA>
<BR><INPUT TYPE=SUBMIT VALUE="Отправить">
</form>
</body>
</HTML>

form.php:
<html>
<head>
<title>
</title>
</head>
<body>
<?php
// Вывести имя и адрес электронной почты.
print ("Hi. $F!. Your email address is $X");?>
</body>
</html>
Неизвестный
07.06.2009, 19:15
общий
Так как вы передаете переменные через GET, то для доступа к ним необходимо использовать суперглобальный массив $GET. Например так:
Код:
echo $GET['email'];
Скрипт выведет содержимое переменной email, переданной с помощью метода GET.
Код:
print ('Hi'.$GET['F'].'! Your email address is '.$GET['X']);

Обращаться к переменным из формы только по их именам, без использования массивов $GET и $POST небезопасно, поэтому на большинстве хостингов такая возможность отключена. Вероятно на вашем сервере это опция отключена. И из-за этого ваш скрипт на сервере не работает. Так же в поле action у формы не указан скрипт, которому вы передаете переменные.
Неизвестный
08.06.2009, 08:39
общий
НЕ работает, ни то ни другое
в поле action указан файл которому передаем информацию
и разбивал все кавычками, и print ('Hi'.$GET['F'].'! Your email address is '.$GET['X']); - пробовал
А есть еще варианты? и где как это называется правильно, чтобы посмотреть есть эта фунция на сервере?
Неизвестный
08.06.2009, 10:07
общий
Я кажется чуть-чуть ошибся. Надо использовать массив $_GET:
Код:
print ('Hi'.$_GET['F'].'! Your email address is '.$_GET['X']);

Попробуйте так.
Неизвестный
08.06.2009, 10:31
общий
Если вы используете в форме метод POST, то тогда используйте массив $_POST.
Файл index.php:
Код:
<HTML>
<head>
<Title></Title>
<body>
<form ACTION ="form.php" METHOD="POST">
ИМЯ <input type=text name="name" size=60><BR>
e-mail <input type=text NAME="email" size=60><BR>
СООБЩЕНИЕ <TEXTAREA NAME="message" ROWS=5 COLS=40></TEXTAREA><BR>
<INPUT TYPE=SUBMIT VALUE="Отправить">
</form>
</body>
</HTML>

form.php:
Код:
<html><head>
<title></title>
</head>
<body>
<?php
//Вывести имя и адрес электронной почты.
print('Hi. '.$_POST['name'].'! Your email address is '.$_POST['email']);
print('
Your messsage:
'.$_POST['message']);
?>
</body></html>

Проверить работу можно здесь.
Неизвестный
08.06.2009, 11:10
общий
Спасибо большое!!! Получилось!
Неизвестный
09.06.2009, 12:40
общий
это ответ
Здравствуйте, Словик.В.А.

в php.ini нужно найти строчку register_globals

register_globals = Off <- и выставить "On"

Но увы, этот способ не безопасен, лично я использую эмуляцию register_globals, прочитанную ранее из обного блога

...удачи

Приложение:
function register_globals_array($array)
{
foreach($array as $key => $value)
if(preg_match("/[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*/", $key))
$GLOBALS[$key] = $value;
}

function register_globals()
{
register_globals_array($_GET);
register_globals_array($_POST);
register_globals_array($_COOKIE);
register_globals_array($_ENV);
register_globals_array($_SERVER);
}
Неизвестный
10.06.2009, 09:48
общий
2 Сурыев Назар:
Вы даете понять php что выводить нужно не переменную а слова в данном случае "Hi. $F!. Your email address is $X"

а Вы попробуйте )))
Вы неправы, в случае ДВОЙНЫХ кавычек (как в вопросе) РНР интерпретирует выражение как надо и подставляет переменные. А вот если кавычки ОДИНАРНЫЕ - тогда, действительно, имя переменной интерпретируется как текст.
Форма ответа