PHP.SU

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

Страниц (81): В начало « ... 73 74 75 76 77 78 79 80 [81]

> Найдено сообщений: 1209
evgenijj Отправлено: 25 Сентября, 2006 - 20:18:34 • Тема: Данные из формы не передаются в скрипт • Форум: HTTP и PHP

Ответов: 9
Просмотров: 5689
Ничего удивительного - настройки в файле php.ini (Master Value - register_globals = On) были переопределены в файле .htaccess (Local Value - register_globals = Off).
evgenijj Отправлено: 22 Сентября, 2006 - 14:21:39 • Тема: Поисковая система • Форум: Программирование на PHP

Ответов: 11
Просмотров: 711
http://www.php.su/articles/?cat=...pdb&page=015
http://www.php.su/mysql/manual/?...=Fulltext_Search
http://mag.phpclub[dot]ru/okt2004/phpi7_2004[dot]pdf
http://forum[dot]dklab[dot]ru/php/advise[dot][dot][dot]RussianWord[dot]html
evgenijj Отправлено: 20 Сентября, 2006 - 12:47:44 • Тема: Поиск по MySql • Форум: Работа с СУБД

Ответов: 4
Просмотров: 3964
Цитата:

(Добавление)
evgenijj пишет:
А что за странная переменная $find в качестве условия для if. Я так понимаю, никакого поиска и не будет, потому что условие всегда FALSE (если register_globals=Off).


этим он хотел сказать, что $find - имя его сабмита. Поиск будет в принципе и при отключённом register_globals.[/quote]

Позвольте небольшой кусок кода:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $findit=$_POST['find'];
  4. $in=$_POST['in'];
  5. echo "Переменная find=".$find."<br>";
  6. if($find)
  7. {
  8.         echo "Поиск";
  9. }
  10. else
  11. {
  12.         echo "<form action='find.php' method='post'>
  13.         <input type='radio' name='in' value='site' />Site
  14.         <input type='radio' name='in' value='catalog' />Catalog
  15.                 <input type='text' name='find' value='' />
  16.         <input type='submit' name='find' value='Search' />
  17.         </form>";
  18. }
  19. ?>
  20.  


По мысли автора проверка if($find) должна защитить скрипт от поиска пустой строки. Это я так думаю. Но при register_globals=Off эта переменная Undefined, что трактуется PHP как FALSE. Вот результат работы этого скрипта:

CODE (text):
скопировать код в буфер обмена
  1.  
  2. Notice: Undefined index: find in C:worklocalhostwwwfind.php on line 2
  3. Notice: Undefined index: in in C:worklocalhostwwwfind.php on line 3
  4. Notice: Undefined variable: find in C:worklocalhostwwwfind.php on line 4
  5. Переменная find=
  6. Notice: Undefined variable: find in C:worklocalhostwwwfind.php on line 6
  7. // Здесь выводится форма
  8.  


Откровенно говоря, я и не заметил, что автор присвоил двум переменным в форме одинаковые имена - find. В этом случае при register_globals=On скрипт всегда будет искать одну и ту же строку "Search"
evgenijj Отправлено: 20 Сентября, 2006 - 12:05:29 • Тема: MySQL и кодировки • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 73
В новых версиях MySQL (начиная с 4.1.0) изменился порядок работы с национальными кодировками, поэтому старый код может вызывать появление в таблице базы данных знаков вопроса '????????' вместо русского текста. Для того, чтобы этого не возникало, в начало PHP-скрипта, после установки соединения с базой данных, следует поместить следующие строки:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.   mysql_query ("set character_set_client='cp1251'");
  4.   mysql_query ("set character_set_results='cp1251'");
  5.   mysql_query ("set collation_connection='cp1251_general_ci'");
  6. ?>
  7.  


Придерживаться правильного синтаксиса SQL-запросов:

PHP:
скопировать код в буфер обмена
  1.  
  2. CREATE DATABASE mydb DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
  3. CREATE TABLE mytab (
  4.    id int(10) unsigned NOT NULL auto_increment,
  5.    head tinytext NOT NULL,
  6.    body longtext NOT NULL,
  7.    PRIMARY KEY  (id)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
  9.  
evgenijj Отправлено: 19 Сентября, 2006 - 14:55:11 • Тема: Поиск по MySql • Форум: Работа с СУБД

Ответов: 4
Просмотров: 3964
А что за странная переменная $find в качестве условия для if. Я так понимаю, никакого поиска и не будет, потому что условие всегда FALSE (если register_globals=Off).
evgenijj Отправлено: 28 Августа, 2006 - 19:25:25 • Тема: Передача переменных методом GET • Форум: Программирование на PHP

Ответов: 12
Просмотров: 3473
Мы все дальше отклоняемся от темы . Вопрос изначально стоял так: можно ли при передаче методом GET переменных из формы часть из них передать в атрибуте action элемента form, а часть - через элементы input формы. Т.е.
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?
  3. if ( !isset($_GET["var3"]) )
  4. {
  5.   echo "<form name='frm' action='".$_SERVER["PHP_SELF"]."?var1=value1&var2=value2'
  6.   method='GET'>";
  7.   echo "<input type='text' name='var3' value='value3'>";
  8.   echo "<input type='text' name='var4' value='value4'>";
  9.   echo "<input type='submit' value='Go!'>";
  10.   echo "</form>";
  11. }
  12. else
  13. {
  14.   echo "<p>Переменная var1=".$_GET["var1"]."</p>";
  15.   echo "<p>Переменная var2=".$_GET["var2"]."</p>";
  16.   echo "<p>Переменная var3=".$_GET["var3"]."</p>";
  17.   echo "<p>Переменная var4=".$_GET["var4"]."</p>";
  18. }
  19. ?>
  20.  

До того, как я столкнулся с этой проблемой, я полагал, что после отправки формы скрипту будут доступны четыре переменные var1, var2, var3, var4, переданные методом GET, т.е.
test.php?var1=value1&var2=value2&var3=value3&var4=value4

Несложный эксперимент показал, что это не так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. Notice: Undefined index: var1 in D:worklocalhost8wwwtest.php on line 13
  3. Переменная var1=
  4. Notice: Undefined index: var2 in D:worklocalhost8wwwtest.php on line 14
  5. Переменная var2=
  6. Переменная var3=value3
  7. Переменная var4=value4
  8.  


Такой вопрос не мог меня не заинтересовать -- а ПОЧЕМУ, собственно?

Логика подсказывает, что перед отправкой формы браузер отсекает подстроку "?var1=value1&var2=value2" в атрибуте action тега form и уже после этого добавляет к имени скрипта подстроку "?var3=value3&var4=value4".
evgenijj Отправлено: 27 Августа, 2006 - 17:01:42 • Тема: Передача переменных методом GET • Форум: Программирование на PHP

Ответов: 12
Просмотров: 3473
Полагаю, что нашел ответ на свой вопрос. Из спецификации HTML:

* get: методом "get" HTTP набор данных формы присоединяется к URI, определённому атрибутом action (со знаком "?" в качестве разделителя), и этот новый URI высылается программе-обработчику.
* post: методом "post" HTTP набор данных формы включается в тело формы и высылается программе-обработчику.

Другими словами, в изложенном мной случае имеет место следующая ситуация

test.php?action=action?test=test

При разборе такой неоднозначной ситуации значащим считается второй знак "?" и именно пары var=value, указанные после второго "?" становятся доступными внутри скрипта.

Тему можно считать закрытой. Спасибо всем, кто принял участие в обсуждении.
evgenijj Отправлено: 25 Августа, 2006 - 22:13:55 • Тема: Передача переменных методом GET • Форум: Программирование на PHP

Ответов: 12
Просмотров: 3473
Tim пишет:
потому что броузер обрезает action=action

А можно чуть-чуть поподробнее? Я понимаю, что action=action обрезается. Но ПОЧЕМУ? Я пробовал передавать переменные формы методом POST, при этом в атрибуте action тега form прописывл action='test.php?action=action' -- и получал в в скрипте переменные $GET["action"] и $_POST["test"]. Но прописать одновременно две переменные, передаваемые GET - одна в строке URL, а другая в элементе <input ... > -- не получается.
evgenijj Отправлено: 25 Августа, 2006 - 15:35:08 • Тема: Передача переменных методом GET • Форум: Программирование на PHP

Ответов: 12
Просмотров: 3473
Столкнулся с проблемой, и так и не смог с ней разобраться.
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?
  3. if ( !isset($_GET["test"]) )
  4. {
  5. echo "<form name='frm' action='".$_SERVER["PHP_SELF"]."?action=action'
  6. method='GET'>";
  7. echo "<input type='text' name='test' value='test'>";
  8. echo "<input type='submit' value='Go!'>";
  9. echo "</form>";
  10. }
  11. else
  12. {
  13. echo "<p>Переменная action=".$_GET["action"]."</p>";
  14. echo "<p>Переменная test=".$_GET["test"]."</p>";
  15. }
  16. ?>
  17.  

После нажатия кнопки "Go!" получаю
Notice: Undefined index: action in D:/work/localhost8/www/test.php on line 11
Переменная action=
Переменная test=test

А почему? Что-то идеологически неверно?

Просьба советов поменять метод GET на метод POST или создать внутри формы дополнительный элемент <input type="hidden" name="action" value="action"> не давать. Мне интересно знать ПОЧЕМУ, а не как обойти проблему.

Страниц (81): В начало « ... 73 74 75 76 77 78 79 80 [81]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB