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]   

> Без описания
gragonvlad
Отправлено: 05 Апреля, 2015 - 23:43:23
Post Id


Новичок


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


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




CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <title>test</title>
  3. <body>
  4.   <form method='post' action='regs.php'>
  5.   Введите Логин: <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='Регистрация' />
  6. </form>
  7.          
  8.  
  9.  
  10.  
  11.  
  12.  
  13. <br>Поля со значком <font color="red">*</font> <br>обязательны для заполнения</br>
  14. </body>
  15. </html>

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require_once "database.php";
  4.    //получаем логин(через Post) и проверяем его на вредоносные символы методом CheckUserData
  5.                     @ $username = $this->CheckUserData($_POST['user_login']);
  6.                     //получаем пароль(через Post) и проверяем его на вредоносные символы методом CheckUserData
  7.                     @ $passwd = $this->CheckUserData($_POST['user_passwd']);
  8. //класс для обработки данных, этот класс является родителем всех остальных
  9. class kolvousers extends dataprocessing
  10.     {
  11.         public function kolvous(){
  12.    
  13.    $result = $mysqli->query("SELECT login FROM users");
  14.    $rs = $result;
  15.    $rows = $rs->rowCount();
  16.    print_r($rows);
  17.    }
  18.  
  19.  }
  20. $rows = new kolvousers();
  21. $rows->kolvous();
  22. class dataprocessing
  23. {
  24.    //конструктор класса dataprocessing  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  25.     public function __construct()
  26.         {
  27.         //начинаем сессию
  28.         session_start();
  29.         }
  30.  
  31.  
  32.    
  33.     //проверка на вредоносные символы @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  34.     public function CheckUserData($var)
  35.         {
  36.         //обрабатываем вредоносные символы
  37.         $res = htmlspecialchars($var, ENT_QUOTES);
  38.         //при возвращении результата обрабатываем строку слешами
  39.         return addslashes($res); // addslashes — Экранирует строку с помощью слэшей
  40.         //описание работы htmlspecialchars и addslashes вы можете посмотреть в любом справочнике php
  41.         }
  42.  
  43.     //этот метод необходим для вырезания из текстовой строки всего кроме чисел
  44.     //например после обработки строки "43rtrt56" останется "4356"
  45.     //зачем это нужно увидите дальше   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  46.     public function CheckUserNumber($number)
  47.         {
  48.         //составляем шаблон
  49.         $patt = '[[:alpha:]]|[[:punct:]]|[[:cntrl:]]|[[:space:]]';
  50.         //меняем на '', т.е. на пустое место
  51.         $replace = '';
  52.         //ereg_replace - функция php для работы с регулярными выражениями
  53.         return @ ereg_replace($patt, $replace, $number);
  54.         }
  55.  
  56.     //Поиск логина в базе данных  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  57.     public function FindLogin($login)
  58.         {
  59.        
  60.         //осуществляем поиск $login в базе данных
  61.         $result = $mysqli->query("select id from users where login = '$login'");
  62.         //получаем количество результатов поиска
  63.         $colich_results = $result->num_rows;
  64.         //возвращаем количество результатов поиска
  65.         return $colich_results;
  66.         }
  67.  
  68.     //Поиск email'а в базе данных  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  69.     public function FindEmail($email)
  70.         {
  71.        
  72.         $result = $mysqli->query("select id from users where email = '$email'");
  73.         //получаем количество результатов поиска
  74.         $colich_results = $result->num_rows;
  75.         //возвращаем количество результатов поиска
  76.         return $colich_results;
  77.         }
  78.         //Запрос minXP, maxXP, minARMOR, maxARMOR из таблици users
  79.         public function ZaprosParamUsers($login)
  80.                 {
  81.                 //выбор значений minXP, maxXP, minARMOR, maxARMOR из таблици users  для определенного пользователя
  82.                 $result = $mysqli->query("SELECT minXP, maxXP, minARMOR, maxARMOR FROM users WHERE user_login = '$login' ");
  83.                 //в переменную $row выводим ассоциативный массив               
  84.                 $row = $result->fetch_assoc_all();
  85.                 //возвращяем результаты, весь массив таблици users со всеми ее значениями у нас в $row
  86.                 return $row;
  87.                         //return $result;      
  88.                 }
  89.                 }
  90.    // обрабатываем полученные данные от формы регистрации методом CheckUserData
  91.         $user_login = $this->CheckUserData($_POST['login']);
  92.         $user_passwd = $this->CheckUserData($_POST['pass1']);
  93.         $user_passwd2 = $this->CheckUserData($_POST['pass2']);
  94.         $user_email = $this->CheckUserData($_POST['email']);
  95.      
  96.  
  97.         // если все поля заполнены то продолжаем работу с данными
  98.         if ($user_login != "" && $user_passwd != "" && $user_passwd2 != "" && $user_email)
  99.         {
  100.             // если пароль и проверочный пароли равны, то продолжаем работу
  101.             if ($user_passwd == $user_passwd2)
  102.             {
  103.                 // если указанного при регистрации логина не нашлось в бд, продолжаем работу (логины должны быть уникальными)
  104.                 if ($this->FindLogin($user_login) == 0)
  105.                 {
  106.                     // если указанного при регистрации email не нашлось в бд, продолжаем работу (email тоже должен быть уникальным)
  107.                     if ($this->FindEmail($user_email) == 0)
  108.                     {
  109.                         // теперь нам нужно отправить ссылку на указанную почту, для активации пользователя
  110.                         $from = 'gragonvlad@gmail.com';
  111.                         $hash_code = rand(100000, 999999);
  112.                         $subject = "Подтвержение регистрации";
  113.                         // здесь вам нужно поменять значение yousite на свой домен
  114.                         $message = "Вы подали заявку на регистрацию в игре Developer new. " .
  115.                                 "TEST " .
  116.                                 "TEST: " .
  117.                                 "http://192.168.1.2:85/online/activate.php?hash=" . $hash_code;
  118.  
  119.                         // отправляем письмо
  120.                         if (!mail($user_email, $subject, $message, 'From: ' . $from))
  121.                         // если письмо не отправлено то значит пользователь некорректно указал свою почту
  122.                             echo "<center><br><a href='index.php?id=registration_form'>Вы не правильно указали почту.</a></center>";
  123.                         else
  124.                         {
  125.                             // если письмо отправилось, то добавляем пользователя в базу данных с сгенерированным хеш кодом для активации
  126.                            
  127.                                                         // после false четыре значения minXP maxXP minARMOR maxARMOR
  128.                             $test = $mysqli->query("insert into users values ('$user_login', '$user_passwd', '$user_email', '$hash_code')");
  129.  
  130.                             echo "<center><br><a href='index.php'>На указанный почтовый ящик отправлено письмо с ссылкой для активации вашего личного кабинета.</a></center>";
  131.                         }
  132.                     }
  133.                     else
  134.                         echo '<center><a href="index.php?id=registration_form">Такой email уже есть в системе.</a></center>';
  135.                 }
  136.                 else
  137.                     echo '<center><a href="index.php?id=registration_form">Такой логин уже есть в системе.</a></center>';
  138.             }
  139.             else
  140.                 echo '<center><a href="index.php?id=registration_form">Пароли не совпадают.</a></center>';
  141.         }
  142.                 ?>



DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(20) NOT NULL,
`email` varchar(50) NOT NULL,
`password` varchar(35) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $mysqli = new mysqli('localhost', 'root', '', 'web');
  3.    printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error());
  4.    exit;
  5.    }
  6.    else
  7.    {
  8.    $count=1;
  9.    printf("База работает %s\n\n", $count);
  10.    if ($count=1)
  11.    echo("$x=1");
  12. }
  13. ?>
  14.  


Пишу регистрацию не срабатывает в чем может быть ошибка отпишите .Как поправить ?
 
 Top
Faraon-san
Отправлено: 06 Апреля, 2015 - 00:33:19
Post Id



Посетитель


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


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




у тебя каша какая то из классов, вызываешь функцию вне класса.
 
 Top
gragonvlad
Отправлено: 06 Апреля, 2015 - 08:21:09
Post Id


Новичок


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


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




Можете посоветовать книжки электронные по mysqli , функции и классы в php.
 
 Top
LIME
Отправлено: 06 Апреля, 2015 - 09:43:58
Post Id


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


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


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




Совершенный код
Макконнел
 
 Top
gragonvlad
Отправлено: 06 Апреля, 2015 - 19:05:20
Post Id


Новичок


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


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




Подскажите такую вещь


$sql = $mysqli->query("SELECT id FROM users WHERE login='$login' AND password='$password'");

if ($test = $sql->num_rows) {

Где тут ошибка или что я не так понимаю вот if ($test = $sql->num_rows) { говорит false из за чего обьясните база есть коннект идет запрос выше выполняется а то что if нет .
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB