IPB


Бесплатные VPN сервера

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

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

>> !!Ответы на 90% вопросов здесь!! <<


Правила хостинга | Общие ошибки новичков | Поиск

 
Тема закрытаНачать новую тему
Изменить данные в одном из полей MySQL
vit9696
сообщение 22.7.2011, 12:08
Сообщение #1


"User friendly"
*******

Группа: Пользователи
Сообщений: 1161
Регистрация: 9.10.2010
Из: Москва
Пользователь №: 1840



Собствено есть таблица в БД с юзерами. (ibf_members) требуется изменить значения поля password у каждого юзера в
Код
md5( исходное_значение ) + md5 (salt) )

Начал писать скрипт:
Код
// Root path
define( 'ROOT_PATH', "./" );

# Получить значения переменных из конфигурационного файла
include(ROOT_PATH.'conf_global.php');

# Подключиться к базе данных
echo "<br />Подключение к серверу MySQL...";

//DB Driver load...
$INFO['sql_driver'] = !$INFO['sql_driver'] ? 'mySQL' : $INFO['sql_driver'];
$to_require = ROOT_PATH."sources/Drivers/".$INFO['sql_driver'].".php";
require ($to_require);
$DB = new db_driver;
$DB->obj['sql_database']     = $INFO['sql_database'];
$DB->obj['sql_user']         = $INFO['sql_user'];
$DB->obj['sql_pass']         = $INFO['sql_pass'];
$DB->obj['sql_host']         = $INFO['sql_host'];
$DB->obj['sql_tbl_prefix']   = $INFO['sql_tbl_prefix'];
$DB->obj['debug']            = ($INFO['sql_debug'] == 1) ? $_GET['debug'] : 0;
// Get a DB connection
$DB->connect();
//DB Driver load... OK!
echo "<br />Подключение к серверу MySQL...ОК!";

$DB->query("SELECT id,password FROM ibf_members;");

while ( $row = $DB->fetch_row() ) {
    $password = md5 ( $row['password'] + md5 ( $INFO['password_salt'] ) );
    $DB->query("UPDATE ibf_members SET password = '" . $password . "' WHERE id = '" . $row['id'] . "';");
}

Код
    function fetch_row($query_id = "") {
    
        if ($query_id == "")
        {
            $query_id = $this->query_id;
        }
        
        $this->record_row = mysql_fetch_array($query_id, MYSQL_ASSOC);
        
        return $this->record_row;
        
    }

Вроде написал, запускаю - получаю
Код
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Server\www\**.***.*.**\public_html\IPB\sources\Drivers\mySQL.php on line 220

Уже несколько часов ковыряюсь, не могу понять в чем дело, у кого-нибудь есть идеи?


--------------------
С уважением, vit9696. Перед созданием темы или при ответе в тему, пожалуйста, обратите внимание на Правила форума.

Убедительная просьба в ЛС по вопросам хостинга не писать, т.к. я его покинул.
Перейти в начало страницы
 
+Цитировать сообщение
vit9696
сообщение 22.7.2011, 21:20
Сообщение #2


"User friendly"
*******

Группа: Пользователи
Сообщений: 1161
Регистрация: 9.10.2010
Из: Москва
Пользователь №: 1840



Проблема решена благодаря Горбушке - спасибо.


--------------------
С уважением, vit9696. Перед созданием темы или при ответе в тему, пожалуйста, обратите внимание на Правила форума.

Убедительная просьба в ЛС по вопросам хостинга не писать, т.к. я его покинул.
Перейти в начало страницы
 
+Цитировать сообщение
Горбушка
сообщение 25.7.2011, 16:48
Сообщение #3


Ректор
**********

Группа: Пользователи
Сообщений: 8994
Регистрация: 3.3.2008
Из: Москва/Россия
Пользователь №: 42
Домен: m-v-l.org


Преобразуем md5(пароль) в md5(md5(пароль).соль)
Код
<?php

//Функция для генерации соли
function generateSalt() {
    $salt = '';
    $length = rand(5,10); // длина соли (от 5 до 10 сомволов)
    for($i=0; $i<$length; $i++) {
         $salt .= chr(rand(33,126)); // символ из ASCII-table
    }
    return $salt;
}

//Данные для подключению в MySQL
$dbhost = ''; //Хост или IP MySQL
$dbuser = ''; //Пользователь
$dbpass = ''; //Пароль
$dbname = ''; //Название базы

//Подключаемся к MySQL
$db = mysql_connect($dbhost, $dbuser, $dbpass) or die('Ошибка подключения к MySQL');

//Выбираем БД
mysql_select_db($dbname, $db);

//Делаем выборку всех пользователей из таблицы user
$result = mysql_query('SELECT * FROM user', $db);

//Делаем обработку в цикле, пока не обработаем всех пользователей
while ($row = mysql_fetch_array($result)) {
    
    //Проверяем, не создана ли уже соль
    if ($row['salt'] == "") {
        $salt = generateSalt();
        $pass = md5($row['pass'] . $salt);
        mysql_query("UPDATE `user` SET pass = '".$pass."', salt = '".$salt."' WHERE id = '".$row['id']."'");
        echo $row['id'] .' - Выполнено <br />';
    }
    else {
        echo $row['id'] .' - Соль уже сгенерирована <br />';
    }
}
?>


--------------------
Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
Перейти в начало страницы
 
+Цитировать сообщение
Гад
сообщение 25.7.2011, 17:02
Сообщение #4


Охранник
********

Группа: root
Сообщений: 3514
Регистрация: 22.2.2010
Из: Казань
Пользователь №: 1113
Домен: for-us.nl


Цитата(Горбушка @ 25.7.2011, 18:01) *
Код
$length = rand(5,7); // длина соли (от 5 до 10 сомволов)

разве это не генерация числа от 5 до 7ми включительно? (т.е. 5,6 или 7)


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
Горбушка
сообщение 25.7.2011, 17:07
Сообщение #5


Ректор
**********

Группа: Пользователи
Сообщений: 8994
Регистрация: 3.3.2008
Из: Москва/Россия
Пользователь №: 42
Домен: m-v-l.org


Упс... Очепятка..


--------------------
Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
Перейти в начало страницы
 
+Цитировать сообщение
vit9696
сообщение 25.7.2011, 20:28
Сообщение #6


"User friendly"
*******

Группа: Пользователи
Сообщений: 1161
Регистрация: 9.10.2010
Из: Москва
Пользователь №: 1840



P.S. У меня немного другой был случай, потому соль генерится так:
Код
    $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    $numChars = strlen($chars);
    $length = 32;
    $string = '';
    for ($i = 0; $i < $length; $i++) {
        $string .= substr($chars, rand(1, $numChars) - 1, 1);
    }

© может кому надо....


--------------------
С уважением, vit9696. Перед созданием темы или при ответе в тему, пожалуйста, обратите внимание на Правила форума.

Убедительная просьба в ЛС по вопросам хостинга не писать, т.к. я его покинул.
Перейти в начало страницы
 
+Цитировать сообщение

Тема закрытаНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 18.9.2019, 10:14