Перейти к публикации

Попадание в группу посредством полученного кода


Рекомендованные сообщения

Значит вот в чём суть. На трекерах есть такая штучка, типо приглашение по ключу. Генерируется ключик, и когда человек, которого пригласили начинает регистрироваться, он без всякого труда вводит этот самый код, и регистрация проходит успешно.

А мне нужно вот что:

- Регистрироваться может каждый человек на сайте, но что бы попасть в определённую группу, которая будет называться "Покупатели", вы должны будете ввести ключик.

- Этот самый ключик должен делать только 1 человек, т.е. Главный Админ сайта (id юзвера 1), что бы добавленные админы не могли делать ничего подобного.

- Ключик прикрепляется на логин, т.е. ключик передать никаким образом нельзя.

- При вписывании ключа, человек не может передать свой логин другому пользователю, а именно, логин прикрепляется к ip, с которого был введён ключ.

- Ключ делается на определённое кол-во дней, при истечении ключа, человек переходит в другую группу, и пока человек не введёт новый ключ, он не сможет попасть обратно в ту группу.

- Что-то вроде активации DLE, что бы этот самый ключ был виден в профайле только человеку, который его преобрёл.

Вот код чего-то подобного, такая фишка есть на трекерах:

<?

$id = 0 + $_GET["id"];

$type = unesc($_GET["type"]);

$invite = $_GET["invite"];


stdhead("Приглашения");


function bark($msg) {

stdmsg("Ошибка", $msg);

stdfoot();

}


if ($id == 0) {

$id = $CURUSER["id"];

}


$res = sql_query("SELECT invites FROM users WHERE id = $id") or sqlerr(__FILE__,__LINE__);


$inv = mysql_fetch_assoc($res);


if ($inv["invites"] != 1) {

$_s = "ний";

} else {

$_s = "ие";

}


if ($type == 'new') {

print("<form method=get action=takeinvite.php>".

"<input type=hidden name=id value=$id />".

"<table border=1 width=100% cellspacing=0 cellpadding=5>".

"<tr class=tabletitle><td colspan=2><b>Создать пригласительный код (осталось $inv[invites] приглаше$_s)</b></td></tr>".

"<tr class=tableb><td align=center colspan=2><input type=submit value=\"Создать\"></td></tr>".

"</form></table>");

} elseif ($type == 'del') {

$ret = sql_query("SELECT * FROM invites WHERE invite = ".sqlesc($invite)) or sqlerr(__FILE__,__LINE__);

$num = mysql_fetch_assoc($ret);

if ($num[inviter]==$id) {

sql_query("DELETE FROM invites WHERE invite = ".sqlesc($invite)) or sqlerr(__FILE__,__LINE__);

sql_query("UPDATE users SET invites = invites + 1 WHERE id = $CURUSER[id]") or sqlerr(__FILE__,__LINE__);

stdmsg("Успешно", "Приглашение удалено. Сейчас мы вас переадресуем на страницу приглашений...");

} else

stdmsg("Ошибка", "Вам не разрешено удалять приглашения.");

header("Refresh: 3; url=invite.php?id=$id");

} else {

if (get_user_class() <= UC_UPLOADER && !($id == $CURUSER["id"])) {

bark("У вас нет права видеть приглашения этого пользователя.");

}


$rel = sql_query("SELECT COUNT(*) FROM users WHERE invitedby = $id") or sqlerr(__FILE__,__LINE__);

$arro = mysql_fetch_row($rel);

$number = $arro[0];


$ret = sql_query("SELECT id, username, class, email, uploaded, downloaded, status, warned, enabled, donor, email FROM users WHERE invitedby = $id") or sqlerr(__FILE__,__LINE__);

$num = mysql_num_rows($ret);


print("<form method=post action=takeconfirm.php?id=$id><table border=1 width=100% cellspacing=0 cellpadding=5>".

"<tr class=tabletitle><td colspan=7><b>Статус приглашенных вами</b> ($number)</td></tr>");


if(!$num) {

print("<tr class=tableb><td colspan=7>Еще никто вами не приглашен.</tr>");

} else {

print("<tr class=tableb><td><b>Пользователь</b></td><td><b>Email</b></td><td><b>Раздал</b></td><td><b>Скачал</b></td><td><b>Рейтинг</b></td><td><b>Статус</b></td>");

if ($CURUSER[id] == $id || get_user_class() >= UC_SYSOP)

print("<td align=center><b>Подтвердить</b></td>");

print("</tr>");

for ($i = 0; $i < $num; ++$i) {

$arr = mysql_fetch_assoc($ret);

if ($arr[status] == 'pending')

$user = "<td align=left>$arr[username]</td>";

else

  $user = "<td align=left><a href=userdetails.php?id=$arr[id]>" . get_user_class_color($arr["class"], "$arr[username]") . "</a>" . ($arr["warned"]  == "yes" ? "&nbsp;<img src=pic/warned.gif border=0 alt='Warned'>" : "") . ($arr["enabled"] == "no" ? "&nbsp;<img src=pic/disabled.gif border=0 alt='Disabled'>" : "") . ($arr["donor"]  == "yes" ? "&nbsp;<img src=pic/star.gif border=0 alt='Donor'>" : "")."</td>";

if ($arr["downloaded"] > 0) {

$ratio = number_format($arr["uploaded"] / $arr["downloaded"], 3);

$ratio = "<font color=" . get_ratio_color($ratio) . ">$ratio</font>";

} else {

if ($arr["uploaded"] > 0) {

$ratio = "Inf.";

} else {

$ratio = "---";

}

}

if ($arr["status"] == 'confirmed')

$status = "<a href=userdetails.php?id=$arr[id]><font color=green>Подтвержден</font></a>";

else

$status = "<font color=red>Не подтвержден</font>";


print("<tr class=tableb>$user<td>$arr[email]</td><td>" . mksize($arr[uploaded]) . "</td><td>" . mksize($arr[downloaded]) . "</td><td>$ratio</td><td>$status</td>");


if ($CURUSER[id] == $id || get_user_class() >= UC_SYSOP) {

print("<td align=center>");

if ($arr[status] == 'pending')

print("<input type=\"checkbox\" name=\"conusr[]\" value=\"" . $arr[id] . "\" />");

print("</td>");

}

print("</tr>");

}

}

if ($CURUSER[id] == $id || get_user_class() >= UC_SYSOP) {

print("<input type=hidden name=email value=$arr[email]>");

print("<tr class=tableb><td colspan=7 align=right><input type=submit value=\"Подтвердить пользователей\"></form></td></tr>");

}

print("</table><br>");


$rul = sql_query("SELECT COUNT(*) FROM invites WHERE inviter = $id") or sqlerr(__FILE__,__LINE__);

$arre = mysql_fetch_row($rul);

$number1 = $arre[0];

$rer = sql_query("SELECT inviteid, invite, time_invited FROM invites WHERE inviter = $id AND confirmed='no'") or sqlerr(__FILE__,__LINE__);

$num1 = mysql_num_rows($rer);


print("<table border=1 width=100% cellspacing=0 cellpadding=5>".

"<tr class=tabletitle><td colspan=6><b>Статус созданых приглашений</b> ($number1)</td></tr>");


if(!$num1) {

print("<tr class=tableb><td colspan=6>На данный момент вами не создано ниодного приглашения.</tr>");

} else {

print("<tr class=tableb><td><b>Код приглашения</b></td><td><b>Дата создания</b></td><td></td></tr>");

for ($i = 0; $i < $num1; ++$i) {

$arr1 = mysql_fetch_assoc($rer);

print("<tr class=tableb><td>$arr1[invite]</td><td>$arr1[time_invited]</td>");

print ("<td><a href=\"invite.php?invite=$arr1[invite]&type=del\">Удалить приглашение</a></td></tr>");

}

}


print("<tr class=tableb><td colspan=7 align=center><form method=get action=invite.php?id=$id&type=new><input type='hidden' name='id' value='$id' /><input type='hidden' name='type' value='new' /><input type=submit value=\"Создать приглашение\"></form></td></tr>");

print("</table>");

}



?>
И вместо
 if ($CURUSER[id] == $id || get_user_class() >= UC_SYSOP) {
надо бы
id=1

что бы создавать ключи мог ТОЛЬКО АДМИН.

От вас жду сроки и цену.

Если уже существует подобный модуль, ссылку прошу предоставить.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...