Страницы: (6) « Первая ... 4 5 [6]  ( Перейти к первому непрочитанному сообщению ) Reply to this topicStart new topicStart Poll

Как написать скрипт регистрации

, Помогите написать скрипт авторизации
Hesher
Отправлено: Jun 21 2011, 09:41 PM
Quote Post


  Солдат
*

Группа: unior
Сообщений: 1
Пользователь №: 3894
Регистрация:
21-June 11



У меня есть файл регистрации, но сама регистрация не происходит, форма возвращаеться пустой, а в базу данных записи не происходит, подскажите в чём проблема

CODE

<?
include "conf.cfg";

$chas = date("H");
$server_date=date("d.m.Y", mktime($chas-$GSM));
$server_time=date("H:i:s", mktime($chas-$GSM));

$data = mysql_connect($base_name, $base_user, $base_pass);
   if(!mysql_select_db($db_name,$data)){
    print "Ошибка при подключении к БД<BR>";
    echo mysql_error();
    die();
   }

?>
<HTML>
<HEAD>
<TITLE>Средневековье - регистрация</TITLE>
<LINK REL=StyleSheet HREF="style.css" TYPE="text/css">
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<?
  if(!empty($login)){
   $QUERY = mysql_query("SELECT id FROM users WHERE login='$login'");
   $CHECK = mysql_fetch_array($QUERY);
      if($CHECK){
       print "<SPAN CLASS='err'>Ошибка!Логин \"$login\" уже занят! Выберите другой логин.<BR>";
       print "<A HREF=\"javascript:history.back()\" CLASS='link'>назад</A>";
       die();
      }

   if(empty($ip))
   {
              if (getenv('HTTP_X_FORWARDED_FOR'))
               {
                       $ip=getenv('HTTP_X_FORWARDED_FOR');
               }
                      else
               {
                       $ip=getenv('REMOTE_ADDR');
               }
   }

   $login=htmlspecialchars($login);
   $login=trim($login);
   $password=htmlspecialchars($password);
   $level = "0";
   $email=htmlspecialchars($email);
   $icq=htmlspecialchars($icq);
   $homepage=htmlspecialchars($homepage);
   $name=htmlspecialchars($name);
   $city=htmlspecialchars($city);
   $birthday=htmlspecialchars($birthday);
   $about=htmlspecialchars($about);
   $about=str_replace("\n","<BR>",$about);
   $password = base64_encode($password);
   $def_city = "Моунтаун";
   $def_city_game = "mountown";
   $def_room = "пл.Базарная";
     if($sex == "male"){
      $def_obraz = "m/1.gif";
     }
     else{
      $def_obraz = "f/1.gif";
     }
   $def_status = "рекрут";

   $INSERT = "INSERT INTO `users`& #40;login,login_display,password,mail,sex,icq,home
page,name,hobie,town,birthday,date,reg_ip,city,cit
y_game,obraz,status,room) VALUES('$login','$login','$password','$email','$sex','$icq','$homepage','$name','$about','$city','$birthday','$server_date-$server_time','$ip','$def_city','$def_city_game','$def_obraz','$def_status','$def_room')";
   $SQL = mysql_query($INSERT);

      if($SQL){
       print "<SPAN CLASS='norm'>Регистрация прошла успешно!<BR>Авторизируйтесь с <a href='index.php' class='link'>главной страницы</a>.</SPAN>";
       $INSERT_REPORT = mysql_query("INSERT INTO `report`(date,time_stamp,login,action,type,ip) VALUES('$server_date-$server_time','".time()."','$login','Персонаж зарегистрировался','0','$ip')");
      }
      else{
       echo mysql_error();
      }
  }
  else{
?>
<script>
function sub(){
n=document.registration;
if(n.login.value==""){alert('Вы не ввели Ваш логин!!!');}
else if(n.password.value==""){alert('Вы не ввели Ваш пароль');}
else if(n.password_confirm.value==""){alert('Вы не подтвердили пароль!!!');}
else if(n.password.value!=n.password_confirm.value){alert('Пароли в полях не совпадают!!!');}
else if(n.email.value==""){alert('Вы не ввели Ваш e-mail!!!');}
else if(n.birthday.value==""){alert('Вы не ввели Вашу дату рождения!!!');}
else if(n.rules.checked!=true){alert('Вы должны принять правила The Middleages: Enlightment');}
else{
n.submit();
}
}
</script>
<CENTER>
<FORM NAME="registration" ACTION="reg.php" CLASS="norm" METHOD="POST">
<TABLE BORDER="0" CELLPADDING="7" CELLSPACING="7" WIDTH="400" BGCOLOR="rgb(248,248,248)" CLASS="tab">
<TR><TD>
<CENTER>
<SPAN CLASS="header">
The Middleages
</SPAN>
</CENTER><BR>
Регистрация. Заполните все поля.
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
<TR>
<TD WIDTH="200">
Логин <SMALL>(макс. 30 симв.)</SMALL>:
</TD>
<TD>
<INPUT TYPE="text" NAME="login" CLASS="field" SIZE="30" MAXLENGTH="30">
</TD>
</TR>
<TR>
<TD>
Пароль <SMALL>(макс. 30 симв.)</SMALL>:
</TD>
<TD>
<INPUT TYPE="password" NAME="password" CLASS="field" SIZE="30" MAXLENGTH="30">
</TD>
</TR>
<TR>
<TD>
Подтвердите пароль:
</TD>
<TD>
<INPUT TYPE="password" NAME="password_confirm" CLASS="field" SIZE="30" MAXLENGTH="30">
</TD>
</TR>
<TR>
<TD>
E-mail <SMALL>(макс. 50 симв.)</SMALL>:
</TD>
<TD>
<INPUT TYPE="text" NAME="email" CLASS="field" SIZE="30" MAXLENGTH="50">
</TD>
</TR>
<TR>
<TD>
Ваш пол:
</TD>
<TD>
<SELECT NAME="sex" CLASS="field" STYLE="width=203;">
<OPTION VALUE="male">Мужской</OPTION>
<OPTION VALUE="female">Женский</OPTION>
</SELECT>
</TD>
</TR>
<TR>
<TD>
ICQ UIN <SMALL>(макс. 15 симв.)</SMALL>:
</TD>
<TD>
<INPUT TYPE="text" NAME="icq" CLASS="field" SIZE="30" MAXLENGTH="15">
</TD>
</TR>
<TR>
<TD>
Имя <SMALL>(макс. 50 симв.)</SMALL>:
</TD>
<TD>
<INPUT TYPE="text" NAME="name" CLASS="field" SIZE="30" MAXLENGTH="50">
</TD>
</TR>
<TR>
<TD>
Сайт <SMALL>(макс. 30 симв.)</SMALL>:
</TD>
<TD>
<INPUT TYPE="text" NAME="homepage" CLASS="field" SIZE="30" VALUE="http://" MAXLENGTH="30">
</TD>
</TR>
<TR>
<TD>
Город <SMALL>(макс. 50 симв.)</SMALL>:
</TD>
<TD>
<INPUT TYPE="text" NAME="city" CLASS="field" SIZE="30" MAXLENGTH="50">
</TD>
</TR>
<TR>
<TD>
День рожденья <SMALL>(макс. 10 симв.)</SMALL>:
</TD>
<TD>
<INPUT TYPE="text" NAME="birthday" CLASS="field" SIZE="30" MAXLENGTH="10">
</TD>
</TR>
</TABLE>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
<TR><TD>
Немного о себе <SMALL>(макс. 1024 симв.)</SMALL>:<BR>
<TEXTAREA NAME="about" CLASS="field" ROWS="6" COLS="60" MAXLENGTH="1024"></TEXTAREA><BR>
<INPUT TYPE="checkbox" NAME="rules">Я принимаю <A HREF="rules.php" CLASS="link" TARGET="blank">правила The Middleages</A><BR>
<INPUT TYPE="checkbox" NAME="subscribe">Я хочу подписаться на "The Middleages News"<BR><BR>
<INPUT TYPE="button" OnClick="sub()" CLASS="but" VALUE="Зарегистрировать" STYLE="width=382">
</TD></TR>
</TABLE>
<br>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">
<TR>
<TD ALIGN="left">
<!--Rating@Mail.ru COUNTER--><script language="JavaScript" type="text/javascript"><!--
d=document;var a='';a+=';r='+escape(top.document.referrer)
js=10//--></script><script language="JavaScript1.1" type="text/javascript"><!--
a+=';j='+navigator.javaEnabled()
js=11//--></script><script language="JavaScript1.2" type="text/javascript"><!--
s=screen;a+=';s='+s.width+'*'+s.height
a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth)
js=12//--></script><script language="JavaScript1.3" type="text/javascript"><!--
js=13//--></script><script language="JavaScript" type="text/javascript"><!--
d.write('<a href="http://top.mail.ru/jump?from=654449"'+
' target=_top><img src="http://top.list.ru/counter'+
'?id=654449;t=134;js='+js+a+';rand='+Math.random()+
'" alt="Рейтинг@Mail.ru"'+' border=0 height=40 width=88><\/a>')
if(11<js)d.write('<'+'!-- ')//--></script><noscript><a
target=_top href="http://top.mail.ru/jump?from=654449"><img
src="http://top.list.ru/counter?js=na;id=654449;t=134"
border=0 height=40 width=88
alt="Рейтинг@Mail.ru"></a></noscript><script language="JavaScript" type="text/javascript"><!--
if(11<js)d.write('--'+'>')//--></script><!--/COUNTER-->

</TD>
<TD ALIGN="right" VALIGN="TOP">
<SPAN CLASS="small">
The Middleages: &copy2004.<BR>
By chisto_tolyan
</SPAN>
</TD>
</TR>
</TABLE>
</TD></TR>
</TABLE>
</FORM>
</CENTER>
</HTML>

<?
  }
?>
PMEmail Poster
Top
Матроскин
Отправлено: Jun 22 2011, 10:04 AM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Проблема в том, что в файле настроек PHP на сервере отключена регистрации переменных, полученных методом POST или GET в глобальный массив, т.е. параметр register_globals=Off, что само по себе правильно из соображений безопасности. Собственно, получается, что, допустим, к переменной $login, полученной из формы, нельзя обращаться напрямую - $login... если мы так сделаем, то получим пустое значение, а не то, что в действительности пришло из формы. Поэтому к переменным формы правильно обращаться через соответствующий глобальный массив, например $_POST['login']. Перед строками кода:
CODE
if(!empty($login)){

добавь код, которым переменным присваивается значение из глобального массива $_POST и будет счастье tongue.gif
Т.е. должно быть так:
CODE

$login = trim(mysql_real_escape_string($_POST['login']));
$password = trim(mysql_real_escape_string($_POST['password']));
// с остальными переменными со строковыми значениями поступаем аналогично

if(!empty($login)){

А вообще, по хорошему код надо переписать... с запросом INSERT явно не все в порядке, защиты от инъекций - никакой, проверять данные формы только на стороне клиента - это совсем уж не хорошо.


--------------------
PMEmail PosterUsers Website
Top
dudeonthehorse
Отправлено: Jun 25 2011, 02:49 AM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 763
Пользователь №: 2933
Регистрация:
26-October 09



Отличный скрипт регистрации/авторизации http://www.php.ru/forum/viewtopic.php?t=15658
PMEmail PosterICQ
Top
Rus.uzb
Отправлено: Jun 25 2011, 07:00 PM
Quote Post


  Сержант
*

Группа: Members
Сообщений: 20
Пользователь №: 3890
Регистрация:
19-June 11



dudeonthehorse спасибо.
а как можно сделать так чтобы для подтверждения отправилось письмо на почту регистрируемого человека...


--------------------
PMEmail PosterUsers Website
Top
Jiggy_89
Отправлено: May 2 2012, 05:54 PM
Quote Post


  Солдат
*

Группа: unior
Сообщений: 1
Пользователь №: 4251
Регистрация:
2-May 12



Здравствуйте. Я создал форму регистрации для своего сайта (дипломная работа) по уроку из этой ссылки http://ruseller.com/lessons.php?rub=37&id=347. Все сделал так, как там описано. Но и при Регистрации, и при авторизации у меня выходит это сообщение:

CODE
Warning: mysql_query() expects parameter 2 to be resource, null given in Z:\home\test1.ru\www\rus\save_user.php on line 20

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in Z:\home\test1.ru\www\rus\save_user.php on line 21
Ошибка! Вы не зарегистрированы.



Это выходит, у меня БД с сайтом не соединянтся, да?

П.С. В файле bd.php я задал СВОИ логин и пароль (я создавал Нового пользователя в Денвере):Код
CODE
 
<?
mysql_connect("localhost","myuser","12345") or die (mysql_error());
mysql_select_db('mybase') or die (mysql_error());
?>


Так что, врядли ошибка в этом. П.П.С. У меня Денвер, PhpMyAdmin 3.5.0. Таблицы тоже создаю на нем.

В чем моя проблема? Помогите, пожалуйста.

Или можете посоветовать другой урок по созданию формы регистрации? Можно простенькой формы, главное, чтоб с БД работала (задание такое). Но без активации через е-мейл. Я его не собираюсь выкладывать в сеть. Гуглил, кроме вышеописанного урока ничего дельного не нашел.
PMEmail Poster
Top
ruitrjiu
Отправлено: Dec 7 2013, 12:51 PM
Quote Post


  Unregistered









Typically the space deliberated big roof<br><br>The area engaged a challenging slim kitchen using primary brilliant Canada Goose Parka yellow along with Air Max Sale environment friendly fence mosaic glass and even reciprocal countertop. The initial wooden floors was replaced with faux wood soft top Cheap Celine cedar. The actual much-patched lath-and-plaster outer surface happen to be run down and also dinged, as well as house windows featured mismatched light weight aluminum smaller blinds.<br>
Main Throughout the model group tackled the room
Arc Rooms Model Category of Beverly
Posture Rooms Structure List of Beverly oooooo
Top
ruitrjiu
Отправлено: Dec 13 2013, 12:26 AM
Quote Post


  Unregistered









aired an entire frank stunt on this occasion<br><br>and so might be the modern world is escalating whole lot more Cheap Ugg Boots living with marijuana as well as the actual networking appeared to be merely receptive to Canada Goose Parka what exactly Snoop and even Ke$ha ended up being seriously cigarettes. Received been look I was simply smokes the Moncler Coats look, later stated to The particular Hollywood Press reporter. MTV most likely basically switched Miley Cyrus's skeptical spliff towards a greater option by way of censoring her smoke a cigarette.<br>
It's in all probability which will your ex stop failed to distress very many
broadcasted the total frank stunt this time around
aired the whole frank stunt this time around rrrrrr
Top
vetalbon
Отправлено: Apr 10 2015, 11:46 PM
Quote Post


  Сержант
*

Группа: Members
Сообщений: 27
Пользователь №: 5506
Регистрация:
10-February 15



А скажи, чем принципиально отличается echo от print
Я в половине кода пишу так и так :shuffle:
Честно говоря, не задумывалась о разнице
PMEmail Poster
Top

Topic OptionsСтраницы: (6) « Первая ... 4 5 [6]  Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0398 ]   [ 10 queries used ]   [ GZIP выключен ]