Zobacz pełną wersję : Błąd przy mailowej aktywacji użytkownika
Taki komunikat pojawia się gdy w tabeli jos_users nie ma wyniku dla tego zapytania:
$query = 'SELECT id'
. ' FROM #__users'
. ' WHERE activation = '.$db->Quote($activation)
. ' AND block = 1'
. ' AND lastvisitDate = '.$db->Quote('0000-00-00 00:00:00');
;gdzie $activation jest zmienną z linka aktywacyjnego
Pozdrawiam
Witam. Mam problem w joomla 1.5.14. Otóż: podczas rejestracji wysyłany jest do użytkownika mail aktywacyjny. W bazie danych informacja też widnieje (klucz aktywacyjny). Jednak kliknięcie w link, powoduje pojawienie się takiego komunikatu:
System nie znalazł konta użytkownika z podanym łączem aktywacyjnym. Konto już zostało uaktywnione albo wygasł termin ważności kodu. W drugim przypadku konieczna jest powtórna rejestracja.
Błędny odsyłacz aktywacyjny!
To konto jest już uaktywnione lub nie istnieje w naszej bazie danych.
Konto się aktywuje w tym czasie też - czyli jakby akcja &task=activate&activation= próbowała się wykonać podwójnie. Jestem po reinstalce całego CMSa. Przedtem też miałem ten problem. Możliwe, że jest to wina grzebania w templatce (tzn tworzę swoją, ale do html/com_ wykorzystuję beez - jako przykład do nauki, modyfikuje jedynie układ pod css)? Który plik może odpowiadać za ten problem?
Proszę, o usunięcie takiego postu w tym temacie: http://forum.joomla.pl/showthread.php?t=14351
zwiastun
10-09-2009, 00:37
Psstt: kolejność postów odwrotna - nie mam pomysłu, jak zmienić. Odpowiedź @jolaass przeniesiona.
Po dokonaniu rejestracji, w bazie pojawia się rekord, który zwraca id użytkownika po takim zapytaniu. Klik w linka powoduje jednak taki komunikat (w tym czasie użytkownik zostaje aktywowany)
Psstt: kolejność postów odwrotna - nie mam pomysłu, jak zmienić. Odpowiedź @jolaass przeniesiona.
Zamienić identyfikatory w bazie:)?
zwiastun
10-09-2009, 00:43
Bazy forum to ja wolę nie tykać :)
W wolnej chwili popatrzę, jak MVC kieruje taskiem activate...
A może jakiś plugin przeładowuje stronę...
Komunikaty błedów
1.Nie udało się uruchomić wysyłania poczty.
2.Konto zostało utworzone, a odsyłacz aktywacyjny przesłany na podany przez Ciebie adres. Po otrzymaniu wiadomości użyj odsyłacza, żeby uaktywnić swoje konto. Dopóki tego nie zrobisz, zalogowanie nie będzie możliwe
Tyle ze ta wiadomość nie została wysłana.Czy trzeba dokonać jakiś dodatkowych konfiguracji:confused:
carlosplay
02-01-2010, 21:51
Mam identyczny problem jak użytkownik Tor, tzn pojawia Komunikaty błędów:
1.Nie udało się uruchomić wysyłania poczty.
2.Konto zostało utworzone, a odsyłacz aktywacyjny przesłany na podany przez Ciebie adres. Po otrzymaniu wiadomości użyj odsyłacza, żeby uaktywnić swoje konto. Dopóki tego nie zrobisz, zalogowanie nie będzie możliwe
Czy mogę prosić o rozwiązanie?
Witam,
klucz do problemu to informacja: Nie udało się uruchomić wysyłania poczty.
Sprawdź czy można z Twojej witryny wysyłać emaile w innych sytuacjach (poprawna konfiguracja ustawień związanych z tą opcją).
carlosplay
03-01-2010, 19:15
Dzięki za odpowiedź, ale z wysyłaniem poczty w innych sytuacjach nie ma problemu, tylko w momencie rejestracji użytkownika pojawia się ten błąd.
To sprawdź jeszcze czy wysyła emil z panelu administratora Narzędzia->Napisz wiadomość.
mam nadzieję, że testujesz to na tym samym adresie email.
carlosplay
05-01-2010, 00:36
Wysyła bez problemów
Podaj więcej szczegółów: która wersja, z czego korzystasz podczas rejestracji, plus inne podstawowe dane.
carlosplay
05-01-2010, 19:43
Wersja 1.5.15, moduł mod_login 1.5.0, poczta przez php, nie wiem co jeszcze można podać, może to być kwestia wersji php na serwerze? Te problemy wystąpiły po aktualizacji do wersji 1.5.15.
Czy wersja php to nie jest przypadkiem 5.3 ?
Czy administrator też nie dostaje powiadomienia?
carlosplay
06-01-2010, 10:30
wersja php 5.2.6
Admnistrator nie dostaje powiadomienia na skrzynkę, natomiast po rejestracji nowego uzytkownika konto jest założone, tylko że nie aktywne, tzn. w panelu administracyjnym, w zakładce uzytkownicy jest nowy uzytkownik, oczywiscie mozna go aktywować ręcznie, ale w czasie rejestracji nowy uzytkownik nie dostaje maila potwierdzającego.
Powodem kłopotów jest funkcja _sendMail() w pliku components/com_user/controller.php
Jednak zdiagnozowanie, co działa nieprawidłowo, wymaga dostępu do sprawiającego kłopoty miejsca.
U mnie wszystko działa prawidłowo, więc trudno zgadywać co może szwankować.
Krótko mówiąc jeśli mam pomóc - muszę mieć dostęp do Twojego serwera.
renata_kr
20-01-2010, 21:36
Powodem kłopotów jest funkcja _sendMail() w pliku components/com_user/controller.php
Jednak zdiagnozowanie, co działa nieprawidłowo, wymaga dostępu do sprawiającego kłopoty miejsca.
U mnie wszystko działa prawidłowo, więc trudno zgadywać co może szwankować.
Krótko mówiąc jeśli mam pomóc - muszę mieć dostęp do Twojego serwera.
Witam, po dlugiej przerwie, mam podobny problem. Może mogłabyś pomóc i mnie, bo sama nie dam rady. Już nie mam pomysłów. Na priva mogę podać dane do serwera, które będą Ci potrzebne. Pozdrawiam Renata
Mam identyczny problem jak użytkownik Tor, tzn pojawia Komunikaty błędów:
1.Nie udało się uruchomić wysyłania poczty.
2.Konto zostało utworzone, a odsyłacz aktywacyjny przesłany na podany przez Ciebie adres. Po otrzymaniu wiadomości użyj odsyłacza, żeby uaktywnić swoje konto. Dopóki tego nie zrobisz, zalogowanie nie będzie możliwe
Czy mogę prosić o rozwiązanie?
Witam, mam taki sam problem, czy ktoś może mi pomóc?
Pozdr.medic4
zwiastun
21-01-2010, 23:57
W czym? Skonfigurowłeś pocztę? Jak?
Dzięki Renacie, która pozwoliła mi "mieszać" na swoim serwerze, udało mi się rozwikłać problem.
Pierwsza sprawa to wersja PHP, jeśli jest wcześniejsza niż 5.0 trzeba zmienić parametry funkcji html_entity_decode().
Druga sprawa - całkiem zabawna - błąd wysyłania emaila pojawia sie również jeśli nazwa witryny jest zbyt długa. Nazwa witryny dodawana jest do tytułu emaila - stąd pewnie ten problem.
Wstawiam zmieniony kod funkcji _sendMail() z pliku components/com_user/controller.php
Modyfikacja potrzebna w przypadku wersji PHP<5
function _sendMail(&$user, $password)
{
global $mainframe;
$db =& JFactory::getDBO();
$name = $user->get('name');
$email = $user->get('email');
$username = $user->get('username');
$usersConfig = &JComponentHelper::getParams( 'com_users' );
$sitename = $mainframe->getCfg( 'sitename' );
$useractivation = $usersConfig->get( 'useractivation' );
$mailfrom = $mainframe->getCfg( 'mailfrom' );
$fromname = $mainframe->getCfg( 'fromname' );
$siteURL = JURI::base();
$subject = sprintf ( JText::_( 'Account details for' ), $name, $sitename);
//$subject = html_entity_decode($subject, ENT_QUOTES);
//zmiana
if((version_compare( phpversion(), '5.0' ) < 0)) {
$subject = html_entity_decode($subject);
} else {
$subject = html_entity_decode($subject, ENT_QUOTES);
}
//koniec zmiana
if ( $useractivation == 1 ){
$message = sprintf ( JText::_( 'SEND_MSG_ACTIVATE' ), $name, $sitename, $siteURL."index.php?option=com_user&task=activate&activation=".$user->get('activation'), $siteURL, $username, $password);
} else {
$message = sprintf ( JText::_( 'SEND_MSG' ), $name, $sitename, $siteURL);
}
// $message = html_entity_decode($message, ENT_QUOTES);
//zmiana
if((version_compare( phpversion(), '5.0' ) < 0)) {
$message = html_entity_decode($message);
} else {
$message = html_entity_decode($message, ENT_QUOTES);
}
//koniec zmiana
//get all super administrator
$query = 'SELECT name, email, sendEmail' .
' FROM #__users' .
' WHERE LOWER( usertype ) = "super administrator"';
$db->setQuery( $query );
$rows = $db->loadObjectList();
// Send email to user
if ( ! $mailfrom || ! $fromname ) {
$fromname = $rows[0]->name;
$mailfrom = $rows[0]->email;
}
JUtility::sendMail($mailfrom, $fromname, $email, $subject, $message);
// Send notification to all administrators
$subject2 = sprintf ( JText::_( 'Account details for' ), $name, $sitename);
//$subject2 = html_entity_decode($subject2, ENT_QUOTES);
//zmiana
if((version_compare( phpversion(), '5.0' ) < 0)) {
$subject2 = html_entity_decode($subject2);
} else {
$subject2 = html_entity_decode($subject2, ENT_QUOTES);
}
//koniec zmiana
// get superadministrators id
foreach ( $rows as $row )
{
if ($row->sendEmail)
{
$message2 = sprintf ( JText::_( 'SEND_MSG_ADMIN' ), $row->name, $sitename, $name, $email, $username);
//$message2 = html_entity_decode($message2, ENT_QUOTES);
//zmiana
if((version_compare( phpversion(), '5.0' ) < 0)) {
$message2 = html_entity_decode($message2);
} else {
$message2 = html_entity_decode($message2, ENT_QUOTES);
}
//koniec zmiana
JUtility::sendMail($mailfrom, $fromname, $row->email, $subject2, $message2);
}
}
}
carlosplay
05-02-2010, 22:59
Wielkie dzięki za rozgryzienie problemu, u mnie wystąpił problem z nazwą witryny.
Pozdrawiam
Jeśli nazwa witryny musi być długa, rozwiązaniem jest zmiana w pliku językowym:
language/pl-P/pl-PL.com_user.ini linia 8 wpis
ACCOUNT DETAILS FOR=Szczegóły konta %s na %szmienić na:
ACCOUNT DETAILS FOR=Szczegóły konta %s na skrocona_nazwagdzie skrocona_nazwa to nazwa witryny (niezbyt długa), która będzie się pokazywała tylko w tytule emaila wysyłanego podczas rejestracji.
Przy witrynach wielojęzycznych taką modyfikację należy dokonać w pozostałych plikach językowych.
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!