Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHPBB3] zdalna rejestracja
Forum PHP.pl > Forum > Gotowe rozwiązania > Skrypty forum
slammer
Tworzę portal w którym wykorzystany jest skrypt forum phpbb. Potrzebuję zrobić tak, aby założenie konta na owym portalu powodowało zdalne założenie konta na forum (z tym samym loginem i hasłem). Pierwsze co przyszło mi na myśl to CURL stworzyłem coś takiego no i prawie działa, ale niestety nie do końca. Cała procedura musi składać się z dwóch etapów:
- zaakceptowania regulaminu (formularz 1)
- wysłania wypełnionego formularza rejestracji (formularz 2)
Przypuszczam, że w tym miejscu pojawia się problem z polami 'form_token' które są poprawnie pobrane dla formularza 1, ale dla drugiego już chyba nie :/

oto kod:
  1.  
  2. //config::getConfig('url') - adres strony (http://localhost/kodeks/)
  3.  
  4. $o = new regbot();
  5. $data = $o->curl_get( config::getConfig('url').'forum/ucp.php?mode=register');
  6. $creation_time = $o->regular('<input type="hidden" name="creation_time" value="([a-z0-9]+)" />', $data);
  7. $form_token = $o->regular('<input type="hidden" name="form_token" value="([a-z0-9]+)" />', $data);
  8. $data = $o->curl_post( config::getConfig('url').'forum/ucp.php?mode=register', "creation_time=$creation_time&form_token=$form_token&agreed=1" );
  9. $creation_time = $o->regular('<input type="hidden" name="creation_time" value="([a-z0-9]+)" />', $data);
  10. $form_token = $o->regular('<input type="hidden" name="form_token" value="([a-z0-9]+)" />', $data);
  11. $data = $o->curl_post( config::getConfig('url').'forum/ucp.php?mode=register', "username=slammer&email=test123@gmail.com&email_confirm=test123@gmail.com&new_password=haselko&password_confirm=haselko&tz=1&change_lang=0&creation_time=$creation_time&form_token=$form_token&agreed=true&submit=true" );
  12.  
  13. //print $data;
  14.  
  15. class regbot {
  16. public function curl_get( $url ) {
  17. $conn = curl_init();
  18. curl_setopt( $conn, CURLOPT_URL, $url );
  19. curl_setopt( $conn, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT'] );
  20. curl_setopt( $conn, CURLOPT_COOKIEJAR, dirname(__FILE__).'/'.$this->cookie_file );
  21. curl_setopt( $conn, CURLOPT_COOKIEFILE, dirname(__FILE__).'/'.$this->cookie_file );
  22. curl_setopt( $conn, CURLOPT_ENCODING, 'gzip, deflate' );
  23. curl_setopt( $conn, CURLOPT_RETURNTRANSFER, 1 );
  24. curl_setopt( $conn, CURLOPT_REFERER, config::getConfig('url') );
  25.  
  26. $data = curl_exec( $conn );
  27. curl_close( $conn );
  28. return $data;
  29. }
  30. public function regular( $patt, $zawartosc ) {
  31. preg_match($patt, $zawartosc, $content_str);
  32. $content = $content_str[1];
  33. return $content;
  34. }
  35. public function curl_post( $url, $post ) {
  36. $conn = curl_init();
  37. curl_setopt( $conn, CURLOPT_URL, $url );
  38. curl_setopt( $conn, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT'] );
  39. curl_setopt( $conn, CURLOPT_COOKIEJAR, dirname(__FILE__).'/'.$this->cookie_file );
  40. curl_setopt( $conn, CURLOPT_COOKIEFILE, dirname(__FILE__).'/'.$this->cookie_file );
  41. curl_setopt( $conn, CURLOPT_ENCODING, 'gzip, deflate' );
  42. curl_setopt( $conn, CURLOPT_FOLLOWLOCATION, 1 );
  43. curl_setopt( $conn, CURLOPT_POST, 1 );
  44. curl_setopt( $conn, CURLOPT_REFERER, config::getConfig('url') );
  45. curl_setopt( $conn, CURLOPT_POSTFIELDS, $post );
  46. curl_setopt( $conn, CURLOPT_RETURNTRANSFER, 1 );
  47.  
  48. $data = curl_exec( $conn );
  49. curl_close( $conn );
  50. return $data;
  51. }
  52. }
nospor
o ile mnie pamiec nie myli to przeciez phpbb umozliwia API, które pozwala na to co chcesz robic. Nie musisz wymyslac kola na nowo
slammer
hehe to mnie zaskoczyłeś winksmiley.jpg Nie wiedziałem o istnieniu czegoś takiego. Mam nadzieję, że teraz już nie będzie problemu.

wystarczyło tyle winksmiley.jpg
  1. $user_row = array(
  2. 'username' => 'testerek1',
  3. 'user_password' => phpbb_hash('haselko'),
  4. 'user_email' => 'tester123@gmail.com',
  5. 'group_id' => 2,
  6. 'user_timezone' => 1,
  7. 'user_lang' => 'pl',
  8. 'user_type' => '0',
  9. 'user_ip' => $user->ip,
  10. 'user_regdate' => time(),
  11. );
  12. $user_id = user_add($user_row);
quspy123
tylko 1acc zrobi,resza block
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.