Strona 5 z 6

: 27 października 2011, 08:20
autor: LordRuthwen
Widziałem :)
Takie zapytanie zwróciło 0.

: 27 października 2011, 09:32
autor: Bastian
No jak? Wynik aktualizacji 0 to nie błąd, tylko znaczy, że nie znalazł pasującego rekordu.

: 27 października 2011, 09:46
autor: LordRuthwen
A, nie, przepraszam, inne poprawiałem ten zwraca 1. :)

: 27 października 2011, 10:10
autor: Bastian
No to teraz pokaz spróbuj się zalogować z nowym hasłem przez aplikację. Sprawdzimy, czy przyjmuje takie hasła, jeśli tak, to jesteśmy w domu i jeszcze dzisiaj masz skrypt gotowy.

: 27 października 2011, 10:19
autor: LordRuthwen
Niestety nie mogę się zalogować.

: 27 października 2011, 10:34
autor: Bastian
To kiepsko. Trzeba zatem wrócić do porady lessmiana2 i sprawdzić w jaki sposób robi to mysql (pewnie z saltem jak znam życie). Wklej kod tej funkcji myslqa, zobaczę co tam siedzi.

: 27 października 2011, 12:43
autor: LordRuthwen
Oj, żebym to ja wiedział gdzie to siedzi w tych plikach...
http://trac.roundcube.net/browser/trunk ... s/password

: 27 października 2011, 13:45
autor: Bastian
A w tej bazie Mysql nie mozesz podpatrzeć procedury?

: 27 października 2011, 14:05
autor: LordRuthwen
Spróbuję na innym popatrzeć, moment, dłuższy moment...

Dodane:
To by było chyba to:

Kod: Zaznacz cały

CREATE FUNCTION update_password (oldpass text, cryptpass text, user text) RETURNS text
            MODIFIES SQL DATA
        BEGIN
            DECLARE currentsalt varchar(20);
            DECLARE error text;
            SET error = 'incorrect current password';
            SELECT substring_index(substr(user.password,4),_latin1'$',1) INTO currentsalt FROM users WHERE username=user;
            SELECT '' INTO error FROM users WHERE username=user AND password=ENCRYPT(oldpass,currentsalt);
            UPDATE users SET password=cryptpass WHERE username=user AND password=ENCRYPT(oldpass,currentsalt);
            RETURN error;
        END

: 28 października 2011, 12:03
autor: Bastian

Kod: Zaznacz cały

CREATE FUNCTION update_password (oldpass text, cryptpass text, user text) RETURNS text AS '
        BEGIN
            DECLARE currentsalt varchar(20);
            DECLARE error text;
            SET error = 'incorrect current password';
            SELECT substring_index(substr(user.password,4),_latin1'$',1) INTO currentsalt FROM users WHERE username=user;
            SELECT '' INTO error FROM users WHERE username=user AND password=ENCRYPT(oldpass,currentsalt);
            UPDATE users SET password=cryptpass WHERE username=user AND password=ENCRYPT(oldpass,currentsalt);
            RETURN error;
        END; '  language 'SQL';