Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка форм 
V
    Опции темы
p0zt3r
  Дата 6.1.2009, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 4.2.2007
Где: Самара

Репутация: 3
Всего: 6



Вот код.

Он должен работать так. Пользователь открывает страницу,  унего появляется форма с вводом данных. Он ввёл данные, нажал Сабмит,  унего всё отправилось. Если есть ошибки возвращается страница с формой йи описанием ошибки. Если нет, происходит дальше подключение к mysql и исполнения запросов из файла install.sql.

Код

<?php

function ShowRegisterForm ()
{
print <<< HTML_END
<form action="install.php" method="post">
<table>
<tr><td>
Site home (f.e. www.site.com): </td><td><input type="text" name="site"></td>
<tr><td>
Site description (f.e. The New Company official): </td><td><input type="text" name="desc"></td>
<tr><td>
Your e-mail (f.e. [email protected]): </td><td><input type="text" name="mail"></td>
<tr><td>
Password for superuser (min 8 symbols, will be shown): </td><td><input type="text" name="p" ></td>
<tr><td>
Superuser''s name for DB (min 8 symbols, will be shown): </td><td><input type="text" name="udb" ></td>
<tr><td>
Password for DB superuser (min 8 symbols, will be shown): </td><td><input type="text" name="pdb" ></td>
<tr><td>
<input type="hidden" name="op" value="1">
<input type="submit" value="Îòïðàâèòü!">
</table>
</form>
HTML_END;
}

if (!empty($_POST))
{
    switch ($_POST['op'])
    {
        case '1':
     if (($_POST['site']) && ($_POST['desc']) && ($_POST['mail']) && ($_POST['p']) && ($_POST['udb']) && ($_POST['pdb']))
      {
        if (!preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['mail']))
        {
         print ('<h1>Íåïðàâèëüíûé e-mail!</h1><br><br>');
          ShowRegisterForm();
          break;
        }
        if (strlen($_POST['p'])<8)
        {
         print ('<h1>Ïàðîëü ìåíüøå 8 ñèìâîëîâ!</h1><br><br>');
          ShowRegisterForm();
          break;
        }

        # Èíñòàëëèðóåì CSV

        $fname = "./sql/install.sql";

        $f = fopen ($fname, "r");

        if (!$f)
        {
         die ("<h1>Êðèòè÷åñêàÿ îøèáêà! Íåóäàëîñü îòêðûòü ôàéë $fname</h1><br><br>");
        }

        $s = 0;

        mysql_connect("localhost",$udb,$pdb);

        while (!feof($f))
        {
         $str = fgets($f);
          $s++;
          if(!mysql_query($str))
          {
            die ("<h1>Îøèáêà ïðè ðàáîòå ñ ÁÄ ïðè îáðàùåíèè ê ñòðîêå $s ôàéëà $fname:".mysql_error()."</h1><br><br>");
          }
                }
        print ("Âñ¸ çàåáèñü!");
      }
      else
      {
       print ('<h1>Íåêîòîðûå ïîëÿ íå áûëè çàïîëíåíû! Ïîâòîðèòå ââîä!</h1><br><br>');
        ShowRegisterForm();
        break;
      }
      break;

    default:
    print ("Îøèáêà ïðè óñòàíîâêå!");
    break;
    }
}
else
{
    ShowRegisterForm();
}

?>


Не работает же следующее.

Цитата

if (!empty($_POST))


в любом случае массив $_POST считается пустым. =(

Как правильно парсить форму? Как проверять наличие параметров в запросе? Именно их наличие или отсутствие.

Спасибо!


--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
krundetz
Дата 6.1.2009, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



ну я обычно проверяю нужные мне переменные в нем тоесть следующим образом
Код

if(isset($_POST['nameParamForm']))

если она есть то обрабатываю ее, если нет то произвожу действие реагируешее на отсутствие пришедщего параметра


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
ksnk
Дата 6.1.2009, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Файл точно называется install.php? А то можно писать и так, без явного указания имени файла - подставится текущий
Код

<form action="" method="post">




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
p0zt3r
Дата 6.1.2009, 11:34 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 4.2.2007
Где: Самара

Репутация: 3
Всего: 6



Благодарю всех за ответы!

Спасибо вам! Со всем разобрался. Дело в том, что я использую DzSoft PHP Editor для написания и отладки скриптов, а он как-то странно генерирует POST запросы при запуске.

Поэтому я дописал ещё формочку для отладки скрипта smile

Что важно отметить, что в DzSoft Perl'е таких проблем у  меня никогда не возникало. =(
--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.