Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблемы с передачей METHOD=GET


Автор: zluka_x13 16.12.2006, 22:15
Доброго всем времени суток!

Проблема вот в чем:
Поставил Denver, сделал вирт. диск и закинул свои php-скрипты в 
Z:\home\localhost\www, но скрипт не хочет исполняться почему-то...
Например сделаем html-форму (как отдельный файл html-form.html):

Код

<form action="forma.php", METHOD=GET>
 First Name:<INPUT TYPE=TEXT, NAME="FirstName", SIZE=20><BR>
 Last Name: <INPUT TYPE=TEXT, NAME="LastName", SIZE=20><BR>
 E-mail Address: <INPUT TYPE=TEXT, NAME="Email", SIZE=20><BR>
 Comments: <TEXTAREA NAME ="Comments", ROWS=5, COLS=40></TEXTAREA><BR>
 <INPUT TYPE=SUBMIT NAME="SUBMIT", VALUE="Registration">
 <INPUT TYPE=RESET NAME=RESET VALUE="RESET">
</form>


Теперь передаем результаты в  файл forma.php:

Код

<?php
 print ("Your first name is: $FirstName");
 print ("Your last name is: $LastName");
 print ("Your e-mail is: $Email");
 print ("Your comments: $Comments");
?>


А вот и результат:
Notice: Undefined variable: FirstName in z:\home\localhost\www\forma.php on line 11
Your first name is: 
Notice: Undefined variable: LastName in z:\home\localhost\www\forma.php on line 12
Your last name is:
Notice: Undefined variable: Email in z:\home\localhost\www\forma.php on line 13
Your e-mail is:
Notice: Undefined variable: Comments in z:\home\localhost\www\forma.php on line 14
Your comments:

Кто объяснит почему?
Спасибо.

З.Ы. В файле httpd.conf поменял директиву DocumentRoot на:  Z:/home/localhost/www. Не помогло....

Автор: szz 16.12.2006, 22:22
Код

<?php
 print ("Your first name is: ".$_REQUEST['FirstName']);
?>

Автор: zluka_x13 16.12.2006, 22:46
Ммдяяя..

szz. Все равно не пашет:
Notice: Undefined index: FirstName in z:\home\localhost\www\forma.php on line 12
Your first name is: 
Notice: Undefined index: LastName in z:\home\localhost\www\forma.php on line 13
Your last name is: 
Notice: Undefined index: Email in z:\home\localhost\www\forma.php on line 14
Your e-mail is: 
Notice: Undefined index: Comments in z:\home\localhost\www\forma.php on line 15
Your comments:


P.S. Все таки думаю проблема из-за указанной неверно директории... Или нет?

Автор: Blaga 17.12.2006, 06:05
во первых свои скрипты можно хранить в home/папка_с_любым_названием/www/
Например home/comment/www/
Собственно сам скрипт:
Код

<?php
Error_Reporting(7);
$_GET['FirstName']=$first_name;
 echo "Ваше имя: ".$first_name;
?>

так вот 100% должно работать.

Автор: Alex13 17.12.2006, 08:07
Blaga, может все-таки надо написать чуть-чуть иначе?
Код

<?php
 Error_Reporting(7);
 $first_name=$_GET['FirstName'];
 echo "Ваше имя: ".$first_name;
?>

Автор: Blaga 17.12.2006, 08:23
Alex13, а теперь скажи мне в чем разница? Если я напишу x=y, а ты напишеш y=x. В чем разница? У каждого своя парадигма программирования. В нашем случае они у нас хоть и разные но несут одну и ту же смысловую нагрузку.

Автор: Aliance 17.12.2006, 12:39
Blaga, К вашему сведению:
оператор присваивания выполняется слева направо, что означет, что левому операнду присваивается значение правого.

zluka_x13, напиши в файле forma.php:
Код

echo "\n<pre>";
print_r($_GET);
echo "\n</pre>";


И проверь - выполяется ли передача данных.

Автор: smartov 17.12.2006, 13:15
Давно новичков не было...

zluka_x13, 

По HTML:

1) Что делают запятые в тегах?! Их не должно быть! Мануал надо сначала читать! Как так можно программить вообще? Естественно что данные не уходят - это грубая ошибка.

2) Так же настоятельно рекомендуется: все параметры всех тегов должны быть в кавычках! Все имена тегов и параметров писать lowercase. Все теги закрывать. 
Итого как должно быть:
Код

<form action="forma.php" method="GET">
 First Name: <input type="text" name="FirstName" size="20" /><br />
 Last Name: <input type="text" name="LastName" size="20" /><br />
 E-mail Address: <input type="text" name="Email" size="20" /><br />
 Comments: <textarea name="Comments" rows="5" cols="40" /></textarea><br />
 <input type="submit" name="submit" value="Registration" />
 <input type="reset" name="reset" value="RESET" />
</form>


По PHP:

1) 
Цитата(zluka_x13 @  16.12.2006,  21:15 Найти цитируемый пост)
 print ("Your first name is: $FirstName");
 print ("Your last name is: $LastName");


Сотни раз говорено-переговорено: никаких Register Globals! Всё что тебе приходит из массива $_GET нужно читать соответствующим образом. Так как тебе подсказывали: $_GET['FirstName'] например.

Итого как должен выглядеть forma.php (если по-простому):
Код

<?php
error_reporting(E_ALL);

//если в GET ничего не пришло
if (!@$_GET)//@ подавляет notice в этом месте
{
    echo "Запрос отсутствует";
    exit;
}

echo "Your first name is: ".$_GET['FirstName']."<br />";
echo "Your last name is: ".$_GET['LastName']."<br />";
echo "Your e-mail is: ".$_GET['Email']."<br />";
echo "Your comments: ".$_GET['Comments']."<br />";
?>

Автор: Blaga 17.12.2006, 13:34
Aliance, лично я всегда так писал. И никогда никаких проблем у меня с этим не возникало... Возможно все таки стоит делать так как удобнее? smile 

Автор: Piphon 17.12.2006, 17:10
Blaga,  у тебя register_globals включен...
Поэтому тот пример и работал.

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

Автор: Aliance 17.12.2006, 19:07
Цитата(Blaga @  17.12.2006,  14:34 Найти цитируемый пост)
Aliance, лично я всегда так писал. 

Смешно читать... И что с того? Пойми, ты либо в одну переменную "кладешь" другую, либо наоборот. Это совершенно разные операции.

Автор: Эрроу 17.12.2006, 20:59
Цитата(smartov @  17.12.2006,  13:15 Найти цитируемый пост)
Все теги закрывать. 

Ну, это зависит от DOCTYPE-а, все же.  smile 
Цитата(Blaga @  17.12.2006,  08:23 Найти цитируемый пост)
Alex13, а теперь скажи мне в чем разница? Если я напишу x=y, а ты напишеш y=x. В чем разница? У каждого своя парадигма программирования. 

Разница в том, что ты приводишь пример на PHP. 

Автор: zluka_x13 17.12.2006, 22:21
Всем спасибо. Теперь все понял про Register Globals. С формой получилось.. smile 

Автор: Blaga 18.12.2006, 07:38
Блин, точно. Всем спасибо что наставили меня на путь истинный. А то так бы и писал дальше.
zluka_x13, поставь галочку что вопрос решен.

Автор: smartov 18.12.2006, 12:09
Эрроу, 
Цитата(Эрроу @  17.12.2006,  19:59 Найти цитируемый пост)
Ну, это зависит от DOCTYPE-а, все же.

Я и не говорил что это обязательно.
Цитата(smartov @  17.12.2006,  12:15 Найти цитируемый пост)
Так же настоятельно рекомендуется


zluka_x13, 
Цитата(zluka_x13 @  17.12.2006,  21:21 Найти цитируемый пост)
С формой получилось.

Ну вот и отлично. На будущее пробуй сначала с манами ознакомиться, очень помогает избежать лишних вопросов. Тем более про эти вещи и по-русски манов кучами

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)