ФорумПрограммированиеPHP для идиотов → Проблема с регистрацией

Проблема с регистрацией

  • nooble

    Сообщения: 21 Репутация: N Группа: Кто попало

    Spritz 9 мая 2011 г. 11:50

    Добрый вечер, столкнулся с такой проблемой, нашел гайд по скрипту регистрации/авторизации, но, увы, не смог наладить, с бд все в порядке, вчера копался пол ночи в коде но так и не нашел.
    Выдает такую ошибку:
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\сайт\www\1\save_user.php on line 27
    Вот код save_user.php:
    <?php
    if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
    if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную

    if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    {
    exit ("Вы ввели не всю информацию, венитесь назад и заполните все поля!");
    }
    //если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
    $login = stripslashes($login);
    $login = htmlspecialchars($login);

    $password = stripslashes($password);
    $password = htmlspecialchars($password);

    //удаляем лишние пробелы
    $login = trim($login);
    $password = trim($password);


    // подключаемся к базе
    include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь

    // проверка на существование пользователя с таким же логином
    $result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
    $myrow = mysql_fetch_array($result);
    if (!empty($myrow['id'])) {
    exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
    }

    // если такого нет, то сохраняем данные
    $result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
    // Проверяем, есть ли ошибки
    if ($result2=='TRUE')
    {
    echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";
    }

    else {
    echo "Ошибка! Вы не зарегистрированы.";
    }
    ?>

    В синтаксисе, вроде, ошибок нету, из бд он все вытаскивает и может записывать, но в чем проблема хз.
    Ошибка в строчке 27:
    $myrow = mysql_fetch_array($result);

    Помогите, буду очень признателен.
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 9 мая 2011 г. 12:06, спустя 16 минут 3 секунды

    var_dump($result);
    $myrow = mysql_fetch_array($result);
    мб запрос кривой? ("SELECT id FROM users WHERE login='$login'") - существует ли таблица users, есть ли в ней поле login, не содержит ли $login символы, которые необходимо эскейпировать?
    Work, buy, consume, die
  • nooble

    Сообщения: 21 Репутация: N Группа: Кто попало

    Spritz 9 мая 2011 г. 11:59, спустя 23 часа 53 минуты 5 секунд

    Нет, все правильно, проверял, есть таблица "users", есть поле login и т.д. Единственное не понял слово:
    эскейпировать
    .
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 9 мая 2011 г. 12:04, спустя 4 минуты 31 секунду

    [man]mysql_real_escape_string[/man]
    Спустя 41 сек.
    mysql_real_escape_string на русском
    Work, buy, consume, die
  • nooble

    Сообщения: 21 Репутация: N Группа: Кто попало

    Spritz 9 мая 2011 г. 12:05, спустя 1 минуту 3 секунды


    [man]mysql_real_escape_string[/man]
    Спустя 41 сек.
    mysql_real_escape_string на русском

    Врятли, думаю нет такой проблемы. Могу дать исходники всей авторизации/регистрации.
    http://ruseller.com/lessons/les347/files.zip
  • cy4ka

    Сообщения: 14 Репутация: N Группа: Кто попало

    Spritz 9 мая 2011 г. 12:05, спустя 24 секунды

    nooble,
    echo mysql_error();
  • nooble

    Сообщения: 21 Репутация: N Группа: Кто попало

    Spritz 9 мая 2011 г. 12:15, спустя 9 минут 41 секунду


    nooble,
    echo mysql_error();


    Вроде как ошибка ушла, вставил это код и получилось так:
    $result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //         
    $myrow = mysql_fetch_array($result);
    if (empty($myrow['password']))
    echo mysql_error();

    Спасибо, но теперь есть еще проблема, но там пока ошибка в синтасисе, разберусь, надеюсь.
    Тему прошу пока не закрывать.
    Спустя 276 сек.
    Так, странно, показал ошибку:
    Table 'mysql.users' doesn't exist, login .

    Я так понял, что нет поля логин, но он есть. оО
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 9 мая 2011 г. 12:35, спустя 20 минут 22 секунды

    в БД mysql нет таблицы users (mysql.users)
    Спустя 28 сек.
    учи английский пригодится
  • nooble

    Сообщения: 21 Репутация: N Группа: Кто попало

    Spritz 10 мая 2011 г. 7:43, спустя 19 часов 7 минут 45 секунд

    Закрывайте. Спасибо.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!