SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.04.2014 19:06:24

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

соединение с базой

есть необходимость запаролить страницу, нашел вот такой код

// Подключаемя к базе
    $link = mysqli_connect('localhost', 'root', '', 'baze')
                           or die('No connect');
///////////////////////////////////////////////////
 
    if(empty($_SERVER['PHP_AUTH_USER']))
    {
        header('WWW-Authenticate: Basic realm="Administrative resource"');
        header("HTTP/1.0 401 Unauthorised");
        exit();  
    }

    $res = mysqli_query($link,
             "SELECT COUNT(*) AS `cnt` FROM `admin_enter`
              WHERE `user` = '"
. mysqli_real_escape_string($link,
                                       $_SERVER['PHP_AUTH_USER']) ."'  
              AND   `password` = '"
. md5($_SERVER['PHP_AUTH_PW']) ."'"
                         );
 
    $data = mysqli_fetch_assoc($res);

    if (empty($data['cnt']))
    {
        header('WWW-Authenticate: Basic realm="Administrative resource"');
        header ("HTTP/1.0 401 Unauthorized");
        exit();
    }


все работает нормально, но у меня есть код подключения к базе, который я использовал ранее для подключения к базе

$link = mysql_connect ("localhost","root","");
mysql_select_db ("baze",$link);


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

Неактивен

 

#2 13.04.2014 19:08:09

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: соединение с базой

mysqli_query и mysqli_fetch_assoc замените на mysql_query и mysql_fetch_assoc

Неактивен

 

#3 13.04.2014 21:35:17

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: соединение с базой

rgbeast написал:

mysqli_query и mysqli_fetch_assoc замените на mysql_query и mysql_fetch_assoc

не получилось, я вообще так уже пробовал...
а mysqli_real_escape_string не нужно ни на что менять?

Неактивен

 

#4 13.04.2014 23:09:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: соединение с базой

Да, все заменить. А какая ошибка? Обработку ошибок добавьте:

$res = mysqli_query(..) or die(mysql_error());

Неактивен

 

#5 13.04.2014 23:44:45

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: соединение с базой

// Подключаемя к базе
$link = mysql_connect ("localhost","root","");
mysql_select_db ("baze",$link);
///////////////////////////////////////////////////
 
    if(empty($_SERVER['PHP_AUTH_USER']))
    {
        header('WWW-Authenticate: Basic realm="Administrative resource"');
        header("HTTP/1.0 401 Unauthorised");
        exit();  
    }

    $res = mysql_query($link,
             "SELECT COUNT(*) AS `cnt` FROM `admin_enter`
              WHERE `user` = '"
. mysql_real_escape_string($link, $_SERVER['PHP_AUTH_USER']) ."' AND `password` = '". md5($_SERVER['PHP_AUTH_PW']) ."'") or die(mysql_error());
 
    $data = mysql_fetch_assoc($res);

    if (empty($data['cnt']))
    {
        header('WWW-Authenticate: Basic realm="Administrative resource"');
        header ("HTTP/1.0 401 Unauthorized");
        exit();
    }


вот написал, выдает ошибки
Warning: mysql_real_escape_string() expects parameter 1 to be string, resource given in Z:\home\site\www\lock.php on line 16
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in Z:\home\site\www\lock.php on line 16

Отредактированно serj011 (14.04.2014 01:53:35)

Неактивен

 

#6 14.04.2014 00:21:25

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: соединение с базой

у mysql_real_escape_string, в отличие от mysqli, $link - второй параметр
Сравните:
http://www.php.net/manual/ru/function.m … string.php
http://ru2.php.net/mysqli_real_escape_string

Неактивен

 

#7 14.04.2014 01:59:16

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: соединение с базой

спасибо rgbeast, работает. а в чем вообще отличие mysql от mysqli?
по вашему мнению такая конструкция защиты вообще надежна?

Неактивен

 

#8 15.04.2014 17:53:13

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: соединение с базой

В mysqli есть поддержка prepared statements, транзакций, но вообще говоря все это делается средствами SQL.

Я вот такой способ рекомендую: http://webew.ru/articles/3237.webew

WWW-аутентификация безопасна на том же уровне, на котором безопасны другие способо авторизации по имени/паролю без HTTPS. См. комменты к статье: http://www.php.net/manual/en/features.http-auth.php

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson