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 » » Вопросы новичков » Странная ошибка

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

1. etoYA - 30 Июля, 2011 - 22:57:34 - перейти к сообщению
Странная ошибка:

CODE (htmlphp):
скопировать код в буфер обмена
  1. Table 'egaming.users' doesn't exist


CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. // Подключение настроек MySQL
  3. require_once('config.php');
  4.  
  5. // Обьявление переменных отвечающие за ошибки
  6. $error = false;
  7. $errort = '';
  8.  
  9. // Обработка полей функцией mysql_real_escape_string()
  10.         $login = (isset($_POST['login'])) ? mysql_real_escape_string($_POST['login']) : '';
  11.         $pass = (isset($_POST['pass'])) ? mysql_real_escape_string($_POST['pass']) : '';
  12.        
  13. // Проверка на наличие ошибок
  14.  
  15. // Проверка на заполнение полей
  16. if ($login == ''){
  17.         $error = true;
  18.         $errort = 'Не заполнено поле логин';}
  19. elseif ($pass == ''){
  20.         $error = true;
  21.         $errort = 'Не заполнено поле пароль';}
  22. elseif ($pass !== $repeat){
  23.         $error = true;
  24.         $errort = 'Пароли не совпадают';}
  25. elseif ($email == ''){
  26.         $error = true;
  27.         $errort = 'Не заполнено поле е-мейл';}
  28. elseif ($name == ''){
  29.         $error = true;
  30.         $errort = 'Не заполнено поле имя';}
  31. elseif ($last_name == ''){
  32.         $error = true;
  33.         $errort = 'Не заполнено поле фамилия';}
  34. elseif ($country == ''){
  35.         $error = true;
  36.         $errort = 'Вы не выбрали страну';}
  37.  
  38. // Проверка на длину логина и пароля
  39. if (strlen($login) < 4 or strlen($login) > 15)
  40.         $error = true;
  41.         $errort = 'Логин должен содержать от 4 до 15 символов';
  42. if (strlen($pass) < 4 or strlen($pass) > 15)
  43.         $error = true;
  44.         $errort = 'Пароль должен содержать от 6 до 15 символов';
  45.  
  46. // Проверка логина и пароля на запрещенные символы
  47.  
  48. if (!preg_match("/^[a-zA-Z0-9]+$/",$login))
  49.         $error = true;
  50.         $errort = 'Логин должен состоять из латинских букв и цифр';    
  51. if (!preg_match("/^[a-zA-Z0-9]+$/",$pass))
  52.         $error = true;
  53.         $errort = 'Пароль должен состоять из латинских букв и цифр';   
  54.  
  55. // Проверка на сущевствование пользователя с таким же логином
  56.  
  57.         $query = "SELECT `uid`
  58.                         FROM `users`
  59.                         WHERE `login` = '{$login}'
  60.                         LIMIT 1";
  61.         $sql = mysql_query($query) or die(mysql_error());
  62. if (mysql_num_rows($sql) == 1)
  63. {
  64.         $error = true;
  65.         $errort = "Пользователь с логином $login уже существует";
  66. }
  67.  
  68. // Если ошибок не обнаружено, то
  69. if (!$error)
  70. {
  71. // Хешируем пароль
  72.         $hashed_password = md5(md5($pass));
  73.        
  74. // И добавляем пользователя в базу
  75.         $query = "INSERT INTO `users`(`uid`,`login`,`password`,`email`,`name`,`last_name`,`country`)
  76.                                           VALUES('','$login','$hashed_password','$email','$name','$last_name','$country')";
  77.         $sql = mysql_query($query) or die(mysql_error());
  78.  
  79. // Если все прошло успешно, то вывести
  80.         echo 'Регистрация прошла успешно';
  81. }
  82. // Иначе вывести ошибки
  83.         echo 'Вы допустили следующие ошибки' . $error . '<br />';
  84. ?>
2. Arni - 30 Июля, 2011 - 23:04:37 - перейти к сообщению
А может такое быть что ее в самом деле не существует?
3. etoYA - 30 Июля, 2011 - 23:32:30 - перейти к сообщению
ее в самом деле не существует, но я ее и не выберал......
4. OrmaJever - 30 Июля, 2011 - 23:37:05 - перейти к сообщению
а это что?
PHP:
скопировать код в буфер обмена
  1.         $query = "SELECT `uid`
  2.                        FROM `users`
  3.                        WHERE `login` = '{$login}'
  4.                        LIMIT 1";

и это?
PHP:
скопировать код в буфер обмена
  1.         $query = "INSERT INTO `users`(`uid`,`login`,`password`,`email`,`name`,`last_name`,`country`)
  2.                                          VALUES('','$login','$hashed_password','$email','$name','$last_name','$country')";
5. etoYA - 30 Июля, 2011 - 23:41:53 - перейти к сообщению
Это то да, но с какого перепугу оно вставляет название базы и точку?
6. LIME - 30 Июля, 2011 - 23:51:41 - перейти к сообщению
etoYA пишет:
с какого перепугу оно вставляет название базы и точку?
а как по вашему идентифицировать таблицу?
в разных базах могут быть такие таблицы
7. OrmaJever - 30 Июля, 2011 - 23:54:56 - перейти к сообщению
LIME прав. У вас в config.php есть строка

вот из неё и берёт чтобы понятнее было где не нашло таблицу
8. etoYA - 30 Июля, 2011 - 23:57:18 - перейти к сообщению
config.php
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. $host = 'localhost';
  3. $username = 'root';
  4. $password = '';
  5. $dbname = 'egaming';
  6.  
  7. mysql_connect ($host, $username, $password) or die(mysql_error());
  8. ?>


Проблема в скрипте 100%, так как когда я просто добавлял/выбирал записи, все нормально было, а когда усложнил скрипт, произошла ошибка.
p.s это единственная база, помимо тех, которые при установке сервера создались
9. OrmaJever - 30 Июля, 2011 - 23:58:23 - перейти к сообщению
etoYA пишет:
p.s это единственная база, помимо тех, которые при установке сервера создались

ну суть не в этом, суть в том что у вас нету таблицы users в этой базе, вот и ошибка.
10. etoYA - 31 Июля, 2011 - 00:01:31 - перейти к сообщению
Блин, действительно, дропнул таблицуУлыбка
(Добавление)
Спасибо всем за помошь!!!
(Добавление)
А можете вообще сказать скрипт кривой или так себе (средней кривости?)
11. OrmaJever - 31 Июля, 2011 - 01:18:12 - перейти к сообщению
etoYA пишет:
А можете вообще сказать скрипт кривой или так себе (средней кривости?)

Ха-ха ну бывали и похуже
12. etoYA - 31 Июля, 2011 - 02:07:56 - перейти к сообщению
Радость Ха-ха
13. illy - 31 Июля, 2011 - 09:59:43 - перейти к сообщению
Эхехей! Ха-ха
14. Arni - 31 Июля, 2011 - 10:55:06 - перейти к сообщению
etoYA пишет:
А можете вообще сказать скрипт кривой или так себе (средней кривости?)


Тут наверно стоит отметить то что md5(md5($pass)); на самом деле детский садик. Если есть желание действительно усложнить перебор хешей, то было бы правильным сделать так.

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $pass = '12345678';
  3. $salt = rand(1,10000); //=> $salt обязательно нужно потом сохранить в базу данных
  4.  
  5. function HashPass($pass,$salt){
  6.     return sha1(sha1($salt).sha1($pass));
  7. }
  8.  

 

Powered by ExBB FM 1.0 RC1