За последние 24 часа нас посетил 30541 программист и 1809 роботов. Сейчас ищут 886 программистов ...

Очередной тупой вопрос..

Тема в разделе "Вопросы от блондинок", создана пользователем kuzmas, 2 сен 2009.

  1. kuzmas

    kuzmas Активный пользователь

    С нами с:
    1 янв 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Москва
    Читал книгу Кузнецова PHP.Практика создания сайтов. Думаю, вы знаете этот толмут. Начал писать классы. Написал с ними и несложную форму регистрации. Вроде все понятно. но при попытке проверить работу скрипта вылазиет вместо скрипта регистрации пустое место...Шапка (их шапка) отображается нормально. Шапку проверил, лишнее удалил.
    Ошибки следующие..

    Notice: Undefined index: name in S:\home\myphp.ru\www\index.php on line 6
    Notice: Undefined index: pass in S:\home\myphp.ru\www\index.php on line 7
    Notice: Undefined index: pass_again in S:\home\myphp.ru\www\index.php on line 8
    Notice: Undefined index: email in S:\home\myphp.ru\www\index.php on line 9
    Notice: Undefined index: about in S:\home\myphp.ru\www\index.php on line 10

    Вот сам index.php
    PHP:
    1. require_once("config.php");
    2. try
    3. {
    4.     $name = new field_text("name","Имя",true,$_POST['name']);
    5.     $pass = new field_password("pass","Пароль",true,$_POST['pass']);
    6.     $pass_again = new field_password("pass_again","Повторите пароль",true,$_POST['pass_again']);
    7.     $email = new field_text_email("email","E-mail",true,$_POST['email']);
    8.     $about = new field_textarea("about","О себе",false,$_POST['about']);
    9.     $form = new form(array("name" => $name,
    10.                            "pass" => $pass,
    11.                            "pass_again" => $pass_again,
    12.                            "email" => $email,
    13.                            "about" => $about),"Добавить","field");
    14.     if(!empty($_POST))
    15.     {
    16.         $error = $form->check();
    17.         if($form->fields['pass']->value != $form->fields['pass_again']->value)
    18.         {
    19.             $error[] = "Неверный пароль";
    20.         }
    21.         $query = "SELECT * FROM users WHERE email = '{$form->fields['email']->value}'";
    22.         $mal = mysql_query($query);
    23.         if(!$mail)
    24.         {
    25.             throw new ExceptionMySQL(mysql_error(),$query,"Ошибка регистрации пользователя");
    26.         }
    27.         if(mysql_result($mal,0))
    28.         {
    29.             $error = "Пользователь с электронным адресом {$form->fields['email']->value} уже зарегестрирован";
    30.         }
    31.         if(empty($error))
    32.         {
    33.             $query2 = "INSERT INTO users VALUES('','{$form->fields['name']->value}',md5'{$form->fields['pass']->value}',
    34.                         '{$form->fields['email']->value}','{$form->fields['description']->value}',NOW())";
    35.             if(!mysql_query($query2))
    36.             {
    37.                 throw new ExceptionMySQL(mysql_error(),$query,"Ошибка регистрацияя пользователя");
    38.             }
    39.             header("Location:$_SERVER[PHP_SELF]");
    40.             exit();
    41.         }
    42.     }
    43.     require_once("utils/top.php");
    44.     if(!empty($error))
    45.     {
    46.         foreach($error as $arr)
    47.         {
    48.             echo "<span style=\"color:red\">$err</span>";
    49.         }
    50.     }
    51.     $form->print_form();
    52. }
    53. catch(ExceptionObject $exc) { require_once("class/exception.object.php");}
    54. catch(ExceptionMember $exc) { require_once("class/exception.member.php");}
    55. catch(ExceptionMySQL $exc) { require_once("class/exception.mysql.php");}
    56. require_once("utils/bottom.php");
    Что не так?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    при первом запросе скрипта $_POST[] не определен, т.к. идет GET запрос.
    отсюда и нотисы.
     
  3. kuzmas

    kuzmas Активный пользователь

    С нами с:
    1 янв 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Москва
    а как исправить это?...что-то недогоняю
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    где проверка на $_POST и где обращения к нему?
     
  5. kuzmas

    kuzmas Активный пользователь

    С нами с:
    1 янв 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Москва
    хмм..поставил
    Код (Text):
    1. if(!empty($_POST))
    2.                      {
    перед объявлением переменных.
    Получилось так:
    PHP:
    1. require_once("config.php");
    2. try
    3. {
    4.     if(!empty($_POST))
    5.     {
    6.     $name = new field_text("name","Имя",true,$_POST['name']);
    7.     $pass = new field_password("pass","Пароль",true,$_POST['pass']);
    8.     $pass_again = new field_password("pass_again","Повторите пароль",true,$_POST['pass_again']);
    9.     $email = new field_text_email("email","E-mail",true,$_POST['email']);
    10.     $about = new field_textarea("about","О себе",false,$_POST['about']);
    11.     $form = new form (array("name" => $name,
    12.                            "pass" => $pass,
    13.                            "pass_again" => $pass_again,
    14.                            "email" => $email,
    15.                            "about" => $about),"Добавить","field");
    Так? Но уже появилась ошибка. не видит $form:

    Код (Text):
    1. Notice: Undefined variable: form in S:\home\myphp.ru\www\index.php on line 53
    2.  
    3. Fatal error: Call to a member function print_form() on a non-object in S:\home\myphp.ru\www\index.php on line 53
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ну ты форму где определяешь?

    при первом вызове в if( POST ) ты не заходишь, а форма там создается...

    p.s. какие-то хреновые у тя учебники или учителя.
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    написано много, но все не по делу. суета одна.
     
  8. kuzmas

    kuzmas Активный пользователь

    С нами с:
    1 янв 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Москва
    ну блин. Самого очень бесит, что в этой книге опечаток много или неточностей (хотя и написано на корешке 2008 год)....
    Альтернативы ей я не нашел. Имею в виду, чтобы в книге был написан пример хотя бы нескольких основных скриптов сайта, написанных на пхп с объяснениями ( ну или без)....
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    эт одна из иллюзий, что 1-2 скриптами можно сделать сайт.
     
  10. kuzmas

    kuzmas Активный пользователь

    С нами с:
    1 янв 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Москва
    а я и не говорил, что я собираюсь писать сайты из 1-2 скриптов. Просто понятнь, как пишутся и т.д. В этой книге авторы пишут о создании cms. ничего похожего я не видел.
     
  11. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    возьми исходники любые и поковыряй их.
    больше толку будет.
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    судя по коду, который ваяешь по этой книге - читать ее не надо.
     
  13. kuzmas

    kuzmas Активный пользователь

    С нами с:
    1 янв 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Москва
    ))) ну раз не надо, посмотрим что-нибудь другое...

    насчет исходников, я пробовал и шло через одно место (много непонятного)...попробую наверно взять какую-нить полегче и заковырять ее.
     
  14. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    и вообще, имхо, не надо смешивать скрипты внесения данных и их отображения :)
     
  15. Fduch

    Fduch Активный пользователь

    С нами с:
    1 июл 2009
    Сообщения:
    140
    Симпатии:
    0
    Постарайтесь сразу разделять функционал: работа с БД - отдельно, отображение данных - отдельно (смотрите в сторону шаблонов), проверка данных, инициализация констант и прочего.
    Будет это на классах или процедурами - не так уж и важно. Главное что бы было понимание разделения труда. Может по началу и будут с этим трудности, но когда вникните - будет легче как в отладке так и в смене каких-то элементов, я уж не говорю про дизайн и прочее оформительство.

    Не копируйте примеры с учебников-чужих исходников-чего-то еще. Пишите свое. Сразу. Чужой код - только как справочник по вопросам реализации алгоритмов и каких-то приемов.
     
  16. kuzmas

    kuzmas Активный пользователь

    С нами с:
    1 янв 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Москва
    Спасибо вам!
     
  17. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Могу предложить Колиснеченко почитать, интересные весчи :)
     
  18. kuzmas

    kuzmas Активный пользователь

    С нами с:
    1 янв 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Москва
    Я так понял, вы имеет в виду эту книгу http://www.ozon.ru/context/detail/id/4319673/
    Обязательно буду вникать
     
  19. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    и ее тоже, но я про http://www.ozon.ru/context/detail/id/3405880/ ))))
    Если Вы в москве могу отдать за 200 ))) А может и за 150 )))
    У меня есть еще несколько хороших книг по пхп, которые мне уже не нужны :)
     
  20. dj--alex

    dj--alex Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    184
    Симпатии:
    0
    понизь уровень ошибок в Apache с notice до error , и будет работать.