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

1.12.7 i starsze - AJAX Weryfikacja nazwy u?ytkownika

sebonpl - 19-11-2006, 14:54
Temat postu: AJAX Weryfikacja nazwy użytkownika
AJAX Weryfikacja nazwy użytkownika

Modyfikacja sprawdza dostępność nazwy użytkownika podczas rejestracji bez przeładowania strony

Kod:
##############################################################
## Nazwa Modyfikacji: AJAX Weryfikacja nazwy użytkownika
## Autor Modyfikacji: adrien < webmaster@pc-facile.com > http://www.pc-facile.com
## Dostosował dla phpBB by Przemo: SeBoN < sebonpl@gmail.com > http://www.vista.skazzza.pl
## MOD Description: Modyfikacja sprawdza dzięki AJAX dostępność nazwy użytkownika podczas rejestracji.
## Wersja Modyfikacji: 0.9.1
##
## Trudność Wgrania: Łatwe
## Czas instalacj: 10 minut
## Pliki do edycji: profile.php,
##                       includes/usercp_register.php,
##                       lang_main.php
##                       templates/SubSilver/profile_add_body.tpl
##
## pliki do wgrania: class.sajax.php
##############################################################


Co modyfikacja potrafi?
:arrow: Modyfikacja sprawdza dostępność nazwy użytkownika podczas rejestracji bez przeładowania strony.

noker - 07-03-2007, 15:24

coś nie bangla ten mod
Kod:
[Error:
name: SyntaxError
message: Statement on line 107: Syntax error in call to eval: line 1 :
--]>--><noscript onclick="''"></noscript><script type="text/
----^
Backtrace:
  Line 107 of inline#2 script in http://noker.cba.pl/phpBB2/profile.php
    alert(e + ": Could not eval " + data);
  At unknown location
    [statement source code not available]

]: Could not eval --]>--><noscript onclick="''"></noscript><script type="text/javascript" src="http://a.cba.pl/cba1.js"></script><!--]>--><noscript onclick="''"></noscript><script type="text/javascript" src="http://a.cba.pl/cba1.js"></script>+:var res = { 0: 'no', 2: 'nokeradm007', 3: 'nokeradm1', 4: 'nokeradmx', 5: 'nokeradmxxx', 6: 'nokeradm2000', 7: 'nokeradm2007', 1: parseInt(7) }; res;<!--]>--><noscript onclick="''"></noscript><script type="text/javascript" src="http://cba.pl/cba2.js"></script><!--]>--><noscript onclick="''"></noscript><script type="text/javascript" src="http://cba.pl/cba2.js"></script>

Przemek211 - 07-03-2007, 19:13

Cytat:
[ Znajdź ]------------------------------------------
#
includes/usercp_register.php

#
#-----[ Po tym dodaj ]------------------------------------------
#
'S_FORM_ENCTYPE' => $form_enctype,
'S_PROFILE_ACTION' => append_sid("profile.$phpEx"))
);

#
#-----[ Po tym dodaj ]------------------------------------------
#
$template->assign_vars(array(
'L_USERNAME_AVAILABLE' => $lang['Username_available'],
'L_VERIFY_USERNAME' => $lang['Verify_username'],
'TRY_ONE_OF_THESE' => $lang['Try_one_these'],
'SAJAX_JAVASCRIPT' => sajax_get_javascript()
));

po tym dodaj po tym dodaj to co mam dodać na końcu pliku? z tego co wiem to byłoby to nie prawidłowe. proszę pomóżcie nie znam się na hackowaniu phpbb

Radek - 07-03-2007, 19:21

Przemek211 napisał/a:
hackowaniu

bo nie jesteś hakerem :D

wnioskuję, że zamiast pierwszego Po tym dodaj, powinno być Znajdź

Przemek211 - 07-03-2007, 19:26

No znajdź dzięki, już sobie poradziłem po prostu we frontpage wpisałem to całe i źle skopiowało i nie znalazło i... ale potem wpisałem kawałek i znalazło :P
teraz mam problem, bo wyświetla sprawdź dostępno¶ć wejdź na link i tam będzie. tak samo:
Nazwa użytkownika niedostępna.Wybierz z listy lub wymy¶l nowy.
mogę jakoś naprawić to kodowanie żeby było ś?

Dancan - 09-03-2007, 00:42

mała poprawka dla mniej kumatych ;)

Kod:
#
#-----[ Kopiuj ]------------------------------------------
#
# Plik znajduje się w załączniku
#
copy class.sajax.php to includes/class.sajax.php

#
#-----[ Otwórz ]------------------------------------------
#
profile.php

#
#-----[ Znajdź ]------------------------------------------
#
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

#
#-----[ Po tym dodaj ]------------------------------------------
#
include($phpbb_root_path . 'includes/class.sajax.'.$phpEx);

sajax_init(); // Intialize Sajax
sajax_export("check_user_exist"); // Register the function
sajax_handle_client_request(); // Serve client instances

#
#-----[ Znajdź ]------------------------------------------
#
redirect(append_sid("index.$phpEx", true));

#
#-----[ Po tym dodaj ]------------------------------------------
#
function check_user_exist ($username)
{
    global $db;

    // Make a list of words to postfix on username for suggest
    $suggest = array('007', '1', 'x', 'xxx', '2000', '2007');

    $username = mysql_escape_string ($username);
    $sql = "SELECT username FROM " . USERS_TABLE . " WHERE username = '" . $username . "'";
    if (!($result = $db->sql_query($sql)))
    {
        message_die(GENERAL_ERROR, 'Could not obtain confirmation code', __LINE__, __FILE__, $sql);
    }

    $list = array();
    while ( $row = $db->sql_fetchrow($result) )
    {
        $list[] = $row;
    }
    $db->sql_freeresult($result);

    if ( count ($list) > 0)
    {
        // Username not available
        $avail[0] = 'no';
        $i = 2;
        // Loop through suggested ones checking them
        foreach ($suggest AS $postfix)
        {
            $sql = "SELECT username FROM " . USERS_TABLE . " WHERE username = '" . $username . $postfix . "'";
            if (!($result_2 = $db->sql_query($sql)))
            {
                message_die(GENERAL_ERROR, 'Could not obtain confirmation code', __LINE__, __FILE__, $sql);
            }

            $user = $db->sql_fetchrow($result_2);

            if ( empty ($user) )
            {
                $avail[$i] = $username . $postfix;
                $i++;
            }
        }
        $avail[1] = $i - 1;
        return ($avail);
    }
    // Username is available
    return array('yes');
}

#
#-----[ Otwórz ]------------------------------------------
#
includes/usercp_register.php

#
#-----[ Znajdź ]------------------------------------------
#
        'S_FORM_ENCTYPE' => $form_enctype,
        'S_PROFILE_ACTION' => append_sid("profile.$phpEx"))
    );
   
#
#-----[ Po tym dodaj ]------------------------------------------
#
    $template->assign_vars(array(
        'L_USERNAME_AVAILABLE' => $lang['Username_available'],
        'L_VERIFY_USERNAME' => $lang['Verify_username'],
        'TRY_ONE_OF_THESE' => $lang['Try_one_these'],
        'SAJAX_JAVASCRIPT' => sajax_get_javascript()
    ));

#
#-----[ Otwórz ]------------------------------------------
#
language/lang_xxx/lang_main.php

#
#-----[ Znajdź ]------------------------------------------
#
$lang['Empty_subject_email'] = 'Musisz okre&#182;lić temat dla email\'a';
$lang['Empty_message_email'] = 'Musisz wpisać wiadomo&#182;ć do wysłania';

#
#-----[ Po tym dodaj ]------------------------------------------
#
$lang['Verify_username'] = "Sprawdz Dostępno&#182;ć";
$lang['Username_available'] = "Nazwa użytkownika dostępna.";
$lang['Try_one_these'] = "Nazwa użytkownika niedostępna.Wybierz z listy lub wymy&#182;l nowy.";

#
#-----[ Otwórz ]------------------------------------------
#
templates/SubSilver/profile_add_body.tpl

#
#-----[ Znajdź ]------------------------------------------
#
<form action="{S_PROFILE_ACTION}" {S_FORM_ENCTYPE} method="post">

#
#-----[ Po tym dodaj ]------------------------------------------
#
<script type="text/javascript">

{SAJAX_JAVASCRIPT}

function check_handle(result) {
    if(result[0] == 'yes') {
        document.getElementById('not_available').style.display = 'none';
        document.getElementById('available').style.display = 'block';
    }
    else {
        document.getElementById('available').style.display = 'none';
        document.getElementById('not_available').style.display = 'block';
        var str = '{TRY_ONE_OF_THESE} <br />';
        for(i = 1; i < result[1]; i++) {
            str += "<input type=\"radio\" name=\"try\" onclick=\"switch_username('"+result[i+1]+"')\"/>" + result[i+1] + "<br />";
        }
        document.getElementById('not_available').innerHTML = str;
    }
}

function check_user_exist() {
    var username = document.getElementById('username').value;
    x_check_user_exist(username, check_handle);
}

function switch_username(username) {
    document.getElementById('username').value = username;
}
</script>

<style type="text/css">
#available {
    display: none;
    color: green;
}
#not_available {
    display: none;
    color: red;
}
</style>

#
#-----[ Znajdź ]------------------------------------------
#
    <tr>
        <td class="row1" width="38%"><span class="gen">{L_USERNAME}: *</span></td>
        <td class="row2"><input type="text" class="post" onFocus="Active(this)" onBlur="NotActive(this)" style="width:200px" name="username" size="25" maxlength="15" value="{USERNAME}" /></td>
    </tr>

#
#-----[ Zamień na ]------------------------------------------
#
    <tr>
        <td class="row1" width="38%" valign="top"><span class="gen">{L_USERNAME}: *</span></td>
        <td class="row2"><input type="text" class="post" style="width:200px" name="username" size="25" maxlength="25" value="{USERNAME}" id="username" />  <input type="button" name="check" value="{L_VERIFY_USERNAME}" onclick="check_user_exist(); return false;">
        <span class="gen"><div id="available">{L_USERNAME_AVAILABLE}</div></span>
        <span class="gen"><div id="not_available"></div></span></td>
    </tr>

#
#-----[ Zapisz wszystko ]------------------------------------------
#
# EoM

nitro18 - 23-03-2007, 17:22

A ja znalazłem II sposób na szybkie autosprawdzanie bez klikania w guzik.

Roimy tak jak w instrukcji powyżej ale

to:

Kod:
    <tr>
        <td class="row1" width="38%"><span class="gen">{L_USERNAME}: *</span></td>
        <td class="row2"><input type="text" class="post" onFocus="Active(this)" onBlur="NotActive(this)" style="width:200px" name="username" size="25" maxlength="15" value="{USERNAME}" /></td>
    </tr>



zamieniamy na:


Kod:
<tr>
        <td class="row1" width="38%" valign="top"><span class="gen">{L_USERNAME}: *</span></td>
        <td class="row2"><input type="text" class="post" style="width:200px" name="username" size="25" maxlength="25" value="{USERNAME}" id="username" onchange="check_user_exist(); return false;">
        <span class="gen"><div id="available">{L_USERNAME_AVAILABLE}</div></span>
        <span class="gen"><div id="not_available"></div></span></td>
    </tr>

Przemek211 - 09-04-2007, 17:41

No tak, ale wtedy kiedy wpiszemy dobrą nazwę to już nie wyświetla, że jest ok, masz na to sposób?
mck1964 - 09-04-2007, 23:39

sebonpl napisał/a:
#-----[ Znajdź ]------------------------------------------
#
includes/usercp_register.php

#
#-----[ Po tym dodaj ]------------------------------------------
#
'S_FORM_ENCTYPE' => $form_enctype,
'S_PROFILE_ACTION' => append_sid("profile.$phpEx"))
);

#
#-----[ Po tym dodaj ]------------------------------------------
#
$template->assign_vars(array(
'L_USERNAME_AVAILABLE' => $lang['Username_available'],
'L_VERIFY_USERNAME' => $lang['Verify_username'],
'TRY_ONE_OF_THESE' => $lang['Try_one_these'],
'SAJAX_JAVASCRIPT' => sajax_get_javascript()
));


w zasadzie to szczegol.. ale powinno byc tak:


Kod:
#-----[ Otwórz]------------------------------------------
#
includes/usercp_register.php

#
#-----[ Znajdź]------------------------------------------
#
        'S_FORM_ENCTYPE' => $form_enctype,
        'S_PROFILE_ACTION' => append_sid("profile.$phpEx"))
    );
   
#
#-----[ Po tym dodaj ]------------------------------------------
#
    $template->assign_vars(array(
        'L_USERNAME_AVAILABLE' => $lang['Username_available'],
        'L_VERIFY_USERNAME' => $lang['Verify_username'],
        'TRY_ONE_OF_THESE' => $lang['Try_one_these'],
        'SAJAX_JAVASCRIPT' => sajax_get_javascript()
    ));


Pozdrawiam

tomekkolo - 15-06-2007, 14:46

Dzięki modzik działa.
lamik17 - 04-07-2007, 12:53

nie działa
Jezdziec - 06-07-2007, 22:20

sebonpl napisał/a:
nie działa
zapewne coś źle wgrałeś. popraw pliki jeszcze raz
daros17 - 14-07-2007, 10:51

mam taki problem sami zobaczcie przy rejestracji http://profun.cal.pl/foru...p?mode=register mam 2 okienka jak to 2 skasować?? moze cos zle zrobilem??
siekierzynski - 02-11-2007, 12:46

Przemek211, ja zrobiłem tak:

znajdź:
Kod:
onchange="check_user_exist(); return false;"


zamień:
Kod:
onkeyup="check_user_exist(); return false;" onkeydown="check_user_exist(); return false;"


dobrze działało mi, tylko, że zaczęła mi wyskakiwać jakaś informacja. spróbuję jeszcze raz zainstalować.

Czy wie ktoś o co tu chodzi?

Owca - 06-11-2007, 13:34

Działa super :) Tylko na guziku 'Dostępność' zamiast 'ś' pojawia się znaczek akapitu (takie niby pi :P ). Jak to zmienić?


Powered by phpBB modified by Przemo © 2003 phpBB Group