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
Форумы портала PHP.SU :: Версия для печати :: Регистрация и авторизация одним файлом
Форумы портала PHP.SU » » Вопросы новичков » Регистрация и авторизация одним файлом

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

1. jkhan - 21 Октября, 2011 - 11:30:15 - перейти к сообщению
Здравствуйте. Необходимо реализовать тест со связкой php+MySQL, который содержит блок регистрации, авторизации и самого теста в одном единственном файле.
У меня это выглядит следующим образом:

PHP:
скопировать код в буфер обмена
  1. $error=0; //Счётчик ошибок
  2. if ($_POST["pass"]!=$_POST["pass2"]) $error=1; //Пароли разные!
  3. $query = mysql_query("SELECT * FROM Users WHERE login='".$_POST["login"]."'");
  4. if (mysql_num_rows($query)>0)
  5. $error=$error+2; //Такой логин уже есть в базе
  6. if (strlen($_POST["login"])<5 and strlen($_POST["login"])!=0) $error=$error+4; //Логин слишком короткий
  7. if ($error==0)
  8. {
  9. $text_query="INSERT INTO Users VALUES ('', '".$_POST["lname"]."',
  10. '".$_POST["fname"]."', '".$_POST["group"]."', '".$_POST["login"]."',
  11. '".MD5($_POST["pass"])."', '0')";
  12. $query=mysql_query($text_query);}
  13. if (mysql_errno()!=0){
  14. $text=mysql_errno().":".mysql_error();
  15.  
  16. $state="input";
  17. }
  18. else
  19. {
  20. $state="reg";
  21. }
  22.  
  23. PRINT("<TABLE><TR><TD>");
  24. if ($error==1)        PRINT "Введены разные пароли, повторите ввод!";
  25. elseif ($error==2) PRINT "Такой логин уже существует";
  26. elseif ($error==3) PRINT "Такой логин уже существует ";
  27. elseif ($error==4) PRINT "Логин должен содержать не менее 5 символов";
  28. elseif ($error==5) PRINT "Введены разные пароли, повторите ввод ";
  29. PRINT("</TD></TR></TABLE>");
  30. if ($error==0)    {
  31. PRINT("<FORM action=\"index.php?state=reg\" method=\"post\">
  32. <TABLE>
  33. <TR><TD>Имя: </TD><TD>
  34. <INPUT type=\"text\" value=\"\" name=\"lname\"></TD></TR>\n
  35. <TR><TD>Фамилия: </TD><TD>
  36. <INPUT type=\"text\" value=\"\" name=\"fname\"></TD></TR>\n
  37. <TR><TD>Группа: </TD><TD>
  38. <INPUT type=\"text\" value=\"\" name=\"group\"></TD></TR>\n <TR>
  39. <TD>Логин: </TD><TD> <INPUT type=\"text\" value=\"\" name=\"login\">
  40. </TD></TR>\n
  41. <TR><TD>Пароль: </TD><TD>
  42. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  43. <TR><TD>Пароль (ещё раз): </TD>
  44. <TD> <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  45. <TR><TD align=center colspan=2>
  46. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  47. </TABLE>
  48. </FORM>");}
  49. else
  50. {
  51. PRINT("<FORM action=\"index.php?state=reg\" method=\"post\">
  52. <TABLE>
  53. <TR><TD>Имя: </TD><TD>
  54. <INPUT type=\"text\" value=\"".$_POST["lname"]."\" name=\"lname\"></TD></TR>\n
  55. <TR><TD>Фамилия: </TD><TD>
  56. <INPUT type=\"text\" value=\"".$_POST["fname"]."\" name=\"fname\"></TD></TR>\n
  57. <TR><TD>Группа: </TD><TD>
  58. <INPUT type=\"text\" value=\"".$_POST["group"]."\" name=\"group\"></TD></TR>\n
  59. <TR><TD>Логин: </TD><TD>
  60. <INPUT type=\"text\" value=\"".$_POST["login"]."\" name=\"login\"></TD></TR>\n
  61. <TR><TD>Пароль: </TD><TD>
  62. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  63. <TR><TD>Пароль (ещё раз): </TD><TD>
  64. <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  65. <TR><TD align=center colspan=2>
  66. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  67. </TABLE>
  68. </FORM>");
  69. }
  70. //форма авторизации
  71. PRINT("<FORM action=\"index.php?state=input\" method=\"post\">
  72. <TABLE>
  73. <TR><TD colspan=2>Авторизация<BR>\n</TD></TR>
  74. <TR><TD>Логин: </TD><TD>
  75. <INPUT type=\"text\" value=\"\" name=\"login\"></TD></TR>\n
  76. <TR><TD>Пароль: </TD><TD>
  77. <INPUT type=\"password\" value=\"\" name=\"pass\">
  78. <INPUT type=\"submit\" value=\"Ок\"></TD></TR>\n
  79. <TR><TD colspan=2 align=center><a href=\"index.php?state=reg\">
  80. Регистрация</a></TD></TR>
  81. </TABLE>
  82. </FORM>");
  83. // обработчик авторизации
  84. $query = mysql_query("SELECT Type FROM Users
  85. WHERE login='".$_POST["login"]."' AND Password='".MD5($_POST["pass"])."'");
  86. $row = mysql_fetch_assoc($query);
  87. if (mysql_num_rows($query)==0)
  88. $text="Несоответствие логина и пароля: ".MD5($_POST["pass"]);
  89. else $num=0;
  90. if (empty($text))
  91. {
  92. $_SESSION["login"] = $_POST["login"];
  93. $_SESSION["pass"] = $_POST["pass"];
  94. }
  95. if (!empty($text)) PRINT $text;
  96. else
  97. if (isset($_SESSION["login"]))
  98. PRINT("
  99. <TABLE>
  100. <TR><TD><B>Тест</B></TD></TR>
  101. <TR><TD><a href=\"index.php?state=run\">Начать тест</a></TD></TR>
  102. <TR><TD><a href=\"index.php?state=quit\">Выход</a></TD></TR>
  103. <TR><TD></TD></TR>
  104. </TABLE>");
  105.  


Когда-то все это было в разных файлах и прекрасно работало, а теперь я не могу правильно организовать переходы между блоками (SQL заваливает ошибками). Если Вас не затруднит, то помогите пожалуйста. Все необходимые файлы прилагаю. Спасибо. Прошу особо не ругаться, так как это наработки.
P.S.
Суть в том, чтобы выделить параметр и на его основе сначала сделать регистрацию, а потом, благодаря кнопке, спокойно перейти к авторизации.
2. snikers987 - 21 Октября, 2011 - 13:15:54 - перейти к сообщению
можно гетом поделить на две части

PHP:
скопировать код в буфер обмена
  1. if(!isset($_GET['act'])) $_GET['act'] = 'register';
  2. if($_GET['act'] == 'register'){
  3. // тут все что связано с регистрацией
  4. }
  5. if($_GET['act'] == 'auth'){
  6. //тут авторизация
  7.  }
3. jkhan - 21 Октября, 2011 - 14:14:36 - перейти к сообщению
Попробовал. Не получилось. Огорчение В любом случае остается форма регистрации. К авторизации переход не осуществляется.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $error=0; //Счётчик ошибок
  4. if ($_POST["pass"]!=$_POST["pass2"]) $error=1; //Пароли разные!
  5. $query = mysql_query("SELECT * FROM Users WHERE login='".$_POST["login"]."'");
  6. if (mysql_num_rows($query)>0)
  7. $error=$error+2; //Такой логин уже есть в базе
  8. if (strlen($_POST["login"])<5 and strlen($_POST["login"])!=0) $error=$error+4; //Логин слишком короткий
  9. if ($error==0)
  10. {
  11. $text_query="INSERT INTO Users VALUES ('', '".$_POST["lname"]."',
  12. '".$_POST["fname"]."', '".$_POST["group"]."', '".$_POST["login"]."',
  13. '".MD5($_POST["pass"])."', '0')";
  14. $query=mysql_query($text_query);}
  15. if (mysql_errno()!=0){
  16. $text=mysql_errno().":".mysql_error();
  17.  
  18. $state="auth";
  19. }
  20. else
  21. {
  22. $state="registered";
  23. }
  24.  
  25. if(!isset($_GET['act'])) $_GET['act'] = 'register';
  26. if($_GET['act'] == 'register'){
  27. PRINT("<TABLE><TR><TD>");
  28. if ($error==1)      PRINT "Введены разные пароли, повторите ввод!";
  29. elseif ($error==2) PRINT "Такой логин уже существует";
  30. elseif ($error==3) PRINT "Такой логин уже существует ";
  31. elseif ($error==4) PRINT "Логин должен содержать не менее 5 символов";
  32. elseif ($error==5) PRINT "Введены разные пароли, повторите ввод ";
  33. PRINT("</TD></TR></TABLE>");
  34. if ($error==0)  {
  35. PRINT("<FORM action=\"index.php?state=registered\" method=\"post\">
  36. <TABLE>
  37. <TR><TD>Имя: </TD><TD>
  38. <INPUT type=\"text\" value=\"\" name=\"lname\"></TD></TR>\n
  39. <TR><TD>Фамилия: </TD><TD>
  40. <INPUT type=\"text\" value=\"\" name=\"fname\"></TD></TR>\n
  41. <TR><TD>Группа: </TD><TD>
  42. <INPUT type=\"text\" value=\"\" name=\"group\"></TD></TR>\n <TR>
  43. <TD>Логин: </TD><TD> <INPUT type=\"text\" value=\"\" name=\"login\">
  44. </TD></TR>\n
  45. <TR><TD>Пароль: </TD><TD>
  46. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  47. <TR><TD>Пароль (ещё раз): </TD>
  48. <TD> <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  49. <TR><TD align=center colspan=2>
  50. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  51. </TABLE>
  52. </FORM>");}
  53. else
  54. {
  55. PRINT("<FORM action=\"index.php?state=registered\" method=\"post\">
  56. <TABLE>
  57. <TR><TD>Имя: </TD><TD>
  58. <INPUT type=\"text\" value=\"".$_POST["lname"]."\" name=\"lname\"></TD></TR>\n
  59. <TR><TD>Фамилия: </TD><TD>
  60. <INPUT type=\"text\" value=\"".$_POST["fname"]."\" name=\"fname\"></TD></TR>\n
  61. <TR><TD>Группа: </TD><TD>
  62. <INPUT type=\"text\" value=\"".$_POST["group"]."\" name=\"group\"></TD></TR>\n
  63. <TR><TD>Логин: </TD><TD>
  64. <INPUT type=\"text\" value=\"".$_POST["login"]."\" name=\"login\"></TD></TR>\n
  65. <TR><TD>Пароль: </TD><TD>
  66. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  67. <TR><TD>Пароль (ещё раз): </TD><TD>
  68. <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  69. <TR><TD align=center colspan=2>
  70. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  71. </TABLE>
  72. </FORM>");
  73. }
  74. }
  75. if($_GET['act'] == 'auth'){
  76. PRINT("<FORM action=\"index.php?state=auth\" method=\"post\">
  77. <TABLE>
  78. <TR><TD colspan=2>Авторизация<BR>\n</TD></TR>
  79. <TR><TD>Логин: </TD><TD>
  80. <INPUT type=\"text\" value=\"\" name=\"login\"></TD></TR>\n
  81. <TR><TD>Пароль: </TD><TD>
  82. <INPUT type=\"password\" value=\"\" name=\"pass\">
  83. <INPUT type=\"submit\" value=\"Ок\"></TD></TR>\n
  84. <TR><TD colspan=2 align=center><a href=\"index.php?state=registered\">
  85. Регистрация</a></TD></TR>
  86. </TABLE>
  87. </FORM>");
  88. // обработчик авторизации
  89. $query = mysql_query("SELECT Type FROM Users
  90. WHERE login='".$_POST["login"]."' AND Password='".MD5($_POST["pass"])."'");
  91. $row = mysql_fetch_assoc($query);
  92. if (mysql_num_rows($query)==0)
  93. $text="Несоответствие логина и пароля: ".MD5($_POST["pass"]);
  94. else $num=0;
  95. if (empty($text))
  96. {
  97. $_SESSION["login"] = $_POST["login"];
  98. $_SESSION["pass"] = $_POST["pass"];
  99. }
  100. if (!empty($text)) PRINT $text;
  101. else
  102. if (isset($_SESSION["login"]))
  103. PRINT("
  104. <TABLE>
  105. <TR><TD><B>Тест</B></TD></TR>
  106. <TR><TD><a href=\"index.php?state=run\">Начать тест</a></TD></TR>
  107. <TR><TD><a href=\"index.php?state=quit\">Выход</a></TD></TR>
  108. <TR><TD></TD></TR>
  109. </TABLE>");
  110. }
  111.  
  112. ?>
  113. Попробовал сделать так, результата нет. Я чего-то совсем не понимаю, но вот чего?
  114.  
  115.  
  116.  
4. snikers987 - 21 Октября, 2011 - 15:12:39 - перейти к сообщению
ну так по умолчанию тут попадаеш на регистрацию, чтоб попасть на авторизацию перейди по ссылке site.ru/file.php?act=auth
5. Данил_123 - 21 Октября, 2011 - 15:38:08 - перейти к сообщению
1-6 строки это изврат..
PHP:
скопировать код в буфер обмена
  1. if($_POST["pass"]!=$_POST["pass2"]) echo "Пароли разные";
  2. esleif (strlen($_POST["login"])<5) || strlen($_POST["login"])!=0) echo "Длина веденный данных не верна";
  3. $query = mysql_query("SELECT * FROM Users WHERE login='".$_POST["login"]."'");
  4. esleif(mysql_num_rows($query)!=0) echo "Данный ник занят";
  5. else
  6. {
  7. $insert="INSERT INTO `users` values('$login','$pass')";
  8. if(!$insert) echo "Ошибка добавления";
  9. if($insert) echo "Успешно";
  10. }
  11.  


Спойлер (Отобразить) Для наглядности напишу, что вы натворили(допустим еррор=1) $error=1+2 $error=3+2 $error=5+2 и так до бесконечности.. Чтобы прибавить переменой значение нужно
это к тому если захотите оставить свою версию проверки..


Если хотите могу выложить свой скрипт регистрации по юзаете его
6. jkhan - 21 Октября, 2011 - 15:58:06 - перейти к сообщению
На данный момент имеется следующий код:
PHP:
скопировать код в буфер обмена
  1. if($_POST["pass"]!=$_POST["pass2"]){
  2. echo "Пароли разные";}
  3. elseif ((strlen($_POST["login"])<5) || strlen($_POST["login"])!=0){
  4. echo "Длина введенны данных не верна";
  5. $query = mysql_query("SELECT * FROM Users WHERE login='".$_POST["login"]."'");}
  6. elseif(mysql_num_rows($query)!=0) {
  7. echo "Данный ник занят";}
  8. else
  9. {
  10. $insert="INSERT INTO `users` values('$login','$pass')";
  11. if(!$insert) echo "Ошибка добавления";
  12. if($insert) echo "Успешно";
  13. }
  14. if ($error==0)
  15. {
  16. $text_query="INSERT INTO Users VALUES ('', '".$_POST["lname"]."',
  17. '".$_POST["fname"]."', '".$_POST["group"]."', '".$_POST["login"]."',
  18. '".MD5($_POST["pass"])."', '0')";
  19. $query=mysql_query($text_query);}
  20. if (mysql_errno()!=0){
  21. $text=mysql_errno().":".mysql_error();
  22. }
  23. if(!isset($_GET['act'])) {
  24. $_GET['act'] = 'register';}
  25. //Форма регистрации
  26. if(($_GET['act'] == 'register') and ($_GET['act'] != 'auth')) {
  27. PRINT("<TABLE><TR><TD>");
  28. PRINT("</TD></TR></TABLE>");}
  29. if ($error==0)  {
  30. PRINT("<FORM action=\"index.php?act=auth\" method=\"post\">
  31. <TABLE>
  32. <TR><TD>Имя: </TD><TD>
  33. <INPUT type=\"text\" value=\"\" name=\"lname\"></TD></TR>\n
  34. <TR><TD>Фамилия: </TD><TD>
  35. <INPUT type=\"text\" value=\"\" name=\"fname\"></TD></TR>\n
  36. <TR><TD>Группа: </TD><TD>
  37. <INPUT type=\"text\" value=\"\" name=\"group\"></TD></TR>\n <TR>
  38. <TD>Логин: </TD><TD> <INPUT type=\"text\" value=\"\" name=\"login\">
  39. </TD></TR>\n
  40. <TR><TD>Пароль: </TD><TD>
  41. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  42. <TR><TD>Пароль (ещё раз): </TD>
  43. <TD> <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  44. <TR><TD align=center colspan=2>
  45. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  46. </TABLE>
  47. </FORM>");}
  48. else
  49. {
  50. PRINT("<FORM action=\"index.php?act=auth\" method=\"post\">
  51. <TABLE>
  52. <TR><TD>Имя: </TD><TD>
  53. <INPUT type=\"text\" value=\"".$_POST["lname"]."\" name=\"lname\"></TD></TR>\n
  54. <TR><TD>Фамилия: </TD><TD>
  55. <INPUT type=\"text\" value=\"".$_POST["fname"]."\" name=\"fname\"></TD></TR>\n
  56. <TR><TD>Группа: </TD><TD>
  57. <INPUT type=\"text\" value=\"".$_POST["group"]."\" name=\"group\"></TD></TR>\n
  58. <TR><TD>Логин: </TD><TD>
  59. <INPUT type=\"text\" value=\"".$_POST["login"]."\" name=\"login\"></TD></TR>\n
  60. <TR><TD>Пароль: </TD><TD>
  61. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  62. <TR><TD>Пароль (ещё раз): </TD><TD>
  63. <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  64. <TR><TD align=center colspan=2>
  65. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  66. </TABLE>
  67. </FORM>");
  68. }
  69.  
  70. //Форма авторизации
  71. if($_GET['act'] == 'auth'){
  72. //форма авторизации
  73. PRINT("<FORM action=\"index.php?state=input\" method=\"post\">
  74. <TABLE>
  75. <TR><TD colspan=2>Авторизация<BR>\n</TD></TR>
  76. <TR><TD>Логин: </TD><TD>
  77. <INPUT type=\"text\" value=\"\" name=\"login\"></TD></TR>\n
  78. <TR><TD>Пароль: </TD><TD>
  79. <INPUT type=\"password\" value=\"\" name=\"pass\">
  80. <INPUT type=\"submit\" value=\"Ок\"></TD></TR>\n
  81. <TR><TD colspan=2 align=center><a href=\"index.php?state=reg\">
  82. Регистрация</a></TD></TR>
  83. </TABLE>
  84. </FORM>");
  85. // обработчик авторизации
  86. $query = mysql_query("SELECT Type FROM Users
  87. WHERE login='".$_POST["login"]."' AND Password='".MD5($_POST["pass"])."'");
  88. $row = mysql_fetch_assoc($query);
  89. if (mysql_num_rows($query)==0)
  90. $text="Несоответствие логина и пароля: ".MD5($_POST["pass"]);
  91. else $num=0;
  92. if (empty($text))
  93. {
  94. $_SESSION["login"] = $_POST["login"];
  95. $_SESSION["pass"] = $_POST["pass"];
  96. }
  97. if (!empty($text)) PRINT $text;
  98. else
  99. if (isset($_SESSION["login"]))
  100. PRINT("
  101. <TABLE>
  102. <TR><TD><B>Тест</B></TD></TR>
  103. <TR><TD><a href=\"index.php?state=run\">Начать тест</a></TD></TR>
  104. <TR><TD><a href=\"index.php?state=quit\">Выход</a></TD></TR>
  105. <TR><TD></TD></TR>
  106. </TABLE>");
  107.  
  108.  }
  109.  
  110.  
  111. ?>

Возникли следующие вопросы:
1) Как сделать так, чтобы проверка на заполнение формы была только после нажатия на кнопку "Готово"? То есть не сразу по входу на сайт, как сейчас, а только в том случае, если существует реально ошибка ($error).
2. Как сделать так, чтобы при наличии ошибок переход к авторизации был не доступен? В данном коде не важно, есть ли ошибки или их нет. Переход все равно осуществляется.
3. Как скрыть появление формы регистрации при переходе к авторизации при сохранении всех рабочих свойств?
Спасибо за понимание.
7. Данил_123 - 21 Октября, 2011 - 16:28:48 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $login=$_POST['login'];
  2. $pass=$_POST['pass'];
  3. $pass2=$_POST['pass2'];
  4. if($_POST["pass"]!=$_POST["pass2"]){
  5. echo "Пароли разные";}
  6. elseif ((strlen($_POST["login"])<5)){
  7. echo "Длина введенны данных не верна";
  8. $query = mysql_query("SELECT * FROM Users WHERE login='".$_POST["login"]."'");}
  9. elseif(mysql_num_rows($query)!=0) {
  10. echo "Данный ник занят";}
  11. else if(empty($login) || empty($pass) || empty($pass2)) echo "Заполните все поля";
  12. else
  13. {
  14. $insert="INSERT INTO `users` values('$login','$pass')";
  15. if(!$insert) echo "Ошибка добавления";
  16. if($insert) echo "Успешно";
  17. }


Вот это убал
PHP:
скопировать код в буфер обмена
  1. strlen($_POST["login"])!=0
т.к длина каждого ника не равна нулю ( пример jkhan !=0)
(Добавление)
Да и уберите
PHP:
скопировать код в буфер обмена
  1. if ($error==0)
и все что от нее зависит
8. jkhan - 21 Октября, 2011 - 17:22:03 - перейти к сообщению
Сделал так, как Вы советовали. В результате получилась следующая конструкция:
PHP:
скопировать код в буфер обмена
  1. $login=$_POST['login'];
  2. $pass=$_POST['pass'];
  3. $pass2=$_POST['pass2'];
  4. if($_POST["pass"]!=$_POST["pass2"]){
  5. echo "Пароли разные";}
  6. elseif ((strlen($_POST["login"])<5)){
  7. echo "Длина введенны данных не верна";
  8. $query = mysql_query("SELECT * FROM Users WHERE login='".$_POST["login"]."'");}
  9. elseif(mysql_num_rows($query)!=0) {
  10. echo "Данный ник занят";}
  11. else if(empty($login) || empty($pass) || empty($pass2)) echo "Заполните все поля";
  12. else
  13. {
  14. $insert="INSERT INTO `users` values('$login','$pass')";
  15. if(!$insert) echo "Ошибка добавления";
  16. if($insert) echo "Успешно";
  17. }
  18. if(!isset($_GET['act'])) {
  19. $_GET['act'] = 'register';}
  20. //Форма регистрации
  21. if(($_GET['act'] == 'register') and ($_GET['act'] != 'auth')) {
  22. PRINT("<TABLE><TR><TD>");
  23. PRINT("</TD></TR></TABLE>");}
  24. if ($error==0)  {
  25. PRINT("<FORM action=\"index.php?act=auth\" method=\"post\">
  26. <TABLE>
  27. <TR><TD>Имя: </TD><TD>
  28. <INPUT type=\"text\" value=\"\" name=\"lname\"></TD></TR>\n
  29. <TR><TD>Фамилия: </TD><TD>
  30. <INPUT type=\"text\" value=\"\" name=\"fname\"></TD></TR>\n
  31. <TR><TD>Группа: </TD><TD>
  32. <INPUT type=\"text\" value=\"\" name=\"group\"></TD></TR>\n <TR>
  33. <TD>Логин: </TD><TD> <INPUT type=\"text\" value=\"\" name=\"login\">
  34. </TD></TR>\n
  35. <TR><TD>Пароль: </TD><TD>
  36. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  37. <TR><TD>Пароль (ещё раз): </TD>
  38. <TD> <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  39. <TR><TD align=center colspan=2>
  40. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  41. </TABLE>
  42. </FORM>");}
  43. else
  44. {
  45. PRINT("<FORM action=\"index.php?act=auth\" method=\"post\">
  46. <TABLE>
  47. <TR><TD>Имя: </TD><TD>
  48. <INPUT type=\"text\" value=\"".$_POST["lname"]."\" name=\"lname\"></TD></TR>\n
  49. <TR><TD>Фамилия: </TD><TD>
  50. <INPUT type=\"text\" value=\"".$_POST["fname"]."\" name=\"fname\"></TD></TR>\n
  51. <TR><TD>Группа: </TD><TD>
  52. <INPUT type=\"text\" value=\"".$_POST["group"]."\" name=\"group\"></TD></TR>\n
  53. <TR><TD>Логин: </TD><TD>
  54. <INPUT type=\"text\" value=\"".$_POST["login"]."\" name=\"login\"></TD></TR>\n
  55. <TR><TD>Пароль: </TD><TD>
  56. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  57. <TR><TD>Пароль (ещё раз): </TD><TD>
  58. <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  59. <TR><TD align=center colspan=2>
  60. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  61. </TABLE>
  62. </FORM>");
  63. }
  64.  
  65. //Форма авторизации
  66. if($_GET['act'] == 'auth'){
  67. //форма авторизации
  68. PRINT("<FORM action=\"index.php?state=input\" method=\"post\">
  69. <TABLE>
  70. <TR><TD colspan=2>Авторизация<BR>\n</TD></TR>
  71. <TR><TD>Логин: </TD><TD>
  72. <INPUT type=\"text\" value=\"\" name=\"login\"></TD></TR>\n
  73. <TR><TD>Пароль: </TD><TD>
  74. <INPUT type=\"password\" value=\"\" name=\"pass\">
  75. <INPUT type=\"submit\" value=\"Ок\"></TD></TR>\n
  76. <TR><TD colspan=2 align=center><a href=\"index.php?state=reg\">
  77. Регистрация</a></TD></TR>
  78. </TABLE>
  79. </FORM>");
  80. // обработчик авторизации
  81. $query = mysql_query("SELECT Type FROM Users
  82. WHERE login='".$_POST["login"]."' AND Password='".MD5($_POST["pass"])."'");
  83. $row = mysql_fetch_assoc($query);
  84. if (mysql_num_rows($query)==0)
  85. $text="Несоответствие логина и пароля: ".MD5($_POST["pass"]);
  86. else $num=0;
  87. if (empty($text))
  88. {
  89. $_SESSION["login"] = $_POST["login"];
  90. $_SESSION["pass"] = $_POST["pass"];
  91. }
  92. if (!empty($text)) PRINT $text;
  93. else
  94. if (isset($_SESSION["login"]))
  95. PRINT("
  96. <TABLE>
  97. <TR><TD><B>Тест</B></TD></TR>
  98. <TR><TD><a href=\"index.php?state=run\">Начать тест</a></TD></TR>
  99. <TR><TD><a href=\"index.php?state=quit\">Выход</a></TD></TR>
  100. <TR><TD></TD></TR>
  101. </TABLE>");
  102.  
  103.  }

Проблема в том, что это все тот же вариант, что был вначале, только по-другому написанный. Проблему это пока что не решает. Огорчение
(Добавление)
jkhan пишет:
Сделал так, как Вы советовали. В результате получилась следующая конструкция:
PHP:
скопировать код в буфер обмена
  1. $login=$_POST['login'];
  2. $pass=$_POST['pass'];
  3. $pass2=$_POST['pass2'];
  4. if($_POST["pass"]!=$_POST["pass2"]){
  5. echo "Пароли разные";}
  6. elseif ((strlen($_POST["login"])<5)){
  7. echo "Длина введенны данных не верна";
  8. $query = mysql_query("SELECT * FROM Users WHERE login='".$_POST["login"]."'");}
  9. elseif(mysql_num_rows($query)!=0) {
  10. echo "Данный ник занят";}
  11. else if(empty($login) || empty($pass) || empty($pass2)) echo "Заполните все поля";
  12. else
  13. {
  14. $insert="INSERT INTO `users` values('$login','$pass')";
  15. if(!$insert) echo "Ошибка добавления";
  16. if($insert) echo "Успешно";
  17. }
  18. if(!isset($_GET['act'])) {
  19. $_GET['act'] = 'register';}
  20. //Форма регистрации
  21. if(($_GET['act'] == 'register') and ($_GET['act'] != 'auth')) {
  22. PRINT("<TABLE><TR><TD>");
  23. PRINT("</TD></TR></TABLE>");}
  24. if ($error==0)  {
  25. PRINT("<FORM action=\"index.php?act=auth\" method=\"post\">
  26. <TABLE>
  27. <TR><TD>Имя: </TD><TD>
  28. <INPUT type=\"text\" value=\"\" name=\"lname\"></TD></TR>\n
  29. <TR><TD>Фамилия: </TD><TD>
  30. <INPUT type=\"text\" value=\"\" name=\"fname\"></TD></TR>\n
  31. <TR><TD>Группа: </TD><TD>
  32. <INPUT type=\"text\" value=\"\" name=\"group\"></TD></TR>\n <TR>
  33. <TD>Логин: </TD><TD> <INPUT type=\"text\" value=\"\" name=\"login\">
  34. </TD></TR>\n
  35. <TR><TD>Пароль: </TD><TD>
  36. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  37. <TR><TD>Пароль (ещё раз): </TD>
  38. <TD> <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  39. <TR><TD align=center colspan=2>
  40. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  41. </TABLE>
  42. </FORM>");}
  43. else
  44. {
  45. PRINT("<FORM action=\"index.php?act=auth\" method=\"post\">
  46. <TABLE>
  47. <TR><TD>Имя: </TD><TD>
  48. <INPUT type=\"text\" value=\"".$_POST["lname"]."\" name=\"lname\"></TD></TR>\n
  49. <TR><TD>Фамилия: </TD><TD>
  50. <INPUT type=\"text\" value=\"".$_POST["fname"]."\" name=\"fname\"></TD></TR>\n
  51. <TR><TD>Группа: </TD><TD>
  52. <INPUT type=\"text\" value=\"".$_POST["group"]."\" name=\"group\"></TD></TR>\n
  53. <TR><TD>Логин: </TD><TD>
  54. <INPUT type=\"text\" value=\"".$_POST["login"]."\" name=\"login\"></TD></TR>\n
  55. <TR><TD>Пароль: </TD><TD>
  56. <INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
  57. <TR><TD>Пароль (ещё раз): </TD><TD>
  58. <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
  59. <TR><TD align=center colspan=2>
  60. <INPUT type=\"submit\" value=\"Готово\"></TD></TR>
  61. </TABLE>
  62. </FORM>");
  63. }
  64.  
  65. //Форма авторизации
  66. if($_GET['act'] == 'auth'){
  67. //форма авторизации
  68. PRINT("<FORM action=\"index.php?state=input\" method=\"post\">
  69. <TABLE>
  70. <TR><TD colspan=2>Авторизация<BR>\n</TD></TR>
  71. <TR><TD>Логин: </TD><TD>
  72. <INPUT type=\"text\" value=\"\" name=\"login\"></TD></TR>\n
  73. <TR><TD>Пароль: </TD><TD>
  74. <INPUT type=\"password\" value=\"\" name=\"pass\">
  75. <INPUT type=\"submit\" value=\"Ок\"></TD></TR>\n
  76. <TR><TD colspan=2 align=center><a href=\"index.php?state=reg\">
  77. Регистрация</a></TD></TR>
  78. </TABLE>
  79. </FORM>");
  80. // обработчик авторизации
  81. $query = mysql_query("SELECT Type FROM Users
  82. WHERE login='".$_POST["login"]."' AND Password='".MD5($_POST["pass"])."'");
  83. $row = mysql_fetch_assoc($query);
  84. if (mysql_num_rows($query)==0)
  85. $text="Несоответствие логина и пароля: ".MD5($_POST["pass"]);
  86. else $num=0;
  87. if (empty($text))
  88. {
  89. $_SESSION["login"] = $_POST["login"];
  90. $_SESSION["pass"] = $_POST["pass"];
  91. }
  92. if (!empty($text)) PRINT $text;
  93. else
  94. if (isset($_SESSION["login"]))
  95. PRINT("
  96. <TABLE>
  97. <TR><TD><B>Тест</B></TD></TR>
  98. <TR><TD><a href=\"index.php?state=run\">Начать тест</a></TD></TR>
  99. <TR><TD><a href=\"index.php?state=quit\">Выход</a></TD></TR>
  100. <TR><TD></TD></TR>
  101. </TABLE>");
  102.  
  103.  }

Проблема в том, что это все тот же вариант, что был вначале, только по-другому написанный. Проблему это пока что не решает. Огорчение
Создается впечатление, что не хватает каких-то условий, но вот каких?
9. Данил_123 - 21 Октября, 2011 - 17:50:06 - перейти к сообщению
Может все же кинуть мой скрипт.. Да и еще ощибки скнинь?
10. jkhan - 21 Октября, 2011 - 17:59:21 - перейти к сообщению
Данил_123 пишет:
Может все же кинуть мой скрипт.. Да и еще ощибки скнинь?

На основе Вашей разработки все сделано вроде как. Или я не правильно понял ход Ваших мыслей?
Если что, я приложил имеющийся на данный момент вариант. Можете покопаться в нем, может что и заработает. Радость
11. Данил_123 - 21 Октября, 2011 - 18:29:26 - перейти к сообщению
я имею мой готовый скрипт регистрации, то есть тот который крутиться у меня на сайте
12. jkhan - 21 Октября, 2011 - 18:33:34 - перейти к сообщению
Вполне реально. Можно попробовать.
13. Данил_123 - 21 Октября, 2011 - 18:38:51 - перейти к сообщению
Данил_123 пишет:
Может все же кинуть мой скрипт..

(Добавление)
Дай структуру базы
14. jkhan - 21 Октября, 2011 - 18:43:55 - перейти к сообщению
В архиве, который я скинул, все же есть.
15. Данил_123 - 21 Октября, 2011 - 18:50:32 - перейти к сообщению
Да щас проверяю, как проверю выложу

 

Powered by ExBB FM 1.0 RC1