Problem z nadpisywaniem kont podczas współdzielenia użytkowników
Poniżej opisane zabiegi są konieczne tylko w wypadku starszych wersji Drupala. Drupal 6 nie korzysta już z tabeli sequences, a więc problem w nim nie występuje.
Wiele wody w Wiśle upłynęło, zanim doszedłem do tego, jak bezproblemowo współdzielić konta użytkowników między różnymi witrynami opartymi o tego samego Drupala. Podstawowe informacje dotyczące tego zagadnienia znajdują się w Podręczniku.
Wracając do współdzielenia kont, wielu administratorów Drupala, pragnących współdzielić zawartość tabeli users między różnymi witrynami, może spotkać się z problemem polegającym na nadpisywaniu jednych kont przez drugie. Dzieje się tak, ponieważ mimo współdzielenia tabeli sequences dla przechowania informacji o liczbie kont użytkowników tworzone są inne rekordy – dla każdej z witryn z osobna. Jak wyjaśnił Harry Slaughter, rekordy tworzone są tak, by ich nazwa zawierała prefiks lub nazwę bazy danych właściwe danej witrynie. Powoduje to niezgodność informacji o liczbie użytkowników i nadpisywanie danych ich kont.
Co robić? Odnaleźć w module user.module poniższy kod:
$array['uid'] = db_next_id('{users}_uid');
i usunąć z niego znaki otwarcia { i zamknięcia } nawiasu klamrowego. Teraz już utworzenie nowego konta zawsze będzie powodwać zapisanie odpowiedniej informacji do rekordu o nazwie users_uid, bez prefiksów.
Uwaga! Nie jest pewne, jak modyfikacja wpływa na witryny korzystające z jednej bazy. Testowana była ona tylko w sytuacji, w której każda z witryn miała osobną bazę danych, a w tabeli sequences znajdowały się rekordy o nazwach typu users_uid, strona1.users_uid oraz strona2.users_uid.

Działa
tatar111, sob., 2007-08-04 19:57filozofia i religia
Da się na jednej bazie
miki (niezweryfikowany), ndz., 2007-12-02 09:22{users} zawiera nazwę tabeli prefix_users, po zapisaniu daje to wpis w bazie prefix_users_uid.
Jeżeli chcemy współdzielić sequences, to musimy ujednolicić wpisy w niej. Jeżeli podstawowa baza nie ma prefixu, to rozwiązanie zapodane wyżej jest prawidłowe, jeżeli ma prefix, to zamiast {users} wpisujemy po prostu prefix_users
(mój prefix to root bez podkreślnika)
Potem jeszcze wypada dopisać domain w session.inc funkcja sess_regenerate w ten sposób:
żeby mieć jedną sesję dla wszystkich subdomen i finito :)
jeszcze w bootstrap.inc
miki (niezweryfikowany), ndz., 2007-12-02 10:03trzeba dodać