Rejestracja usera wraz z rejestracją z innego skryptu
Rejestracja usera wraz z rejestracją z innego skryptu
Witam wszystkich serdecznie.
Mam swoją stronę opartą w dużej części o PHP - chciałem wraz z rejestracja użytkownika przeprowadzić tą samą rejestrację na forum z tymi samymi danymi które wpisywane są z poziomu mojej strony.
Najważniejsze rzeczy na których najbardziej mi zależy to ten sam id, username, password, email - reszta w miarę możliwości po zalogowaniu do Panelu Użytkownika.
Co muszę dodać do swojego skryptu aby umożliwić automatyczną rejestrację również na forum phpBB.
Mówimy o wersji 3.0.8
Może jeszcze inaczej:
Jak zapisywane jest hasło w bazie danych phpBB 3.0.8 z MD5 ? Jakiś inny algorytm.
Zamieniając row[x] na $zmienne jestem w stanie na sztywno dopisywać do bazy danych wartości - problemem jak sądzę pozostaje hasło i jego szyfrowanie.
Mam swoją stronę opartą w dużej części o PHP - chciałem wraz z rejestracja użytkownika przeprowadzić tą samą rejestrację na forum z tymi samymi danymi które wpisywane są z poziomu mojej strony.
Najważniejsze rzeczy na których najbardziej mi zależy to ten sam id, username, password, email - reszta w miarę możliwości po zalogowaniu do Panelu Użytkownika.
Co muszę dodać do swojego skryptu aby umożliwić automatyczną rejestrację również na forum phpBB.
Mówimy o wersji 3.0.8
Może jeszcze inaczej:
Jak zapisywane jest hasło w bazie danych phpBB 3.0.8 z MD5 ? Jakiś inny algorytm.
Zamieniając row[x] na $zmienne jestem w stanie na sztywno dopisywać do bazy danych wartości - problemem jak sądzę pozostaje hasło i jego szyfrowanie.
Re: Rejestracja usera wraz z rejestracją z innego skryptu
Polecam skorzystać z funkcji user_add(). Troszkę więcej na ten temat jeszcze tutaj. Do przechowywania haseł używana jest funkcja phpbb_hash().
Re: Rejestracja usera wraz z rejestracją z innego skryptu
Ok dziękuje za info.
Jak ja to mam zrobić z poziomu mojego skryptu z rejestracją ?
??
Jak ja to mam zrobić z poziomu mojego skryptu z rejestracją ?
Kod: Zaznacz cały
require_once ('ścieżka do pliku z funkcją ? ');
$user_row = array(
'username' => $_POST['username'],
'user_password' => phpbb_hash($_POST['password']),
i tak dalej .. .. .. . ..
);
Re: Rejestracja usera wraz z rejestracją z innego skryptu
Gdzieś na początku poleciłbym skorzystać jeszcze z kodu integrującego sesje użytkowników. Po linii:
dodaj jeszcze:
To powinno wystarczyć.
Kod: Zaznacz cały
include($phpbb_root_path . 'common.' . $phpEx);
Kod: Zaznacz cały
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
Re: Rejestracja usera wraz z rejestracją z innego skryptu
Mam to zrobione w następujący sposób:
index.php odpowiada w moim przypadku za wyświetlenie formularza rejestracyjnego.
Do index.php dołączam plik funkcjarejestracji.inc
Na samej górze pliku index.php dopisuje:
w pliku funkcjarejestracji.inc umieszczam (w miejscu do którego skrypt dotrze wyłącznie wtedy kiedy rejestracja na mojej stronie przebiegnie prawidłowo) treść:
I wszystko działa ! ale .....
Zapisuje dane w phpbb_users - nie mogę się zalogować na forum. Otrzymuje komunikat taki sam jak ten przy źle wpisanym username lub błędnie podanym haśle.
Oczywiście mogę zresetować hasło - forum wyśle mi link aktywacyjny oraz nowe hasło i wszystko działa.
Tak więc na 100% problem jest z dodaniem hasła do bazy danych :/
index.php odpowiada w moim przypadku za wyświetlenie formularza rejestracyjnego.
Do index.php dołączam plik funkcjarejestracji.inc
Na samej górze pliku index.php dopisuje:
Kod: Zaznacz cały
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
?>
Kod: Zaznacz cały
$user_row = array(
'username' => $_POST['user_name'],
'user_password' => phpbb_hash($_POST['password']),
'user_email' => $_POST['email'],
'group_id' => 2, // by default, the REGISTERED user group is id 2
'user_timezone' => (float) $data['tz'],
'user_lang' => $data['lang'],
'user_type' => USER_NORMAL,
'user_ip' => $user->ip,
'user_regdate' => time(),
);
// Register user...
$user_id = user_add($user_row);
if (!$user_id) {
$feedback = die(mysql_error());
return $feedback;
exit();
}
Zapisuje dane w phpbb_users - nie mogę się zalogować na forum. Otrzymuje komunikat taki sam jak ten przy źle wpisanym username lub błędnie podanym haśle.
Oczywiście mogę zresetować hasło - forum wyśle mi link aktywacyjny oraz nowe hasło i wszystko działa.
Tak więc na 100% problem jest z dodaniem hasła do bazy danych :/
Re: Rejestracja usera wraz z rejestracją z innego skryptu
Brakuje Ci odwołania do funkcji phpbb_hash zawartej w pliku function.php
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
za tym dodaj
include($phpbb_root_path . 'includes/function.' . $phpEx);
i wszystko powinno działać
EDIT:
hmm, plik common.php zawiera odwołanie do functions.php, ale warto spróbować na sztywno
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
za tym dodaj
include($phpbb_root_path . 'includes/function.' . $phpEx);
i wszystko powinno działać
EDIT:
hmm, plik common.php zawiera odwołanie do functions.php, ale warto spróbować na sztywno
Re: Rejestracja usera wraz z rejestracją z innego skryptu
OK DZIAŁA !!!
Pico - mój błąd, zrobiłem literówkę w:
dlatego sprawiał problemy. Teraz wszystko ślicznie działa. A ja wam ŚLICZNIE DZIĘKUJE !!!!
Pico - mój błąd, zrobiłem literówkę w:
Kod: Zaznacz cały
'user_password' => phpbb_hash($_POST['password']),
Re: Rejestracja usera wraz z rejestracją z innego skryptu
To ja jeszcze zwrócę uwagę na bezpieczeństwo takiego rozwiązania. Zapisywanie danych bezpośrednio ze zmiennych
$_POST
i $_GET
to bardzo zły pomysł (SQL injection). Warto zamiast nich zastosować funkcję request_var().Re: Rejestracja usera wraz z rejestracją z innego skryptu
Jeśli masz funkcje która sprawdza co przechodzi przezweeb pisze:To ja jeszcze zwrócę uwagę na bezpieczeństwo takiego rozwiązania. Zapisywanie danych bezpośrednio ze zmiennych$_POST
i$_GET
to bardzo zły pomysł (SQL injection). Warto zamiast nich zastosować funkcję request_var().
$_POST
i $_GET
- SQL injection nie powinno być już takie straszne. Z drugiej strony SQL injection jest bardzo wrażliwe - wystarczy odizolować kilka znaków - i już nic nie jesteś w stanie wstrzyknąć Re: Rejestracja usera wraz z rejestracją z innego skryptu
Zgadza się. Ktoś może jednak skorzystać z Twojego powyższego kodu i nie zatroszczyć się o filtrowanie Na to chciałem zwrócić uwagę. Po co później pisać własne funkcje, skoro można skorzystać z gotowych.
Re: Rejestracja usera wraz z rejestracją z innego skryptu
Masz rację. Cały kod który odpowiedzialny jest za modyfikacje bazy danych powinien być zabezpieczony.
Można to zrobić na kilka sposobów, oto jeden bardziej prosty:
i tak dalej. Analogicznie dla GET ..
Dopisano 15.06.2011
Przy warto zastosować funkcje
Do neutralizacji ciągów znaków funkcja:
Można to zrobić na kilka sposobów, oto jeden bardziej prosty:
Kod: Zaznacz cały
if (accountvalidator($_POST['xxx']) || strlen($_POST['xxx'] >= 6 || i tak dalej .. )) {
... cały kod grzebiący w bazie danych .. }
function accountvalidator() {
// Musi zawierac dozwolony znak
if (strspn($_POST['xxx'],"aąbcćdeęfghijklłmnopqrsśtuóvwxyzżźAĄBCĆDEĘFGHIJKLŁMNOPQRSŚTUÓVWXYZŻŹ0123456789-_") != strlen($_POST['xxx'])) {
return false;
}
// Min i Max dlugosc
if (strlen($_POST['xxx']) < 6) {
return false;
}
if (strlen($_POST['xxx']) > 25) {
return false;
}
// Nazwy OUT
if (eregi("^((root)|(bin)|(daemon)|(adm)|(lp)|(sync)|(shutdown)|(halt)|(mail)|(news)|(uucp)|(operator)|(games)|(mysql)|(httpd)|(nobody)|(dummy)|(www)|(cvs)|(shell)|(ftp)|(irc)|(debian)|(ns)|(download))$", $_POST['xxx'])) {
return false;
}
}
Dopisano 15.06.2011
Przy
Kod: Zaznacz cały
$query
Kod: Zaznacz cały
sprintf()
Kod: Zaznacz cały
mysql_escape_string()
Re: Rejestracja usera wraz z rejestracją z innego skryptu
Nie śmiecąc, wykorzystam ten temat jako kontynuacje - chciałem zapytać o jeszcze jedną kwestie.
Przy automatycznej rejestracji Użytkownika z mojej strony, w tabeli "phpbb_users" tworzy się nowy rekord.
Ponieważ często testuje skrypt - kasuje rekordy zaraz po rejestracji, ale widzę że na stronie forum w statystykach wyświetlana jest suma zarejestrowanych Użytkowników.
Byłem przekonany że skrypt phpbb zlicza user'ów po zapisanych rekordach w tabeli "phpbb_users".
Jak widzę zlicza i przechowuje te dane osobno.
Jak mogę uregulować listę zarejestrowanych Użytkowników na forum ?
Co muszę kasować oprócz rekordu z tabeli "phpbb_users" kasując Użytkownika z poziomu phpmyadmin ?
Przy automatycznej rejestracji Użytkownika z mojej strony, w tabeli "phpbb_users" tworzy się nowy rekord.
Ponieważ często testuje skrypt - kasuje rekordy zaraz po rejestracji, ale widzę że na stronie forum w statystykach wyświetlana jest suma zarejestrowanych Użytkowników.
Byłem przekonany że skrypt phpbb zlicza user'ów po zapisanych rekordach w tabeli "phpbb_users".
Jak widzę zlicza i przechowuje te dane osobno.
Jak mogę uregulować listę zarejestrowanych Użytkowników na forum ?
Co muszę kasować oprócz rekordu z tabeli "phpbb_users" kasując Użytkownika z poziomu phpmyadmin ?
Re: Rejestracja usera wraz z rejestracją z innego skryptu
hmm.. zerknij do pliku function_user.php i znajdź funkcję user_delete. Zobacz jakie tabele czyści z rekordów itd.
Oto Ci chyba chodzi
Oto Ci chyba chodzi
Kod: Zaznacz cały
// Decrement number of users if this user is active
if ($user_row['user_type'] != USER_INACTIVE && $user_row['user_type'] != USER_IGNORE)
{
set_config_count('num_users', -1, true);
}
Re: Rejestracja usera wraz z rejestracją z innego skryptu
Chodzi mi o to:
Pomimo wykasowania użytkownika z bazy danych, statystyki pozostają niezmienione.
Już pędzę spojrzeć do function_user.
Pomimo wykasowania użytkownika z bazy danych, statystyki pozostają niezmienione.
Już pędzę spojrzeć do function_user.
Re: Rejestracja usera wraz z rejestracją z innego skryptu
Trzeba zsynchronizować statystyki.
PA -> Główna -> Synchronizacja i resetowanie statystyk -> Zsynchronizuj statystyki.
PA -> Główna -> Synchronizacja i resetowanie statystyk -> Zsynchronizuj statystyki.