To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

Archiwum - Bezpieczne logowanie - unikalny login

kevin_ - 19-02-2011, 13:23

a spróbuj:
Kod:

if ( $userdata['username'] == $username )
na
if ( $userdata['username'] == $username AND $_GET['mode'] != 'register' )

strzelba - 25-02-2011, 18:33

hm wg mnie to wogole nie działa ta jaki i wcześniejsza wersja

no chyba ze w złym miejscu to wstawiam

robertrobson - 27-02-2011, 23:51

Czy w ogóle ta modyfikacja komuś działa? Ja to zainstalowałem i nie mogę się zalogować po nowym loginie a tylko po starym. Oczywiście opcja wyłączająca logowanie się po starym nicku jest odznaczona. Zapytanie do bazy wykonane. Pliki sprawdzałem kilkakrotnie i nie chce to działać...
Mam wątpliwości co do tego:
Kod:
#
#-----[ OPEN ]------------------------------------------
#

./includes/functions_validate.php

#
#-----[ ADD ]------------------------------------------
#

function validate_loginname($username)
{
    global $db, $lang, $userdata;
   
    // Niedozwolone znaki
    if (strstr($username, '"') || strstr($username, '&') || strstr($username, chr(160)) || strstr($username, chr(173)) || strstr($username, '  ') || strstr(stripslashes($username), '\\') || strstr(stripslashes($username), '%')  )
    {
        return array('error' => true, 'error_msg' => $lang['k_loginLang_10']);
    }

    $username = phpbb_clean_username($username);
   
    $sql = "SELECT user_loginname
        FROM " . USERS_TABLE . "
        WHERE LOWER(user_loginname) = '" . strtolower($username) . "'";
    if ($result = $db->sql_query($sql))
    {
        while ($row = $db->sql_fetchrow($result))
        {
            if (($userdata['session_logged_in'] && $row['user_loginname'] != $userdata['user_loginname']) || !$userdata['session_logged_in'])
            {
                $db->sql_freeresult($result);
                return array('error' => true, 'error_msg' => $lang['k_loginLang_11']);
            }
        }
    }
    $db->sql_freeresult($result);

    return array('error' => false, 'error_msg' => '');
#
#-----[ OPEN ]------------------------------------------
#

./templates/<styl>/overall_header.tpl

#
#-----[ ADD ]------------------------------------------

# Komunikat, jeśli ktoś NIE ma ustawionego loginu, wstaw gdziekolwiek
# np. po <!-- END switch_enable_board_msg -->

<!-- IF S_LOGIN_MOD -->
<br />
<span class="genmall" style="font-weight: bold; color: #ff0000; width: 100%;">{S_LOGIN_MOD_LANG}</span>
<!-- ENDIF -->

#
#-----[ OPEN ]------------------------------------------
#

./language/lang_polish/lang_admin.php

#
#-----[ ADD ]------------------------------------------
#

$lang['k_loginLang_3']        =    'Wł&#177;cz modyfikację bezpiecznego logowania?';
$lang['k_loginLang_4']        =    'Zezwól na logowanie za pomoc&#177; nazwy użytkownika';
$lang['k_loginLang_9']        =    'Zezwól na zmianę loginu podczas edycji profilu';

#
#-----[ OPEN ]------------------------------------------
#

./language/lang_polish/lang_main.php

#
#-----[ ADD ]------------------------------------------
#

$lang['k_loginLang_1']        =    'Loguj na nazwę użytkownika';
$lang['k_loginLang_2']        =    'Login';
$lang['k_loginLang_5']        =    'W systemie nie istnieje użytkownik: <b>%s</b><br /><em>Administrator wymaga logowania za pomoc&#177; Loginów wpisanych podczas rejestracji (nie "Nazwa użytkownika")</em>';
$lang['k_loginLang_6']        =    'Adres email, który podał' .  (($he) ? 'e' : 'a') . '&#182; nie pasuje do zapisanego razem z baz&#177; danych<br /><em>Przypominamy, że logujemy się za pomoc&#177; Loginu, nie za pomoc&#177; danych użytych w "Nazwa użytkownika"</em>';
$lang['k_loginLang_7']        =    'Witaj,<br />Administrator forum wymaga <a href="%s">edycji profilu</a> w celu wpisania <b>LOGINU</b> potrzebnego od dzi&#182; do logowania.<br />Nie uaktualnienie profilu może zakończyć się problemami z logowaniem.';
$lang['k_loginLang_8']        =    'Nazwa użytkownika (do logowania)';
$lang['k_loginLang_10']        =    'Nazwa loginu nie może zawierać znaków takich jak <b>< > " & \ %</b> oraz podwójnej spacji';
$lang['k_loginLang_11']        =    'Ta nazwa loginu jest już zajęta';
}


Nie pisze w tych kilku przypadkach dokładnie, w którym miejscu to dodać. Dodałem to na koniec każdego skryptu. Może dlatego coś nie trybi?

kevin_ - 28-02-2011, 13:57

takich duperelek w przypadku CSS/Langów (czyli znajdź coś, dodaj po) nie piszę bo to nie ma większego znaczenia gdzie ma to być - ważne aby było.

jeśli chodzi o sam całokształt moda - W sumie proponowałbym usunięcie tego moda z gotowych, a unikalne logowanie oprzeć na adresie e-mail - mniej szkód, a powinno bezproblemowo działać dla każdego.

robertrobson - 09-03-2011, 09:40

kevin_, Zmieniłem specjalnie nawet styl do forum i nic to nie pomogło. A propos logowania po email; może kolega przerobił by to aby w ten sposób działało?
qrka - 12-03-2011, 21:17

U mnie działa

[ Dodano: 12-03-2011, 21:20 ]
kevin_ napisał/a:
a spróbuj:
Kod:

if ( $userdata['username'] == $username )
na
if ( $userdata['username'] == $username AND $_GET['mode'] != 'register' )


niestety dalej to samo :(

[ Dodano: 17-03-2011, 13:20 ]
Jest jeszcze jeden problem dla mniej "kumatych"
podczas logowania widac napis Nazwa użytkownika zamiast Login
i nick zamiast login
jest szansa to zmienic?
szukam gdzie to jest ale znalezc nie moge :(

[ Dodano: 17-03-2011, 13:20 ]
Jest jeszcze jeden problem dla mniej "kumatych"
podczas logowania widac napis Nazwa użytkownika zamiast Login
i nick zamiast login
jest szansa to zmienic?
szukam gdzie to jest ale znalezc nie moge :(

mr.czikopl - 26-07-2011, 13:48

co teraz zrobić? nie mogę się zalogować na admina, pomocy

[ Dodano: 26-07-2011, 13:49 ]
W systemie nie istnieje użytkownik: xxx
i jak teraz zalogować sie na admina?
czy ludzie beda musieli robic nowe konta ?

kevin_ - 26-07-2011, 19:35

Proszę o wycofanie tej tej modyfikacji z listy. Większy sens tej modyfikacji byłby, gdybyśmy logowali się za pomocą adres e-mail, który jest już unikalny w bazie - więc zbędne jest tworzenie/mieszanie w plikach/bazie. Dodatkowo można takie pole rozbić na dwa inputy (email | @ | domena - powinno również pomóc w zabezpieczeniu przed botami na krótszą metę, aż złamią oczywiście :mrgreen: )

Jeśli chodzi o przypadek mr.czikopl. Wejdź do phpMyAdmina i wykonaj takie zapytania:
Kod:

update phpbb_config set config_value = '0' where config_name = ''securelogin_enable';


później wejdź do folderu cache (na ftp) i usuń plik board_config - niech na nowo Ci się utworzy i załaduje nowe ustawienia. Będziesz mógł zalogować się do ACP.

pozdro

Ciampel - 03-02-2012, 18:19

dodałem wszystko jak w instrukcji, gdy chce wejść do PA wychodzi błąd

Kod:


Error in obtaining userdata

DEBUG MODE

SQL Error : 1054 Nieznana kolumna 'user_loginname' w field list

SELECT user_id, user_loginname, username, user_password, user_email, user_active, user_actkey, user_lastvisit, user_level, user_badlogin, user_blocktime, user_email, user_lang, user_timezone FROM phpbb_users WHERE username = 'Ciampel'

Line : 214
File : login.php

Jeśli nie potrafisz znaleźć rozwiązania tego problemu,
możesz spróbować poszukać, lub zadać pytanie na forum: http://www.przemo.org/phpBB2/

Majkelo - 03-02-2012, 18:19

Nie wykonałeś zapytania SQL.
Ciampel - 03-02-2012, 18:21

wykasowałem plik board_config.php

[ Dodano: 03-02-2012, 19:18 ]
po zapytaniu wyskoczyło takie cos

Kod:
#1064 - Something is wrong in your syntax obok 'securelogin_enable'' w linii 1


[ Dodano: 03-02-2012, 19:30 ]
był tam mały błąd w kodzie co kolega wyżej napisał ale po wykonaniu zapytanie wyszło

Zmodyfikowanych rekordów: 0. ( Wykonanie zapytania trwało 0.0002 sekund(y) )



Powered by phpBB modified by Przemo © 2003 phpBB Group