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]   

> Описание: HELP
Kantona
Отправлено: 07 Января, 2011 - 20:45:49
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Авг. 2010  


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




Зравствуйте) есть скрипт регистрации, когда я вхожу на страницу регистрации и просто нажимаю на кнопку регистрации то пишет что пользователь ... зарегестрирован, как сделать чтоб такого не было а регисрировало чтолько после того как поля будут заполнены?? заранее спасибо

вот скрипт


База данных
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE users(
  2.   id INT NOT NULL AUTO_INCREMENT,
  3.   login VARCHAR(15),
  4.   pass TEXT,
  5.   email VARCHAR(150),
  6.   PRIMARY KEY(id)
  7. );


connectdb.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. //данные о хосте, пользователе и базе данных
  3. $host = 'localhost';
  4. $user = 'root';
  5. $pass = 'pass';
  6. $dbname = 'test';
  7.  
  8. // подключаемся и выбираем бд, которую указали выше
  9. if(!mysql_connect($host,$user,$pass))
  10.   die('Не удалось подключиться к серверу MySql!');
  11. elseif(!mysql_select_db($dbname))
  12.   die('Не удалось выбрать БД!');
  13. ?>



register.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. include('connectdb.php');// подключение к серверу MySql и выбор БД
  3.  
  4. if (($_POST['login']!='') ||
  5.     ($_POST['pass1']!='') ||
  6.     ($_POST['pass2']!='') ||
  7.     ($_POST['email']!='')) { // если все данные для регистрации введены, то продолжаем
  8.     $pass1 = $_POST['pass1'];
  9.     $pass2 = $_POST['pass2'];
  10.  
  11.     if (strcmp($pass1, $pass2) == 0) {// если пароли совпадают, то продолжаем
  12.       $login = $_POST['login'];
  13.       $email = $_POST['email'];
  14.  
  15.       //проверяем наличие в БД пользователя с логином $login
  16.       $sql='SELECT * FROM users WHERE login='.$login; // скрипт для поиска по логину в таблице users
  17.       if (!($res=mysql_query($sql)) || (mysql_num_rows($res) == 0)) { // если количество найденых записей ноль, то продолжаем
  18.           // sql-скрипт для добавления даных в таблицу
  19.           $sql = 'INSERT INTO users(login, pass, email)
  20.                   VALUES("'.$login.'", "'.$pass1.'", "'.$email.'")';
  21.           if(mysql_query($sql)) {// выполняем скрипт
  22.             echo 'Пользователь '.$_POST['login'].' успешно зарегистрирован! <a href="/index.php">Форма для входа.';
  23.           } else {
  24.             echo 'При регистрации произошла ошибка, <a href="/register.php">повторите попытку</a>.';
  25.           }
  26.         } else echo 'Пользователь с таким логином уже зарегистрирован!';
  27.     } else echo 'Введенные пароли не совпадают, <a href="/register.php">повторите попытку</a>.';
  28. } else {
  29. ?>
  30.   <form method='post' action='/register.php'>
  31.   Введите Логин: <input type='text' size='30' name='login' />  Введите e-mail: <input type=text size=30 name='email' />  Пароль: <input type='password' name='pass1' size='30' />  Повторите пароль: <input type='password' name='pass2' size='30' />  <input type='submit' value='Регистрация' />
  32. <?  
  33. }
  34. ?>
  35. </form>


index.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. /*!!!Чтобы не повредить работоспособности
  3.     скрипта выше этого комментария
  4.     не размещайте вообще ничего!!!*/
  5. include('connectdb.php');// подключение к серверу MySql и выбор БД
  6. $userinfo='';
  7. $state='0';
  8. if( (isset($_COOKIE['login'])) & (isset($_COOKIE['pass'])) ) {// если в куках лежит логин и зашифрованый пароля
  9.   if (!isset($_GET['exit'])) {// если кнопка выход не была нажата
  10.     $login=$_COOKIE['login'];
  11.     $pass=$_COOKIE['pass'];
  12.  
  13.     // проверяем наличие пользователя в БД и достаём оттуда пароль
  14.     $sql="SELECT id, pass FROM users WHERE login='$login'";
  15.     $res=mysql_query($sql);
  16.     if(mysql_num_rows($res)>0){// если пользователь есть в БД
  17.       $userinfo = mysql_fetch_array($res);// в этой переменной лежит пароль из БД
  18.       if(strcmp($pass,md5($userinfo['pass'])) == 0) { //проверяем схожесть пароля из БД с паролем из куков
  19.  
  20.         // достаём все данные из БД
  21.         $sql="SELECT * FROM users WHERE login='$login'";
  22.         $res=mysql_query($sql);
  23.         $userinfo=mysql_fetch_array($res); // в этой переменной будет лежать вся информация о пользователе из БД
  24.         $time=time();
  25.         // устанавливаем куки для запоминания статуса пользователя
  26.         setcookie("login",$login,$time+1800);
  27.         setcookie("pass",$pass,$time+1800);
  28.         $state = 1;// статус, если 1, тогда пользователь авторизован
  29.       }
  30.     }
  31.   } else {
  32.     //обнуляем куки, если была нажата кнопка выход
  33.     setcookie("login");
  34.     setcookie("pass");
  35.   }
  36. }
  37. if($state != 1) {// если после проверки куков, оказалось, что пользователь не авторизован, то идем дальше
  38.   if( (isset($_POST['login'])) & (isset($_POST['pass'])) ){ // если пользователь ввёл логин и пароль
  39.   $login = $_POST['login'];    
  40.  
  41.   // проверяем наличие пользователя в БД и достаём оттуда пароль
  42.   $sql = "SELECT id, pass FROM users WHERE login='$login'";
  43.   $res = mysql_query($sql);
  44.     if(mysql_num_rows($res)>0) {// если пользователь есть в БД
  45.       $userinfo = mysql_fetch_array($res);// в этой переменной лежит пароль из БД и номер пользователя
  46.       $pass = $_POST['pass'];
  47.       if(strcmp($pass,$userinfo['pass'])==0){
  48.  
  49.         // достаём все данные из БД
  50.         $sql="SELECT * FROM users WHERE login='$login'";
  51.         $res=mysql_query($sql);
  52.         $userinfo=mysql_fetch_array($res);// в этой переменной будет лежать вся информация о пользователе из БД
  53.         $time=time();
  54.         // устанавливаем куки для запоминания статуса пользователя, пароль шифруем
  55.         setcookie("login", $login, $time+1800);
  56.         setcookie("pass", md5($pass), $time+1800);
  57.         $state = 1;// статус, если 1, тогда пользователь авторизован
  58.       }
  59.     }
  60.   }
  61. }
  62. if($state != 1) {
  63. ?>
  64. <form method="post" action="/index.php">
  65. Логин: <input type="text" size="30" name="login"/>Пароль: <input type="password" name="pass" size="30"/><input type="submit" value="Войти"/>
  66. </form>
  67. <br /><a href="/register.php">Регистрация</a>
  68. <?
  69. } else {
  70.   echo 'Вы вошли на сайт!<br /> Ваш Логин: '.$userinfo["login"].'<br />Выш E-mail: '.$userinfo["email"].'<br /> <a href="/index.php?exit=y">Выход</a>';
  71. }
  72. ?>
  73.  
 
 Top
OrmaJever Модератор
Отправлено: 07 Января, 2011 - 21:00:44
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




эта строка какая-то страная
PHP:
скопировать код в буфер обмена
  1.       if (!($res=mysql_query($sql)) || (mysql_num_rows($res) == 0)) { // если количество найденых записей ноль, то продолжаем

Попробуй вот так


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 07 Января, 2011 - 21:09:55
Post Id



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


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


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




OrmaJever пишет:
Эта строка какая-то страная
Выполнение первой части выражения предполагаемой дизъюнкции осуществляется в том случае когда запрос к целевой БД является некорретным - и возвращаемое значение ресурса полученных информационных полей трактуется как false


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Kantona
Отправлено: 07 Января, 2011 - 22:17:15
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Авг. 2010  


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




А как с помощью такого скрипа срывать страницы? а то уж больно большой он получается! Хочу чтоб было так например я захожу на главную ввожу логин пароль и меня перебрасывает на ту страницу которая мне нужна или наоборот пока логин и пароль не введен то перекидыввает на главную...
 
 Top
JustUserR
Отправлено: 09 Января, 2011 - 02:11:09
Post Id



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


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


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




Kantona пишет:
Хочу чтоб было так например я захожу на главную ввожу логин пароль и меня перебрасывает на ту страницу которая мне нужна или наоборот пока логин и пароль не введен то перекидыввает на главную...
Для осуществления создания системы авторизации функционирование которой производится по предполагаемой схеме достаточно использования простого механизма поддежрки программый PHP-сеансов - в таком случае возможно включения предварительного элемента PHP-кода общей библиотеки по всех запрашиваемые приложения с целью проверки текущего состояния авторизаци и включения требуемого перенаправления


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 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