We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

Rejestracja - zatwierdzanie przez admina, bez maila


microcom
12-02-2006, 19:01
Chcemy zrezygnować z z aktywacji konta
Z powodu, że na serwerze nie działa funkcja mail() i nie są wysyłane maile aktywacyjne lub chcemy ułatwić zycie userom

Modyfikacja:

1. W pliku login.inc.php:
Zamiast:
Kod PHP:
$cmd2 send_info($key); 
dać

Kod PHP:
$cmd2 'ok'
2. Następnie w zapytaniu (ten sam plik) :
Kod PHP:
$query "INSERT INTO $guest_tbl VALUES(NULL, '$name', '$pass_', '$mail', '$pod', '$www', '$gg', '$icq', '$kraj', '$miej', '$wiek', '', now(), '$key', '-', 'no', '')";
mysql_query($query); 
'-' zamienić na 'ok'

3. W pliku login.php tekst;
Kod PHP:
echo 'Rejestracja zakończona pomyslnie! Na adres, który podała(e)s; podczas wypełniania formularza rejestracji została wysłana wiadomosć z adresem aktywujscym twoje konto. Odbierz pocztę i kliknij w link podany w liscie.'
Zmienić na bardziej stosowny, np:
Kod PHP:
echo 'Rejestracja zakończona pomyslnie! Możesz zalogować się na stronie głównej'
----------------------------------------------------------------------
Czasem zachodzi potrzeba kontroli nad rejestracją i chcemy aby to admin zdecydował czy pozwolić userowi na założenie konta. Zróbmy więc:
-----------------------------------------------------------------------
Zatwierdzanie usera przez admina.

Modyfikacja:

Należy zablokowac wysyłanie maila aktywującego więc wykonajmy punkt 1 z modyfikacji powyżej. Nie wykonujemy punktu 2.
W punkcie 3 zmieniamy komunikat na następujący
Kod PHP:
echo 'Rejestracja zakończona pomyslnie! Teraz czekaj aż admin zatwierdzi Twoje członkowstwo'
4. Stwórzmy możliwość aktywacji adminowi:

Plik user.adm.php:
Funkcja module_start() ma wygladać tak:
Kod PHP:
function module_start($cmd) {

if(
$cmd=='add') {
add_admin();
}
if(
$cmd=='del_now') {
del_admin();
}
if(
$cmd=='update') {
update_admin();
}
if(
$cmd=='acc') {
activate();
}

Niżej w funkcji for_edit() linie:
Kod PHP:
$akcje '[ .$PHP_SELF.'?cmd=edit&op='.$op.'&id='.$id.'" title="edytuj">e
.$PHP_SELF.'?cmd=del&op='.$op.'&id='.$id.'" title="usuń">u ]'
zastąp następujacymi:
Kod PHP:
$akcje '[ .$PHP_SELF.'?cmd=edit&op='.$op.'&id='.$id.'" title="edytuj">e
.$PHP_SELF.'?cmd=del&op='.$op.'&id='.$id.'" title="usuń">u';
if (
$opt=='-'){ $akcje $akcje' | .$PHP_SELF.'?cmd=acc&op='.$op.'&id='.$id.'" title="zatwierdĄ">a';}
$akcje $akcje' ]'
Na samym końcu pliku, tuż przed końcowym ?> dopisz funkcję:
Kod PHP:
function activate(){
global 
$PHP_SELF$id$guest_tbl$op$goto;
$query "UPDATE $guest_tbl SET stat='ok' WHERE id='$id'";
mysql_query($query);

@
header("Location: admin.php?op=user");
exit;

W Administacja > Użytkownicy, w tabeli 'Zarządzaj zgłoszonymi userami' w kolumnie "Akcje" powinna pojawić się dodatkowa opcja a - aktywuj:
Kod PHP:

-----------------------------------------------------------------------
Oczywiście mozemy dodać dodatkowe opcje (pod warunkiem, ze na serwerze działa funkcja mail() :

-----------------------------------------------------------------------
Admin zostaje powiadomiony mailem o rejestracji usera

Modyfikacja:

W login.inc.php

Do global funkcji add_jp_user() dopisać
Kod PHP:
$mailer$site_name 
a po:
Kod PHP:
$cmd 'ok'
dopisz:
Kod PHP:
$from '"'.$site_name.'" <'.$mailer['admin'].'>';
$subject 'Rejestracja';
$body "Zarejestrował się ktoś pod nickiem $name o godzinie ".date("Y-m-d H:i:s")."";
@
mail("{$mailer['admin']}""$subject""$body""From: $fromrnReply-to: $from"); 
Jeżeli posiadasz forum_pack to:

Do global funkcji add_jp_user() dopisać
Kod PHP:
$config$mailer$site_name 
i kod ma postać:
Kod PHP:
$from '"'.$site_name.'" <'.$mailer['admin'].'>';
$subject 'Rejestracja';
$body "Zarejestrował się ktoś pod nickiem $name o godzinie ".date("Y-m-d H:i:s")."";
if(
$config['smtp']=='ok') @smtp_mail("{$mailer['admin']}""$subject""$body""From: $fromrnReply-to: $from");
else @
mail("{$mailer['admin']}""$subject""$body""From: $fromrnReply-to: $from"); 
-----------------------------------------------------------------------
User zostaje powiadomiony mailem o aktywacji przez admina

Funkcja activate(), dopisana dwie modyfikacje powyżej, ma wyglądać tak:
Kod PHP:
function activate(){
global 
$id$guest_tbl$op$mailer$site_name;
$query "UPDATE $guest_tbl SET stat='ok' WHERE id='$id'";
mysql_query($query);

$rr mysql_fetch_object(mysql_query("SELECT * FROM $guest_tbl WHERE id='$id'"));
$to $rr->mail;
$temat 'Rejestracja na '.$site_name;
$od '"'.$site_name.'" <'.$mailer['admin'].'>';
$tresc "Dostajesz tą wiadomość ponieważ administrator serwisu ".$site_name." zatwierdził Cię, czyli {$rr->nick} o godzinie ".date("Y-m-d H:i:s")."";
@
mail("$to""$temat""$tresc""From: $odrnReply-to: $od");

@
header("Location: admin.php?op=user");
exit;

Jeżeli posiadasz forum_pack to funkcja ma postać:
Kod PHP:
function activate(){
global 
$id$guest_tbl$op$mailer$site_name$config;
$query "UPDATE $guest_tbl SET stat='ok' WHERE id='$id'";
mysql_query($query);

$rr mysql_fetch_object(mysql_query("SELECT * FROM $guest_tbl WHERE id='$id'"));
$to $rr->mail;
$temat 'Rejestracja na '.$site_name;
$od '"'.$site_name.'" <'.$mailer['admin'].'>';
$tresc "Dostajesz tą wiadomość ponieważ administrator serwisu ".$site_name." zatwierdził Cię, czyli {$rr->nick} o godzinie ".date("Y-m-d H:i:s")."";
if(
$config['smtp']=='ok') @smtp_mail("$to""$temat""$tresc""From: $odrnReply-to: $od");
else @
mail("$to""$temat""$tresc""From: $odrnReply-to: $od");

@
header("Location: admin.php?op=user");
exit;

Modyfikacja jest autorstwa bloksiego z forum zsypu, zamieszczam ją dla ludzi którym niechce się szukać a chciały by mieć u siebie coś takiego.
systematycznie będe zamieszczał tu inne modyfikacje lub usprawnienia moje bądz nie.
Jeżeli masz jakiś problem z Jportalem pisz do mnie mam wieloletnie doświadczenie z tym CMS-em.
Pozdrawiam.