Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Проблемы с авторизацией.


Автор: dixoNICH 26.7.2011, 20:51
Подключение к БД.
Код

<?php
    //bd.php
    $db = mysql_connect("localhost", "root", "");
    mysql_select_db("usu",$db);
?>

Ввод логина/пароля.
Код

//index.php
<?php
    session_start();
?>
    <html>
    <head>
    <title>Главная страница</title>
    </head>
    <body>
    <h2>Главная страница</h2>
    <form action="testreg.php" method="post">
 <p>
    <label>Ваш логин:<br></label>
    <input name="login" type="text" size="15" maxlength="15">
    </p>
    <p>

    <label>Ваш пароль:<br></label>
    <input name="password" type="password" size="15" maxlength="15">
    </p> 
    <p>
    <input type="submit" name="submit" value="Войти">
<br>
    </p></form>
    <br>
<?php
    if (empty($_SESSION['login']) or empty($_SESSION['id'])) {
    echo "Вы вошли на сайт, как гость<br><a href='#'>Эта ссылка  доступна только зарегистрированным пользователям</a>";
    }
    else
    {
    echo "Вы вошли на сайт, как ".$_SESSION['login']."<br><a  href='http://tvpavlovsk.sk6.ru/'>Эта ссылка доступна только  зарегистрированным пользователям</a>";
    }
?>
    </body>
    </html>


Проверка.
Код

//testreg.php
<?php
    session_start();
if (isset($_POST['login'])) {
    $login = $_POST['login']; 
    if ($login == '') { 
        unset($login);
    } 

    if (isset($_POST['password'])) { 
        $password=$_POST['password']; 
        if ($password =='') { 
        unset($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");
    $result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); 
    $myrow = mysql_fetch_array($result,MYSQL_BOTH);
    if (empty($myrow['password']))
    {
        exit ("Извините, введённый вами login или пароль неверный.");
    }
    else {
        if ($myrow['password']==$password) {
                $_SESSION['login']=$myrow['login']; 
                $_SESSION['id']=$myrow['id'];
                echo "Вы успешно вошли на сайт! <a href='index.php'>Главная страница</a>";
             }
             else {
                exit ("Извините, введённый вами login или пароль неверный.");
             }
    }
?>

в таблице БД 3 поля и 2 пользователя.


    id    login    password 
     1    usu    usu
     2    admin    admin
ввожу логин/пароль, мне выдаёт
Цитата

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\testreg.php on line 26
Извините, введённый вами login или пароль неверный.


Не подскажете, в чём проблема?

Автор: CruorVult 27.7.2011, 09:58
Код

$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db) or die(mysql_error());


что будет?

Автор: dixoNICH 28.7.2011, 13:30
Цитата(CruorVult @ 27.7.2011,  09:58)
Код

$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db) or die(mysql_error());


что будет?

Извлекаем из базы все данные о пользователе с введенным логином.

Автор: CruorVult 28.7.2011, 13:51
Я про
Цитата(dixoNICH @  28.7.2011,  13:30 Найти цитируемый пост)
or die(mysql_error())


Все чисто выполняется?

в переменную $result скорей всего записывается значение false, как результат неудачного запроса. Либо в самом запросе проблема либа в коннекте с БД.

Автор: dixoNICH 28.7.2011, 14:07
"Table 'usu.users' doesn't exist"

как-то странно, потому что таблица, вроде, есть.

Автор: CruorVult 28.7.2011, 14:10
может базы usu нету?

попробуйте 
Код

or die(mysql_error())

и для коннекта

Автор: dixoNICH 28.7.2011, 14:19
с коннектом всё хорошо, ничего не выводит.
Код

 if(!$db) echo "Error";

и так ничего не вывело

Автор: CruorVult 28.7.2011, 14:50
Код

 mysql_select_db("usu",$db);


тоже?

тут 2 варианта, либо не подключили БД либо нету таблицы в выбраной БД

Автор: dixoNICH 28.7.2011, 15:28
Код

Таблица `kvm.math`.`kvm_table` была создана.
CREATE TABLE `kvm.math`.`kvm_table` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`login` VARCHAR( 15 ) NOT NULL ,
`password` VARCHAR( 15 ) NOT NULL ,
INDEX ( `password` ) ,
UNIQUE (
`login` 
)
) ENGINE = InnoDB;


Код

mysql_select_db("kvm.math",$db) or die(mysql_error());


Цитата

Table 'kvm.math.users' doesn't exist

Автор: CruorVult 28.7.2011, 15:31
Цитата(dixoNICH @  28.7.2011,  15:28 Найти цитируемый пост)
Таблица `kvm.math`.`kvm_table` была создана


Цитата(dixoNICH @  28.7.2011,  15:28 Найти цитируемый пост)
Table 'kvm.math.users' doesn't exist



так всё правильно

Автор: dixoNICH 28.7.2011, 15:42
не понял Вас smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)