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 :: Нужен обработчик формы регистрации!

 PHP.SU

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


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

> Без описания
Virgin
Отправлено: 08 Июля, 2009 - 13:01:24
Post Id


Частый гость


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


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




Добрый день!
Есть готовая форма регистрации которая передает в переменные пост данные.
Допустим $_POST[login], $_POST[passwd],$_POST[email]
Существуют ли уже готовые обработчики форм например на JQuery, при обращении к которым они проверяли POST-данные в рег выражении и если все четко то посылали на емаил данные формы?
 
 Top
JustUserR
Отправлено: 08 Июля, 2009 - 13:15:47
Post Id



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


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


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




Это вам PHP-скрпт регистрации нужен Да и мало послать на email письмо надо еще в базу пользователей добавить нового пользователя
Что касается именно работы с формами могу посоветовать использовать MetaForm к примеру если я вас правильно понял


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Virgin
Отправлено: 08 Июля, 2009 - 15:30:02
Post Id


Частый гость


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


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




В принципе я начал уже в ручную пробовать писать этот скрипт, но пока не получается...
на примере [url] http://forum.webmasterschool.ru/index.php?action=showTheme&idForum=1&id_theme=342&page=1[/url] делаю так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. session_start();
  3. // Обрезаем переменные до длины, указанной в параметре maxlength тега input
  4.  
  5.  $f_login = substr( $_POST['login'], 0, 25 );
  6.  
  7.  $f_passwd = substr( $_POST['passwd'], 0, 25 );
  8.  $f_name  = substr( $_POST['first_name'], 0, 25 );
  9.  
  10.  // Обрезаем лишние пробелы
  11.  $f_login = trim( $_POST['login']);
  12.  $f_passwd  = trim( $_POST['passwd']);
  13.  $f_name  = trim( $_POST['first_name']);
  14.  
  15.  
  16.  // Проверяем, заполнены ли обязательные поля
  17.  $error = '';
  18. if ( empty( $f_login ) ) $error = $error.'<li>не заполнено поле "Имя пользователя"</li>'."\n";
  19. if ( empty( $f_passwd ) ) $error = $error.'<li>не заполнено поле "Пароль"</li>'."\n";
  20. if ( empty( $f_name) ) $error = $error.'<li>не заполнено поле "Наименование"</li>'."\n";
  21.  
  22. // Проверяем поля формы на недопустимые символы
  23. if ( !empty( $f_login ) and !eregi( "[-_[:blank:]0-9a-zа-я]+", $f_login ) )
  24.   $error = $error.'<li>поле "Пользователь" содержит недопустимые символы</li>'."\n";
  25. if ( !empty(  $f_passwd ) and !eregi( "[-_[:blank:]0-9a-zа-я]+",  $f_passwd ) )
  26.   $error = $error.'<li>поле "пароль" содержит недопустимые символы</li>'."\n";
  27. if ( !empty( $f_name ) and !eregi( "[-_0-9a-z]+", $f_name ) )
  28.   $error = $error.'<li>поле "Наименование" содержит недопустимые символы</li>'."\n";
  29.  
  30. // Если были допущены ошибки при заполнении формы - перенаправляем посетителя на страницу регистрации
  31. if ( !empty( $error ) ) {
  32.   $_SESSION['addNewUserForm'] = array();
  33.   $_SESSION['addNewUserForm']['error'] = '<p class="errorMsg">При заполнениии формы были допущены ошибки:</p>'.
  34.   "\n".'<ul class="errorMsg">'."\n".$error.'</ul>'."\n";
  35.   $_SESSION['addNewUserForm']['login'] = $f_login;
  36.   $_SESSION['addNewUserForm']['password'] = $f_passwd;
  37.   $_SESSION['addNewUserForm']['name'] = $f_name;
  38.  
  39.   header("Location: edit.php");
  40.   die();
  41. }
  42.  // Все поля заполнены правильно - продолжаем регистрацию
  43. $query = "INSERT INTO users
  44.       (
  45.       login,
  46.       passwd,
  47.       first_name
  48.       )
  49.       VALUES
  50.       (
  51.       '".mysql_real_escape_string( $f_login )."',
  52.       '".mysql_real_escape_string( md5( $f_passwd ) )."',
  53.  
  54.       '".mysql_real_escape_string( $f_name )."'
  55.       );";
  56. $res = mysql_query( $query );
  57.  
  58. if ( $res )
  59.   header( "Location: http://www.site.ru/" );
  60. else
  61.   header( "Location: error.php" );
  62.  


Сразу появились вопросы, мож кто поможет???
1. как сюда добавить минимальную длину поля, т.е меньше например 6 символов выводилось предупреждение?
2.как добавить проверку на цифры с capcha?
3. как сделать проверку на icq номер?

(Отредактировано автором: 08 Июля, 2009 - 16:10:02)

 
 Top
Viper
Отправлено: 08 Июля, 2009 - 16:26:49
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




strlen для подсчета кол-ва символов.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Virgin
Отправлено: 08 Июля, 2009 - 17:21:22
Post Id


Частый гость


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


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




Спасибо разобрался с длиной!
Назрел еще вопрос:
1. как сделать чтобы при нажатии на чекбокс "Я согласен" активной становилась кнопка Зарегистрироваться?
2. Как всетаки всунуть сюда каптчу и проверить ее в рег выражениях?
3. делаю проверку на Email так

CODE (text):
скопировать код в буфер обмена
  1. if ( !empty( $email ) and !preg_match( "#^[0-9a-z_-.]+@[0-9a-z-.]+.[a-z]{2,6}$#i", $email ) )
  2.     $error = $error.'<li>поле "Адрес e-mail" должно соответствовать формату somebody@somewhere.ru</li>'."n";


Выдается ошибка типа
CODE (text):
скопировать код в буфер обмена
  1. Warning: !preg_match() [function.eregi]: REG_ERANGE in Z:\home\ewb\www\testing_new\testing.php

работает только так :
CODE (text):
скопировать код в буфер обмена
  1. !preg_match( "|^[-0-9a-z_\.]+@[-0-9a-z\.]+\.[a-z]{2,6}$|i", $email ) )

Так и не разобрался почему???
Растерялся

(Отредактировано автором: 08 Июля, 2009 - 17:22:22)

 
 Top
JustUserR
Отправлено: 08 Июля, 2009 - 17:33:17
Post Id



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


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


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




Цитата:
Как сделать чтобы при нажатии на чекбокс "Я согласен" активной становилась кнопка Зарегистрироваться?
Примерно так
<input type="chechbox" .... onCheck="btn_enable()" id="ch_box">
<input type="submit" value="Заргистрироватья" disabled ... id="sb_btn">
<script>window.btn_enable=function() {if(document.all["ch_box"].checked)
{document.all["sb_btn"].disabled=false} else {document.all["sb_btn"].disabled=true}}</script>


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Virgin
Отправлено: 09 Июля, 2009 - 08:55:58
Post Id


Частый гость


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


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




Так почему то не работает(((
Взял вот этот код:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3. function agreeForm(t) {
  4.   if (t.agree.checked) t.submit.disabled = false;
  5.   else t.submit.disabled = true;
  6. }
  7. </script>
  8. <form action="">
  9.   <label for="zzz">Я согласен со всеми условиями
  10.   <input name="agree" type="checkbox" id="zzz" onClick="agreeForm(this.form)" value="">
  11.   </label>
  12.   <br>
  13.   <input type="submit" name="submit" value="Далее" disabled>
  14. </form>
  15.  

(Отредактировано автором: 09 Июля, 2009 - 09:41:30)

 
 Top
Virgin
Отправлено: 10 Июля, 2009 - 09:43:29
Post Id


Частый гость


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


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




В принципе почти со всем разобрался, остался один нюанс как сделать чтоб скрипт отправлял на почту письмо с активацией учетной записи...? Кто подскажет?
Взял за основу код:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. // Посылаем письмо пользователю с просьбой активировать учетную запись
  3.   $headers = "From: ".$_SERVER['SERVER_NAME']." <".ADMIN_EMAIL.">n";
  4.   $headers = $headers."Content-type: text/html; charset="windows-1251"n";
  5.   $headers = $headers."Return-path: <".ADMIN_EMAIL.">n";
  6.   $message = '<p>Добро пожаловать на форум '.$_SERVER['SERVER_NAME'].'!</p>'."n";
  7.   $message = $message.'<p>Пожалуйста сохраните это сообщение. Параметры вашей учётной записи таковы:</p>'."n";
  8.   $message = $message.'<p>Логин: '.$name.'<br/>Пароль: '.$password.'</p>'."n";
  9.   $message = $message.'<p>Для активации вашей учетной записи перейдите по ссылке:</p>'."n";
  10.   $link = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=activateUser&code='.$code;  
  11.   $message = $message.'<p><a href="'.$link.'">Активировать учетную запись</a></p>'."n";
  12.   $message = $message.'<p>Не забывайте свой пароль: он хранится в нашей базе в зашифрованном
  13.              виде, и мы не сможем вам его выслать. Если вы всё же забудете пароль, то сможете
  14.              запросить новый, который придётся активировать таким же образом, как и вашу
  15.              учётную запись.</p>'."n";
  16.   $message = $message.'<p>Спасибо за то, что зарегистрировались на нашем форуме.</p>'."n";
  17.   $subject = 'Регистрация на форуме '.$_SERVER['SERVER_NAME'];
  18.   $subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($subject, "w","k")).'?=';
  19.   mail( $email, $subject, $message, $headers );
  20.  


Но разобраться в синтаксе сложновато...мож у кого есть уже переработаный рабочий код?
 
 Top
JustUserR
Отправлено: 10 Июля, 2009 - 13:05:13
Post Id



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


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


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




Цитата:
Но разобраться в синтаксе сложновато
Да впринципе код достаточно простой потому что как я понял логин и пароль и код активации уже сгенерированы и просто отправляются на мыло То ест сама функция активации у вас уже есть?
Единственно что я бы хотел сказать что отправлять письма в формате HTML не всегда хорошо потому что некоторые почтовики ругаются на это дело


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Virgin
Отправлено: 10 Июля, 2009 - 13:32:55
Post Id


Частый гость


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


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




спасибо учту, впринципе письмо приходит, загвоздка только в том , что не могу прикрутить сюда активацию учетной записи....вот код функции активации взял отсюда
http://webscript[dot]ru/stories/08/07/03/5059164
CODE (text):
скопировать код в буфер обмена
  1. function activateUser()
  2. {
  3.   // Если не передан параметр $code - значит функция вызвана по ошибке
  4.   if ( !isset( $_GET['code'] ) ) {
  5.     header( 'Location: '.$_SERVER['PHP_SELF'] );
  6.     die();
  7.   }
  8.   // Т.к. код зашифрован с помощью md5, то он представляет собой
  9.   // 32-значное шестнадцатеричное число
  10.   $code = substr( $_GET['code'], 0, 32 );
  11.   $code = preg_replace( "#[^0-9a-f]#i", '', $code );
  12.  
  13.   $query = "SELECT id_author
  14.             FROM ".TABLE_USERS."
  15.             WHERE activation='".mysql_real_escape_string( $code )."' LIMIT 1";
  16.   $res = mysql_query( $query );
  17.   if ( !$res ) {
  18.     $msg = 'Ошибка при активации учетной записи. Обратитесь к администратору.';
  19.     $err = 'Ошибка при выполнении запроса: <br/>'.
  20.            $query.'<br/>'.mysql_errno().':&nbsp;'.mysql_error().'<br/>'.
  21.           '(Файл '. __FILE__ .', строка '. __LINE__ .')';
  22.     return showErrorMessage( $msg, $err, true, '' );
  23.   }
  24.   if ( mysql_num_rows( $res ) > 0 ) {
  25.     $id = mysql_result( $res, 0, 0 );
  26.     $query = "UPDATE ".TABLE_USERS."
  27.               SET activation='', last_visit=NOW()
  28.               WHERE id_author=".$id;
  29.     $res = mysql_query( $query );
  30.     if ( !$res ) {
  31.       $msg = 'Ошибка при активации учетной записи. Обратитесь к администратору.';
  32.       $err = 'Ошибка при выполнении запроса: <br/>'.
  33.              $query.'<br/>'.mysql_errno().':&nbsp;'.mysql_error().'<br/>'.
  34.              '(Файл '. __FILE__ .', строка '. __LINE__ .')';
  35.       return showErrorMessage( $msg, $err, true, '' );
  36.     }
  37.   }
  38.   return showInfoMessage( 'Ваша учетная запись активирована.', 'action=loginForum' );
  39. }
 
 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