PDA

Zobacz pełną wersję : Błąd przy mailowej aktywacji użytkownika



Jola
08-09-2009, 00:03
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

Mauaku
10-09-2009, 00:30
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.

Mauaku
10-09-2009, 00:39
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ć :)

Mauaku
10-09-2009, 01:23
W wolnej chwili popatrzę, jak MVC kieruje taskiem activate...

A może jakiś plugin przeładowuje stronę...

Mauaku
20-09-2009, 13:45
:(???

Tor_
12-12-2009, 21:02
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:

Tor_
13-12-2009, 19:35
ok.Już sobie poradziłem

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?

Jola
03-01-2010, 17:08
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.

Jola
03-01-2010, 20:37
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

Jola
05-01-2010, 00:39
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.

Jola
05-01-2010, 21:42
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.

Jola
06-01-2010, 13:55
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

medic4
21-01-2010, 23:35
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?

Jola
23-01-2010, 00:01
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

Jola
06-02-2010, 00:56
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.