Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не работает метод GET

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Golovastik
Отправлено: 08 Июля, 2010 - 19:20:14
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Вот експерементирую метод ГЕТ и пост. Вот создал 2 файла top1.php, top2.php.

top1.php
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head></head>
  4. <body>
  5. <form  action="top2.php"  name="formochka" method="post">
  6. <input name="per1" type='text' ><br><br>
  7. <input name="per2" type='text' ><br><br>
  8. <input name="knopka" type='submit' value="Отправить" >
  9. </form>
  10. </body>
  11. </html>
  12.  
  13.  


top2.php
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. echo  "Имя ввдённое на предыдущей странице -  $per1  и фамилия $per2";
  4. $x1 = 5;
  5. $x2 = 10;
  6. $rez = $x1 + $x2;
  7. echo "<br> <a href='top2.php?x1=25&x2=35'>Ссылка</a>";
  8. ?>
  9.  
  10.  


Если ввести например в первое поле Павел, во второе Дуров, нажать на кнопку "Отправить",
затем я перейду на файл top2.php. Если в файле top2.php нажать строку "Ссылка", сервер Апач выдаст ошибку:
CODE (text):
скопировать код в буфер обмена
  1.  
  2.  
  3. Notice: Undefined variable: per1 in z:\home\xai.loc\www\top2.php on line 2
  4. [ убрать подсказку | никогда больше не показывать ]
  5.  
  6. Это предупреждение, вероятнее всего, возникает вследствие высокого уровня
  7. контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL).
  8. Такой режим вывода ошибок является рекомендуемым и сильно помогает при
  9.  отладке скриптов. Однако множество готовых скриптов требуют более
  10. низкого уровня ошибок.
  11.  
  12. Вы можете установить более слабый контроль ошибок одним из следующих способов:
  13.  
  14. Впишите в скрипты строчку:
  15. Error_Reporting(E_ALL & ~E_NOTICE);
  16. Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
  17. Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:
  18. php_value error_reporting 7
  19. Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым
  20. и может привести к серьезным неудобствам при отладке!
  21. [Денвер: показать возможную причину ошибки]
  22. Notice: Undefined variable: per2 in z:\home\xai.loc\www\top2.php on line 2
  23. Имя ввдённое на предыдущей странице - и фамилия
  24. Ссылка
  25.  


Почему не срабатывает переадача значений переменным x1 и x2, через метод GET?
 
 Top
LEONeso
Отправлено: 08 Июля, 2010 - 19:45:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo  "Имя введённое на предыдущей странице -  $per1  и фамилия $per2";
  4. $x1 = 5;
  5. $x2 = 10;
  6. //проверка
  7. if (isset($_GET['x1']) && isset($_GET['x2']))
  8. {
  9. $rez = $_GET['x1'] + $_GET['x2'];
  10. }
  11. echo "<br> <a href='top2.php?x1=$x1&x2=$x2'>Ссылка</a><br>Ответ: $rez";
  12. ?>
  13.  

(Отредактировано автором: 08 Июля, 2010 - 19:53:43)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Champion Супермодератор
Отправлено: 08 Июля, 2010 - 19:48:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Давайте попробуем внимательно прочитать сообщение об ошибке.
Golovastik пишет:
Undefined variable: per1
Лично мне из этого не очевиден вывод, что
Golovastik пишет:
не срабатывает переадача значений переменным x1 и x2, через метод GET
 
 Top
Golovastik
Отправлено: 08 Июля, 2010 - 19:57:57
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Леонесо, если вставить ваш код, выдаёт ошибку:
Ответ:
Notice: Undefined variable: rez in z:\home\xai.loc\www\top2.php on line 17
 
 Top
LEONeso
Отправлено: 08 Июля, 2010 - 20:11:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Golovastik пишет:
Леонесо, если вставить ваш код, выдаёт ошибку:
Ответ:
Notice: Undefined variable: rez in z:\home\xai.loc\www\top2.php on line 17

Проверь 17-ю строку в файле. Код работает, проверял. Стоит запустить непосредственно top2.php в браузере. Вставь этот код, без своего, посмотри на его работу.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Uchkuma
Отправлено: 08 Июля, 2010 - 20:13:14
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Golovastik пишет:
Леонесо, если вставить ваш код, выдаёт ошибку
Потому что $rez задается в условии if (isset($_GET['x1']) && isset($_GET['x2']))
Засуньте туда же и вывод echo.
 
 Top
Golovastik
Отправлено: 08 Июля, 2010 - 20:21:11
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Вот если написать тоже не срабатывает.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. echo  "Имя введённое на предыдущей странице -  $per1  и фамилия $per2";
  5.  
  6. $x1 = 5;
  7.  
  8. $x2 = 10;
  9.  
  10. //проверка
  11.  
  12. if (isset($_GET['x1']) && isset($_GET['x2']) && $_GET['rez'])
  13. {
  14. $rez = $_GET['x1'] + $_GET['x2'];
  15. }
  16. echo "<br> <a href='top2.php?x1=$x1&x2=$x2'>Ссылка</a><br>Ответ: ";
  17. echo $rez;
  18.  
  19. ?>
  20.  
 
 Top
LEONeso
Отправлено: 08 Июля, 2010 - 20:23:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Golovastik пишет:
Вот если написать тоже не срабатывает.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. echo  "Имя введённое на предыдущей странице -  $per1  и фамилия $per2";
  5.  
  6. $x1 = 5;
  7.  
  8. $x2 = 10;
  9.  
  10. //проверка
  11.  
  12. if (isset($_GET['x1']) && isset($_GET['x2']) && $_GET['rez'])
  13. {
  14. $rez = $_GET['x1'] + $_GET['x2'];
  15. }
  16. echo "<br> <a href='top2.php?x1=$x1&x2=$x2'>Ссылка</a><br>Ответ: ";
  17. echo $rez;
  18.  
  19. ?>
  20.  


Код устарел, скопировал видать до правки. Скопируй, то что выше, в моём посте.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Golovastik
Отправлено: 08 Июля, 2010 - 20:38:51
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Если написать ваш код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo  "Имя введённое на предыдущей странице -  $per1  и фамилия $per2";
  4. $x1 = 5;
  5. $x2 = 10;
  6. //проверка
  7. if (isset($_GET['x1']) && isset($_GET['x2']))
  8. {
  9. $rez = $_GET['x1'] + $_GET['x2'];
  10. }
  11. echo "<br> <a href='top2.php?x1=$x1&x2=$x2'>Ссылка</a><br>Ответ: $rez";
  12. ?>
  13.  



Выдаст такую ошибку:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Имя введённое на предыдущей странице - Павел и фамилия Дуров
  3. Notice: Undefined variable: rez in z:\home\xai.loc\www\top2.php on line 10
  4. [ убрать подсказку | никогда больше не показывать ]
  5.  
  6. Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.
  7.  
  8. Вы можете установить более слабый контроль ошибок одним из следующих способов:
  9.  
  10. Впишите в скрипты строчку:
  11. Error_Reporting(E_ALL & ~E_NOTICE);
  12. Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
  13. Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:
  14. php_value error_reporting 7
  15. Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!
  16. [Денвер: показать возможную причину ошибки]
  17. Ссылка
  18. Ответ:
  19.  
 
 Top
mSec
Отправлено: 08 Июля, 2010 - 20:41:28
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




А register_globals - on? Скорее всего off, пользуйте $_POST['per1'] и $_POST['per2'], поскольку ошибка в этих переменных.

Также не совсем понятно, зачем добавлять в условие "&& $_GET['rez']" (12 строка), т.к. судя по по строке 16 параметр 'rez' в скрипт не передается.
Насколько я понял задачу, надо сделать сложение двух чисел, переданых через GET, и вывести ссылку на сложение этих чисел. Я бы изменил код так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo "Имя введённое на предыдущей странице -  $_POST[per1] и фамилия $_POST[per2]";
  4.  
  5. //проверка
  6. if (isset($_GET['x1']) && isset($_GET['x2']))
  7. {
  8. $rez = $_GET['x1'] + $_GET['x2'];
  9. echo "<br> <a href='top2.php?x1=$_GET[x1]&x2=$_GET[x2]'>Ссылка</a><br>Ответ: ";
  10. echo $rez;
  11. }
  12. else
  13. {
  14. echo 'Нет входных данных';
  15. }
  16. ?>
  17.  



UPD: Номера строк относятся к сообщению Golovastik от 08 Июля, 2010 - 20:21:11

(Отредактировано автором: 08 Июля, 2010 - 20:47:33)

 
 Top
Golovastik
Отправлено: 08 Июля, 2010 - 20:57:02
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Скажите, а присваивать значения из глобального масива, перменным в ссылке тоже обязательно нужно?
PHP:
скопировать код в буфер обмена
  1. <a href='top2.php?x1=$_GET[x1]&x2=$_GET[x2]'>Ссылка</a><br>Ответ: ";

(Добавление)
Как сделать чтоб оно посчитало и вывело?
 
 Top
JustUserR
Отправлено: 09 Июля, 2010 - 02:46:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Golovastik пишет:
Скажите, а присваивать значения из глобального масива, перменным в ссылке тоже обязательно нужно?
Значения из хеш-массивов можно напрямую интерполировать в строку с URL-адресом при условии что вы выполните их предварительное urlencode-кодирование - дело в том что хотя urlencode является методом именно шифрования а не экранирования но PHP по умолчанию производить раскодивание всех данных из строки запроса - и соотвественно при подаче следующего запроса их необходимо шифровать вручную соответствующим образом


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB