Bardzo częstym problemem (szczególnie na darmowych serwerach) jest zablokowana funkcja mail(), co uniemożliwia aktywacje konta przez użytkownika rejestrującego się na naszej stronie.
Często też mail z linkiem aktywującym konto poprostu nie dochodzi do użytkownika z różnych, czasem niezależnych od nas przyczyn.
Aby wyłączyć aktywacje kont można wykonać prostą modyfikację , po której w preferencjach można będzie ustawić, czy nowy użytkownik bedzie musiał aktywować swoje konto , czy ma ono zostać automatycznie aktywowane.
| Modyfikacja: | Jak instalować modyfikacje |
ALTER TABLE nuke_config ADD user_activation tinyint(1) NOT NULL default '1';
mainfile.php
$Version_Num = $row['Version_Num'];
$activation = intval($row['activation']);
admin/modules/settings.php
$CensorReplace = $row['CensorReplace'];
$xactivation = intval($row['activation']);
echo "</td></tr><tr><td>" . _USERSHOMENUM . "</td><td>";
if ($user_news == 1) {
echo "<input type='radio' name='xuser_news' value='1' checked>" . _YES . "
<input type='radio' name='xuser_news' value='0'>" . _NO . "";
} else {
echo "<input type='radio' name='xuser_news' value='1'>" . _YES . "
<input type='radio' name='xuser_news' value='0' checked>" . _NO . "";
}
echo "</td></tr><tr><td>" . _USERSACTIVATION . "</td><td>";
if ($xactivation == 1) {
echo "<input type='radio' name='xactivation' value='1' checked>" . _FROMMAIL . "
<input type='radio' name='xactivation' value='0'>" . _NOACTIV . "";
} else {
echo "<input type='radio' name='xactivation' value='1'>" . _FROMMAIL . "
<input type='radio' name='xactivation' value='0' checked>" . _NOACTIV . "";
}
$db->sql_query("UPDATE ".$prefix."_config SET sitename='$xsitename', nukeurl='$xnukeurl'
, CensorReplace='$xCensorReplace'
, activation='$xactivation'
admin/language/lang-polish.php
?>
define("_USERSACTIVATION","Aktywacja nowego użytkownika");
define("_FROMMAIL","Przez e-mail");
define("_NOACTIV","Brak aktywacji");
modules/Your_Account/index.php
function finishNewUser($username, $user_email, $user_password, $random_num, $gfx_check) {
global $stop, $EditedMessage, $adminmail, $sitename, $Default_Theme, $user_prefix, $db, $storyhome, $module_name, $nukeurl;
include("header.php");
include("config.php");
userCheck($username, $user_email);
$user_regdate = date("M d, Y");
if (!isset($stop)) {
$datekey = date("F j");
$rcode = hexdec(md5($_SERVER[HTTP_USER_AGENT] . $sitekey . $random_num . $datekey));
$code = substr($rcode, 2, 6);
if (extension_loaded("gd") AND $code != $gfx_check AND ($gfx_chk == 3 OR $gfx_chk == 4 OR $gfx_chk == 6 OR $gfx_chk == 7)) {
Header("Location: modules.php?name=$module_name");
die();
}
mt_srand ((double)microtime()*1000000);
$maxran = 1000000;
$check_num = mt_rand(0, $maxran);
$check_num = md5($check_num);
$time = time();
$finishlink = "$nukeurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num";
$new_password = md5($user_password);
$username = check_html($username, nohtml);
$user_email = check_html($user_email, nohtml);
$result = $db->sql_query("INSERT INTO ".$user_prefix."_users_temp (user_id, username, user_email, user_password, user_regdate, check_num, time) VALUES (NULL, '$username', '$user_email', '$new_password', '$user_regdate', '$check_num', '$time')");
if(!$result) {
echo ""._ERROR."<br>";
} else {
$message = ""._WELCOMETO." $sitename!\n\n"._YOUUSEDEMAIL." ($user_email) "._TOREGISTER." $sitename.\n\n "._TOFINISHUSER."\n\n $finishlink\n\n "._FOLLOWINGMEM."\n\n"._UNICKNAME." $username\n"._UPASSWORD." $user_password";
$subject = ""._ACTIVATIONSUB."";
$from = "$adminmail";
mail($user_email, $subject, $message, "From: $from\nX-Mailer: PHP/" . phpversion());
title("$sitename: "._USERREGLOGIN."");
OpenTable();
echo "<center>"._ACCOUNTCREATED."<br><br>";
echo ""._YOUAREREGISTERED.""
."<br><br>"
.""._FINISHUSERCONF."<br><br>"
.""._THANKSUSER." $sitename!</center>";
CloseTable();
}
} else {
echo "$stop";
}
include("footer.php");
}
function finishNewUserNoA($username, $user_email, $user_password, $random_num, $gfx_check) {
global $stop, $EditedMessage, $adminmail, $sitename, $Default_Theme, $user_prefix, $db, $storyhome, $module_name, $nukeurl;
include_once("header.php");
include("config.php");
userCheck($username, $user_email);
$user_regdate = date("M d, Y");
if (!isset($stop)) {
$datekey = date("F j");
$rcode = hexdec(md5($_SERVER[HTTP_USER_AGENT] . $sitekey . $random_num . $datekey));
$code = substr($rcode, 2, 6);
//if (extension_loaded("gd") AND $code != $gfx_check) {
// Header("Location: modules.php?name=$module_name");
// die();
//}
mt_srand ((double)microtime()*1000000);
$maxran = 1000000;
$check_num = mt_rand(0, $maxran);
$check_num = md5($check_num);
$time = time();
$finishlink = "$nukeurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num";
$new_password = md5($user_password);
$db->sql_query("INSERT INTO ".$user_prefix."_users_temp (user_id, username, user_email, user_password, user_regdate, check_num, time) VALUES (NULL, '$username', '$user_email', '$new_password', '$user_regdate', '$check_num', '$time')");
if(!$result) {
echo ""._ERROR."<br>";
} else {
////
global $db, $user_prefix, $module_name, $language;
$past = time()-86400;
$db->sql_query("DELETE FROM ".$user_prefix."_users_temp WHERE time < $past");
$sql = "SELECT * FROM ".$user_prefix."_users_temp WHERE username='$username' AND check_num='$check_num'";
$result = $db->sql_query($sql);
if ($db->sql_numrows($result) == 1) {
$row = $db->sql_fetchrow($result);
if ($check_num == $row[check_num]) {
$db->sql_query("INSERT INTO ".$user_prefix."_users (user_id, username, user_email, user_password, user_avatar, user_regdate, user_lang) VALUES (NULL, '$row[username]', '$row[user_email]', '$row[user_password]', 'gallery/blank.gif', '$row[user_regdate]', '$language')");
$db->sql_query("DELETE FROM ".$user_prefix."_users_temp WHERE username='$username' AND check_num='$check_num'");
// include_once("header.php");
title(""._ACTIVATIONYES."");
// OpenTable();
echo "<center>$row[username]: "._ACTMSG."</center>";
// CloseTable();
// include("footer.php");
// die();
} else {
// include("header.php");
title(""._ACTIVATIONERROR."");
// OpenTable();
echo "<center>"._ACTERROR1."</center>";
// CloseTable();
// include("footer.php");
// die();
}
} else {
// include("header.php");
title(""._ACTIVATIONERROR."");
// OpenTable();
echo "<center>"._ACTERROR2."</center>";
// CloseTable();
// include("footer.php");
die();
}
////
}
} else {
echo "$stop";
}
include("footer.php");
}
case "finish":
finishNewUser($username, $user_email, $user_password, $random_num, $gfx_check);
break;
case "finish":
if ($activation) {
finishNewUser($username, $user_email, $user_password, $random_num, $gfx_check);
} else {
finishNewUserNoA($username, $user_email, $user_password, $random_num, $gfx_check);
}
break;
|
Wcześniej oczywiście proponuje zrobić kopię edytowanych plików 
@dudi |