За последние 24 часа нас посетили 222068 программистов и 2182 робота. Сейчас ищут 1727 программистов ...

Не могу получить данные из формы

Тема в разделе "PHP для новичков", создана пользователем vovan1409, 14 мар 2012.

  1. vovan1409

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

    С нами с:
    14 мар 2012
    Сообщения:
    33
    Симпатии:
    0
    Суть проблемы: Есть html-форма вида
    Код (Text):
    1. <form action=\"".$h."register.html\" method=\"post\">
    2.                         E-mail"<input  name=\"email\" type=\"text\"/><br /><br />      
    3.                         <input type=\"submit\" name=\"submit\" value=\"Отправить\">
    4.                     </form>
    Эта форма записывается в переменную например $form.
    Далее я хочу получить, как обычно введенный E-mail в переменную
    Код (Text):
    1. $email = ($_POST['email']);
    так выводит ошибку
    Код (Text):
    1. Undefined index: email in...
    Но так работает
    Код (Text):
    1. $email = (@$_POST['email']);
    В чем проблема? Как решить ее?
     
  2. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Суть проблемы не понятна, возможно, у вас выполняется один и тот же код ($email = $_POST['email']) в разных случаях:
    1. Отобразить форму,
    2. Обработать форму.

    В результате, вы можете наблюдать ошибку обработки формы в тот момент, когда данных POST ещё нет (т.е. первый случай).

    Приведите эти участка кода полностью
     
  3. AndreJM

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

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Каким образом вы хотите получить микс из $_GET и $_POST ? =)

    Код (PHP):
    1. if ($_GET['act'] == 'register'){
    2.  //// тут не могут быть данные в $_POST (если конечно самому тупо их не засунуть)
    3. } 
    Автор сообщение дропнул, но я успел заметить -)
     
  4. vovan1409

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

    С нами с:
    14 мар 2012
    Сообщения:
    33
    Симпатии:
    0
    Вот полный код
    Код (Text):
    1. if ($_GET['act'] == 'register'){
    2.     $form = "<div class=\"alcenter\" style=\"margin:50px;\">
    3.                     <form action=\"".$h."register.html\" id=\"regForm\" method=\"post\">
    4.                         ".$lang[150]."<input  name=\"email\" type=\"text\"/><br /><br />       
    5.                         <input type=\"submit\" name=\"submit\" value=\"".$lang[199]."\">
    6.                     </form>
    7.             </div>";
    8.         $email = (@$_POST['email']);
    9.         $submit = (@$_POST['submit']);
    10.         //Проверяем корректность поля e-mail (CorrectEmail($email)) и что такого e-mail еще нет в БД (requestBD('email',$email)=='true')
    11.         if (CorrectEmail($email)=='true' && requestBD('email',$email)=='true') {
    12.             $email = trim($_POST['email']);
    13.             $email = htmlspecialchars($_POST['email']);
    14.             //genPassword() ф-ция генерации нового пароля, где salt-соль,pass-новый пароль без шифрования,genpass-защифрованный новый пароль
    15.             list($salt,$pass,$genpass)=genPassword();
    16.             $query = mysql_query("INSERT `jb_user` SET `pass`='".$genpass."',`salt`='".$salt."', `email`='".$email."'");
    17.             //Выдаем сообщение об успешности регистрации и посылаем письмо на указанный e-mail с сгенерированным паролем
    18.             $msg=$lang[559].".\n".$lang[875].": ".$pass."\n".$lang[876]." ".$h."login.html ".$lang[877]." ".$h.".\n\n".$lang[865]." ".$h;
    19.             if (sendmailer($email,"<".$c['admin_mail'].">",$lang[881]." ".$h,$msg)) echo "<div class=\"alcenter\" style=\"margin:50px;\">".$lang[878].".<br /><br /><br /><br /><br /><a href=\"".$h."\">".$lang[84]."</a></div>";
    20.             else echo "<div class=\"alcenter\" style=\"margin:50px;\">".$lang[86]."<br /><br /><br /><a href=\"".$h."\">".$lang[84]."</a></div>";      
    21.         }
    22.         //Если e-mail введен не корректно выводим сообщение о типе ошибки и очищенную форму ввода
    23.         elseif (isset($submit) && CorrectEmail($email) != 'true') echo "<div class=\"red alcenter\" style=\"margin:50px;\"><h1>".CorrectEmail($email)."</h1></div>".$form;
    24.         //Если e-mail введен корректно, но такой e-mail уже зарегистрирован выводим сообщение об этом и очищенную форму ввода
    25.         elseif (isset($submit) && CorrectEmail($email) == 'true') echo "<div class=\"red alcenter\" style=\"margin:50px;\"><h1>".$lang[1156]."</h1></div>".$form;
    26.         else echo $form;
    Добавлено спустя 5 минут 56 секунд:
    т.е как я понимаю проблема в том, что в первой строке
    Код (Text):
    1. if ($_GET['act'] == 'register'){
    используется метод GET, а для отправки формы POST?
    Код (Text):
    1. <form action=\"".$h."register.html\" id=\"regForm\" method=\"post\">
     
  5. AndreJM

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

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    С точки зрения HTTP запрос от клиента может быть (в данном случае) либо GET либо POST. Нельзя послать одним запросом GET и POST вместе.
    Но сточки зрения PHP можно, так-как он параметры URL может переместить в $_GET

    Но в вашем случае форма-то идет POST-ом, в action нет параметров в url. И act=register нигде не светится
     
  6. vovan1409

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

    С нами с:
    14 мар 2012
    Сообщения:
    33
    Симпатии:
    0
    Спасибо уже стало понятнее...Просто мне казалось, что проблема в том, что html-код формы выводся через переменную $form, а не напрямую и как следствие скрипту "сложно" понять откуда взять $_POST['email'].
     
  7. AndreJM

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

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Дело не в том где выводится форма, а в том, что вы потеряли логику работы скрипта. Вы пытаетесь проверить, что пользователь пришел на получения формы регистрации, а вместо этого вы от него уже требуете данные которые он и не заполнял.
     
  8. vovan1409

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

    С нами с:
    14 мар 2012
    Сообщения:
    33
    Симпатии:
    0
    Спасибо за помощь!!! Сидел тупил пол дня=)