<?
#######################################################
# раздача ICQ номерков #
# #
# Автор : Неизвестен #
# Автор модификации : Дальше... #
# E-mail : [email protected] #
# ICQ : 362548079 #
# #
# По всем вопросам пишите в ICQ. #
#######################################################
include_once("mysql.php");
include_once("myprefs.php");
$sysprefs=array(
"ICQ_NUMS" => "Сколько ICQ может брать пользователь (max=100, 0=бесконечно)",
"IP_TIME" => "Время актуальности IP-адреса(часов) (max=72, 0=бесконечно)",
"SITE_NAME" => "Название сайта (для использование в письмах пользователям)",
"ADMIN_EMAIL" => "E-mail администратора, с которого слать письма"
);
$viewprefs=array(
"ICQ_LIST_MESSAGE"=>"Сообщение над списком ICQ",
"ICQ_LIST_IPERRORMESSAGE"=>"Сообщение, если пользователь уже брал ICQ с данного IP",
"ICQ_LIST_STYLE"=>"Стиль номера в списке ICQ",
"CAPTION_MESSAGE_STYLE"=>"Стиль заглавного сообщения в формах",
"POSITIVE_STYLE"=>"Стиль положительного ответа",
"NEGATIVE_STYLE"=>"Стиль отрицательного ответа",
"BUTTONS_STYLE"=>"Стиль кнопок",
"FIELDS_STYLE"=>"Стиль полей",
"TABLE_WIDTH"=>"Ширина области вывода",
"TABLE_BGCOLOR"=>"Цвет фона области вывода"
);
define("CLASS_KEYWORD","class:");
class OutTempl
{
var $prefs;
function OutTempl()
{
$this->prefs=new MyPrefsList;
}
function GetStyle($prefname)
{
$str=$this->prefs->GetPref($prefname);
if (strpos($str,CLASS_KEYWORD)!==FALSE) return "class=".substr($str,strlen(CLASS_KEYWORD))."";
else return "style=\"$str\"";
}
function PrintTempl($caption, $center, $actions, $form=false)
{
echo '
<table cellspacing=0 cellpadding=0 border=0 width=100% height=100% bgcolor="'.$this->prefs->GetPref('TABLE_BGCOLOR').'"><tr><td width=100% height=100% valign=top align=left>
<table cellspacing=0 cellpadding=4 border=0 width="'.$this->prefs->GetPref('TABLE_WIDTH').'">';
if ($form) echo '<form method=POST>';
echo '<tr>
<td '.$this->GetStyle('CAPTION_MESSAGE_STYLE').' align=center>'.$caption.'</td>
</tr>
<tr>
<td '.$this->GetStyle('ICQ_LIST_STYLE').' align=center>'.$center.'</td>
</tr>
<tr>
<td align=center>'.$actions.'</td>
</tr>';
if ($form) echo '</form>';
echo '</table>
</td></tr></table>';
}
function PrintMessage($message, $negative=false, $caption=NULL)
{
echo '
<table cellspacing=0 cellpadding=0 border=0 width=100% height=100% bgcolor="'.$this->prefs->GetPref('TABLE_BGCOLOR').'"><tr><td width=100% height=100% valign=top align=left>
<table cellspacing=0 cellpadding=4 border=0 width="'.$this->prefs->GetPref('TABLE_WIDTH').'">';
if ($caption)
{
echo'
<tr>
<td '.$this->GetStyle('CAPTION_MESSAGE_STYLE').' align=center>'.$caption.'</td>
</tr>';
}
echo '
<tr>
<td ';
if ($negative) echo $this->GetStyle('NEGATIVE_STYLE');
else echo $this->GetStyle('POSITIVE_STYLE');
echo ' align=center>'.$message.'</td>
</tr>
</table>
</td></tr></table>';
}
}
class ICQList
{
var $prefs;
var $templ;
function ICQList()
{
$this->prefs=new MyPrefsList;
$this->templ=new OutTempl;
}
function GetStyle($prefname)
{
$str=$this->prefs->GetPref($prefname);
if (strpos($str,CLASS_KEYWORD)!==FALSE) return "class=".substr($str,strlen(CLASS_KEYWORD))."";
else return "style=\"$str\"";
}
function IsNumFree($num)
{
if (!$num) return false;
if ($res=mysql_query("SELECT * FROM icqlist WHERE `icq`='$num'"))
{
if ($arr=mysql_fetch_array($res))
{
if ($arr['userid']==-1&&$arr['active']==1) return $arr['pass'];
}
}
return false;
}
function IsNumExists($num)
{
if (!$num) return false;
if ($res=mysql_query("SELECT * FROM icqlist WHERE `icq`='$num'"))
{
if ($arr=mysql_fetch_array($res))
{
return $arr['pass'];
}
}
return false;
}
function GetData($num)
{
if (!$num) return false;
if ($res=mysql_query("SELECT * FROM icqlist LEFT JOIN icqusers ON icqlist.userid=icqusers.id WHERE `icq`='$num'"))
{
if ($arr=mysql_fetch_array($res))
{
return array('pass'=>$arr['pass'],'email'=>$arr['email']);
}
}
return false;
}
function CanGetByEmail($email)
{
if (!$email) return false;
if ($res=mysql_query("SELECT count FROM icqusers LEFT JOIN icqlist ON icqusers.id=icqlist.userid WHERE email='$email'"))
{
if ($arr=mysql_fetch_array($res))
{
if ($arr[0]>=$this->prefs->GetPref('ICQ_NUMS')) return false;
}
return true;
}
return false;
}
function CanShowList()
{
if ($res=mysql_query("SELECT `ip` FROM `icqusers` WHERE `ip`=\"".$_SERVER['REMOTE_ADDR']."\" AND `time`>".(time()-$this->prefs->GetPref('IP_TIME')*3600)))
{
if (mysql_num_rows($res)>0) return false;
else return true;
}
else return false;
}
function PrintICQList()
{
// if ($this->CanShowList())
// {
if ($res=mysql_query('SELECT * FROM icqlist WHERE userid=-1 AND active=1'))
{
$first=true;
$c.='<table cellspacing=0 cellpadding=0 border=0>';
while ($arr=mysql_fetch_array($res))
{
$c.='<tr><td width=50% align=right><input type=radio name=icq_num value="'.$arr['icq'].'" ';
if ($first)
{
$c.='CHECKED';
$first=false;
}
$c.='></td><td width=50% align=left><font '.$this->GetStyle('ICQ_LIST_STYLE').'>'.$arr['icq'].'</font></td></tr>';
}
$c.='</table>';
}
if ($first) $c.='нет больше номеров';
if (!$first) $act='<input type=submit name=icq_submit value="Взять номер" '.$this->GetStyle('BUTTONS_STYLE').'><font style="font-size: 1px;"><br><br></font>';
$act.='<input type=submit name=icq_remind value="Забыл пароль?" '.$this->GetStyle('BUTTONS_STYLE').'>';
$this->templ->PrintTempl($this->prefs->GetPref('ICQ_LIST_MESSAGE'),$c,$act,true);
// }
// else
// {
// $this->templ->PrintMessage($this->prefs->GetPref('ICQ_LIST_IPERRORMESSAGE'),true);
// }
}
function PrintEmailForm($icqnum,$email=NULL,$remind=false)
{
$c='<input type=text name=email value="'.$email.'" '.$this->GetStyle('FIELDS_STYLE').'><br>
<input type=hidden name=icq_num value="'.$icqnum.'">';
if (!$email) $capt='Введите Ваш e-mail<small>(на него придет пароль и номер)</small>:';
else $capt='E-mail введен неверно, повторите ввод:';
if (!$remind) $act='<input type=submit name=email_submit value="Продолжить" '.$this->GetStyle('BUTTONS_STYLE').'><font style="font-size: 1px;"><br><br></font>';
else $act='<input type=submit name=email_remind_submit value="Продолжить" '.$this->GetStyle('BUTTONS_STYLE').'><font style="font-size: 1px;"><br><br></font>';
$act.='<input type=submit name=back value="Назад" '.$this->GetStyle('BUTTONS_STYLE').'>';
$this->templ->PrintTempl($capt,$c,$act,true);
}
function PrintUserICQ($email=NULL)
{
if (!$email) return false;
if ($res=mysql_query("SELECT * FROM icqlist INNER JOIN icqusers ON icqlist.userid=icqusers.id WHERE icqusers.email='$email'"))
{
$first=true;
$c.='<table cellspacing=0 cellpadding=0 border=0>';
while ($arr=mysql_fetch_array($res))
{
$nums[]=$arr['icq'];
$c.='<tr><td width=50% align=right><input type=radio name=icq_num value="'.$arr['icq'].'" ';
if ($first)
{
$c.='CHECKED';
$first=false;
}
$c.='></td><td width=50% align=left><font '.$this->GetStyle('ICQ_LIST_STYLE').'>'.$arr['icq'].'</font></td></tr>';
}
$c.='</table>';
}
if ($first) $c.='нет в базе';
$capt='Полученные Вами ICQ';
if (!$first) $act='<input type=submit name=remind_submit value="Напомнить пароль" '.$this->GetStyle('BUTTONS_STYLE').'><font style="font-size: 1px;"><br><br></font>';
$act.='<input type=submit name=back value="Назад" '.$this->GetStyle('BUTTONS_STYLE').'>';
$act.='<input type=hidden name=email value="$email">';
$this->templ->PrintTempl($capt,$c,$act,true);
}
function SendPass($num,$pass,$email)
{
$message="Вы заказали ICQ на сайте \"".$this->prefs->GetPref('SITE_NAME')."\"\n Номер: $num\n Пароль: $pass\n С уважением, Администрация сайта\n
PS. Администрация не гарантирует, что все номерки рабочие.";
$subject="ICQ с сайта ".$this->prefs->GetPref('SITE_NAME');
$message=convert_cyr_string($message,w,k);
$subject=convert_cyr_string($subject,w,k);
$headers="From: ".$this->prefs->GetPref('ADMIN_EMAIL')."\nContent-Type: text/plain; charset=cp1251\n";
return @mail($email,$subject,$message, $headers);
}
function SaveHit($email,$ip,$icq)
{
if (!$email||!$ip||!$icq) return false;
if ($res=mysql_query("SELECT * FROM icqusers WHERE `email`='$email'"))
{
if ($arr=mysql_fetch_array($res))
{
$id=$arr['id'];
mysql_query("UPDATE icqusers SET `ip`='".$ip."', `time`='".time()."', `count`='".($arr['count']+1)."' WHERE `id`=$id");
}
else // Нужно добавлять
{
// Добавляем
mysql_query("INSERT INTO icqusers (`ip`,`email`,`time`,`count`) VALUES ('$ip','$email','".time()."',1)");
$id=mysql_insert_id();
}
if ($id&&mysql_query("UPDATE icqlist SET `userid`=$id, `active`=0 WHERE `icq`=$icq")) return true;
}
return false;
}
function GetICQ($num,$email)
{
if (!$num||!$email) return false;
if ($pass=$this->IsNumFree($num))
{
$this->SaveHit($email,$_SERVER['REMOTE_ADDR'],$num);
$this->SendPass($num,$pass,$email);
$this->templ->PrintMessage("Пароль от ICQ номер $num был отправлен на Ваш e-mail $email", false ,'Поздравляем!');
}
else
{
$this->templ->PrintTempl('','<font '.$this->GetStyle('NEGATIVE_STYLE').'>Выбранный Вами номер уже взят кем-то другим. Попробуйте выбрать другой номер.</font>', '<input type=submit name=back value="Назад" '.$this->GetStyle('BUTTONS_STYLE').'>', true);
}
}
}
class AdminTempl
{
var $theader;
var $tfooter;
function SetHF($caption, $selmenuitem, $state)
{
$menuitems=array(
array('capt'=>'Раздача ICQ', 'itemlink'=>'admin.php'),
array('capt'=>'Пользователи', 'itemlink'=>'admin_users.php'),
array('capt'=>'Настройки', 'itemlink'=>'admin_prefs.php')
);
if (!isset($caption)) $caption="Раздача асек";
if (!isset($selmenuitem)) $selmenuitem=0;
if (!isset($state)) $state='ok';
$this->theader="<html>
<head>
<title>$caption</title>
<style type=\"text/css\">
<!--
body {
font: 10pt arial tahoma verdana sans-serif;
background-color: #ffffff;
margin: 2px;
text-align: left;
}
table {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 8pt;
}
a.menu {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: underline;
font-size: 10pt;
font-weight: bold;
}
a.menu:hover {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 10pt;
font-weight: bold;
}
.menu {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 10pt;
}
input {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 8pt;
}
textarea {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 8pt;
}
a {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: underline;
font-weight: bold;
font-size: 8pt;
}
a:hover {
color: #dd2200;
font-family: Tahoma,Verdana;
text-decoration: none;
font-weight: bold;
font-size: 8pt;
}
.sel {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 8pt;
width: 150;
}
-->
</style>
<SCRIPT LANGUAGE=\"javascript\">
function AutoCheck(chname)
{
document.listform.chname.checked=true;
}
</script>
</head>
<body>
<table cellspacing=1 cellpadding=2 border=0 width=100%>
<tr>
<td bgcolor=CCCCFF class=menu align=center>
<b>Меню:</b> ";
foreach ($menuitems as $menuitem)
{
if ($menuitems[$selmenuitem]!=$menuitem) $this->theader.='[ <a href="'.$menuitem['itemlink'].'">'.$menuitem['capt'].'</a> ] ';
else $this->theader.='[ '.$menuitem['capt'].' ] ';
}
$this->theader.="
</td>
</tr>
<tr>
<td>
<br>
";
$this->tfooter="<br></td>
</tr>
<tr>
<td bgcolor=CCCCFF align=left>
<b>Состояние:</b> $state
</td>
</tr>
<tr>
<td align=right>
by <a href=mailto:[email protected]>Stepanov Victor</a>
</td>
</tr>
</table>
</body></html>";
}
function PrintTempl($caption, $selmenuitem, $state, $center)
{
$this->SetHF($caption, $selmenuitem, $state);
echo $this->theader.$center.$this->tfooter;
}
}
class ICQListAdmin
{
var $templ;
var $prefs;
function ICQListAdmin()
{
$this->templ=new AdminTempl;
$this->prefs=new MyPrefsList;
}
function ShowNumbersList($result)
{
$query="SELECT * FROM icqlist LEFT JOIN icqusers ON icqlist.userid=icqusers.id";
if ($this->prefs->GetPref('ICQLIST_STATE')==2||!$this->prefs->GetPref('ICQLIST_STATE')) $query.=" WHERE `active`=1 AND `userid`=-1";
else
if ($this->prefs->GetPref('ICQLIST_STATE')==3) $query.=" WHERE `userid`<>-1";
else
if ($this->prefs->GetPref('ICQLIST_STATE')==4) $query.=" WHERE `userid`=-1";
$query.=" ORDER BY icqlist.active DESC";
if ($res=mysql_query($query))
{
// Хедер
$c='
<form name=listform method=POST>
<table cellspacing=1 cellpadding=5 border=0 bgcolor=#CCCCCC>
<tr>
<td bgcolor=#EEEEEE>Отображать:</td>
<td bgcolor=#ffffff>
<select name=showtype size=1 class=sel onchange="document.listform.submit(); return true;">
<option value=1'; if ($this->prefs->GetPref('ICQLIST_STATE')==1) $c.=" SELECTED"; $c.='>все номера
<option value=2'; if ($this->prefs->GetPref('ICQLIST_STATE')==2||!$this->prefs->GetPref('ICQLIST_STATE')) $c.=" SELECTED"; $c.='>только активные
<option value=3'; if ($this->prefs->GetPref('ICQLIST_STATE')==3) $c.=" SELECTED"; $c.='>только, которые забрали
<option value=4'; if ($this->prefs->GetPref('ICQLIST_STATE')==4) $c.=" SELECTED"; $c.='>активные+неактивные
</select>
</td>
</tr>
</table>
<br>
<table cellspacing=1 cellpadding=5 border=0 bgcolor=#CCCCCC>
<tr>
<td bgcolor=#EEEEEE>
Отметка
</td>
<td bgcolor=#EEEEEE>
Номер ICQ
</td>
<td bgcolor=#EEEEEE>
Пароль
</td>
<td bgcolor=#EEEEEE>
Кто взял
</td>
<td bgcolor=#EEEEEE>
Активна
</td>
</tr>';
while ($arr=mysql_fetch_array($res))
{
if ($arr[userid]!=-1) $bgcolor='#FFE8E8';
else $bgcolor='#FFFFFF';
$c.="
<tr>
<td align=center bgcolor=$bgcolor>
<input type=checkbox name=\"check_$arr[icq]\" value=0>
</td>
<td bgcolor=$bgcolor>
<input type=text onChange=\"document.listform.check_$arr[icq].checked=true;\" name=list_number_$arr[icq] value='$arr[icq]'>
</td>
<td bgcolor=$bgcolor>
<input type=text onChange=\"document.listform.check_$arr[icq].checked=true;\" name=list_pass_$arr[icq] value='$arr[pass]'>
</td>
<td bgcolor=$bgcolor>";
if ($arr[userid]!=-1) $c.='email:'.$arr[email].'<br>ip:'.$arr[ip];
else $c.='Никто не взял';
$c.="</td>
<td align=center bgcolor=$bgcolor>
<input type=checkbox onChange=\"document.listform.check_$arr[icq].checked=true;\" name=list_active_$arr[icq] "; if ($arr[active]!=0&&$arr[userid]==-1) $c.="value=1 checked"; else $c.="value=1"; $c.=">
</td>
</tr>";
}
$c.='</table>';
$c.='<br>
c отмеченными: <input type=submit onclick="if (confirm(\'Вы уверены в необходимости удаления выбранных ICQ?\')) {return true;} else {return false;}" name=delicq value="Удалить"> <input type=submit name=editicq value="Редактировать"><br><br><br>
<table cellspacing=1 cellpadding=2 border=0 bgcolor=#CCCCCC>
<tr>
<td bgcolor=#EEEEEE align=center>
Номер ICQ:
</td>
<td bgcolor=#EEEEEE align=center>
Пароль:
</td>
</tr>
<tr>
<td bgcolor=#ffffff align=center>
<input type=text name=add_number>
</td>
<td bgcolor=#ffffff align=center>
<input type=text name=add_pass>
</td>
</tr>
<tr>
<td bgcolor=#ffffff colspan=2 align=center>
<input type=submit name=addicq style="width: 200;" value="Добавить">
</td>
</tr>
</table>
</form>';
$this->templ->PrintTempl('Раздача ICQ - работа со списком',0,$result,$c);
}
else
{
echo 'Ошибка, при выполнении запроса к базе данных. Ответ MySQL:'.mysql_error();
}
}
function AddNumber($num,$pass)
{
if (!$num||!$pass||!is_numeric($num)) return 'Номер, либо пароль заданы неправильно!';
if (mysql_query("INSERT INTO icqlist (`icq`,`pass`) VALUES ('$num','$pass')")) return "Номер $num добавлен успешно!";
else return 'Ошибка, при выполнении запроса к базе данных. Ответ MySQL:'.mysql_error();
}
function EditNumber($num,$newnum,$pass,$active)
{
if (mysql_query("UPDATE icqlist SET `icq`=$newnum, `pass`='$pass', `active`='$active' WHERE `icq`=$num")) return "Номер $num успешно отредактирован<br>";
else return 'Ошибка, при выполнении запроса к базе данных. Ответ MySQL:'.mysql_error();
}
function DelNumber($num)
{
if (mysql_query("DELETE FROM icqlist WHERE icq=$num")) return "Номер $num успешно удален<br>";
else return 'Ошибка, при выполнении запроса к базе данных. Ответ MySQL:'.mysql_error();
}
function DelNumbers()
{
while (list($key,$value) = each($_REQUEST))
{
if (strpos($key,'check_')!==FALSE)
{
$num=substr($key,6);
$result.=$this->DelNumber($num);
}
}
return $result;
}
function EditNumbers()
{
while (list($key,$value) = each($_REQUEST))
{
if (strpos($key,'check_')!==FALSE)
{
$num=substr($key,6);
if ($_REQUEST['list_active_'.$num]==1) $result.=$this->EditNumber($num,$_REQUEST['list_number_'.$num],$_REQUEST['list_pass_'.$num],1);
else $result.=$this->EditNumber($num,$_REQUEST['list_number_'.$num],$_REQUEST['list_pass_'.$num],0);
}
}
return $result;
}
}
class PrefsAdmin
{
var $templ;
var $prefs;
function PrefsAdmin()
{
$this->templ=new AdminTempl;
$this->prefs=new MyPrefsList;
}
function ShowForm($result=NULL)
{
if (!$result) $result='ok';
$c="<form method=POST>
<table cellspacing=1 cellpadding=3 border=0 bgcolor=#CCCCCC>
<tr>
<td colspan=2 bgcolor=#EEEEEE>
<b>Параметры системы</b>
</td>
</tr>";
reset($GLOBALS['sysprefs']);
while (list($key,$value) = each($GLOBALS['sysprefs']))
{
$c.="<tr>
<td bgcolor=#ffffff>
".$value."
</td>
<td bgcolor=#ffffff>
<input type=text name=$key style=\"width: 300px;\" value=\"".$this->prefs->GetPref($key)."\">
</td>
</tr>";
}
$c.=" <tr>
<td colspan=2 bgcolor=#EEEEEE>
<b>Настройки внешнего вида <br>В полях для стилей, можно задавать стили CSS либо классы CSS<br> (в таком случае перед именем класса обязательно нужно указать ключевое слово \"class:\",<br> например \"class: table\")</b>
</td>
</tr>";
reset($GLOBALS['viewprefs']);
while (list($key,$value) = each($GLOBALS['viewprefs']))
{
$c.="<tr>
<td bgcolor=#ffffff>
".$value."
</td>
<td bgcolor=#ffffff>
<input type=text name=$key style=\"width: 300px;\" value=\"".$this->prefs->GetPref($key)."\">
</td>
</tr>";
}
$c.=" <tr>
<td colspan=2 bgcolor=#ffffff align=center>
<input type=submit name=updateprefs value=\"Обновить данные\">
</td>
</tr>
</table>
</form>";
$this->templ->PrintTempl('Раздача ICQ - Настройки', 2, $result, $c);
}
function UpdatePrefs()
{
if ($_REQUEST['ICQ_NUMS']<100&&$_REQUEST['ICQ_NUMS']>=0) if ($this->prefs->UpdatePref("ICQ_NUMS",$_REQUEST['ICQ_NUMS'])) $fine.=$GLOBALS['sysprefs']['ICQ_NUMS'].", ";
if ($_REQUEST['IP_TIME']<72&&$_REQUEST['IP_TIME']>=0) if ($this->prefs->UpdatePref("IP_TIME",$_REQUEST['IP_TIME'])) $fine.=$GLOBALS['sysprefs']['IP_TIME'].", ";
if ($this->prefs->UpdatePref("SITE_NAME",$_REQUEST['SITE_NAME'])) $fine.=$GLOBALS['sysprefs']['SITE_NAME'].", ";
if ($this->prefs->UpdatePref("ADMIN_EMAIL",$_REQUEST['ADMIN_EMAIL'])) $fine.=$GLOBALS['sysprefs']['ADMIN_EMAIL'].", ";
reset($GLOBALS['viewprefs']);
while (list($key,$value) = each($GLOBALS['viewprefs']))
{
if ($this->prefs->UpdatePref($key,$_REQUEST[$key])) $fine.=$value.", ";
}
return "Поля $fine обновлены успешно!";
}
}
class UserAdmin
{
var $templ;
function UserAdmin()
{
$this->templ=new AdminTempl;
}
function LoadUser($id)
{
if ($res=mysql_query("SELECT * FROM icqadminusers WHERE id=$id"))
{
if ($arr=mysql_fetch_array($res))
{
return array('id'=>$arr['id'],'login'=>$arr['login'],'pass'=>$arr['pass']);
}
}
return false;
}
function ShowUserForm($loaded=NULL,$result='ok')
{
$tekuser=$this->LoadUser($loaded);
$c="<table cellspacing=1 cellpadding=3 border=0 bgcolor=#CCCCCC>
<form method=POST>
<tr>
<td bgcolor=#ffffff>
<center><b>Пользователи:</b><br></center>
<select name=seluser size=5 class=sel>";
if ($res=mysql_query("SELECT * FROM icqadminusers"))
{
while ($arr=mysql_fetch_array($res))
{
$c.="<option value=$arr[id]";
if ($loaded==$arr['id']) $c.=" SELECTED";
$c.=">$arr[login]";
}
}
$c.="</select>
</td>
<td bgcolor=#ffffff align=center>
<input type=submit name=loaduser value=\"Загрузить »\"><br>
<br>
<input type=submit name=deluser value=\"Удалить\">
</td>
<td bgcolor=#ffffff>
<table cellspacing=1 cellpadding=3 border=0>
<tr>
<td>
Имя
</td>
<td>
<input type=text name=username value=\"".$tekuser[login]."\">
</td>
</tr>
<tr>
<td>
Пароль
</td>
<td>
<input type=password name=pass value=\"\">
</td>
</tr>
<tr>
<td colspan=2>
<input type=submit name=adduser value=\"Добавить\">
<input type=submit name=edituser value=\"Редактировать\">
<input type=hidden name=loadedid value=\"".$tekuser[id]."\">
</td>
</tr>
</table>
</td>
</tr>
</form>
</table>
<br><br>";
$this->templ->PrintTempl('Раздача ICQ - Пользователи', 1, $result, $c);
}
function UserExists($login)
{
if ($res=mysql_query("SELECT * FROM icqadminusers WHERE login='$login'"))
{
if ($arr=mysql_fetch_array($res))
{
return $arr['id'];
}
}
return false;
}
function AddUser()
{
if (!$_REQUEST['username']||!$_REQUEST['pass']||!eregi('[a-z|A-Z|_]{4,}',$_REQUEST['username'])) return 'Добавдение невозможно. Не заданы (либо заданы неправильно) имя или пароль пользователя!';
if ($this->UserExists($_REQUEST['username'])) return 'Добавление невозможно. Пользователь с таким именем уже существует!';
if (mysql_query("INSERT INTO icqadminusers (`login`,`pass`) VALUES ('".strip_tags($_REQUEST['username'])."','".md5($_REQUEST['pass'])."')")) return 'Пользователь с именем '.$_REQUEST['username'].' успешно добавлен!';
else return 'Не удалось добавить пользователя';
}
function DelUser()
{
if (!$_REQUEST['seluser']) return 'Пользователь не выбран';
if (mysql_query("DELETE FROM icqadminusers WHERE id=".$_REQUEST['seluser'])) return "Пользователь успешно удален!";
else return "Не удалось удалить пользователя!";
}
function EditUser()
{
if (!$_REQUEST['loadedid']) return 'Пользователь не загружен';
if (!$_REQUEST['username']||!eregi('[a-z|A-Z|_]{4,}',$_REQUEST['username'])) return 'Редактирование невозможно. Не задано (либо задано неправильно) имя пользователя!';
if ($this->UserExists($_REQUEST['username'])&&$this->UserExists($_REQUEST['username'])!=$_REQUEST['loadedid']) return 'Редактирование невозможно. Пользователь с таким именем уже существует!';
$query="UPDATE icqadminusers SET `login`='".$_REQUEST['username']."'";
if ($_REQUEST['pass']) $query.=",`pass`='".md5($_REQUEST['pass'])."'";
$query.=" WHERE id=".$_REQUEST['loadedid'];
if (mysql_query($query)) return 'Пользователь с именем '.$_REQUEST['username'].' успешно отредактирован!';
else return 'Не удалось отредактировать пользователя';
}
}
class Auth
{
function Authenticate()
{
while (!$this->CheckUser())
{
header("WWW-Authenticate: Basic realm=\"Раздача ICQ\"");
header("HTTP/1.0 401 Unauthorized");
header('status: 401 Unauthorized');
echo "Доступ запрещен";
exit;
}
session_start();
if (!$_SESSION['auth_user']||!$_SESSION['auth_pw'])
{
$_SESSION['auth_user']=$_SERVER['PHP_AUTH_USER'];
$_SESSION['auth_pw']=$_SERVER['PHP_AUTH_PW'];
$_SERVER['PHP_AUTH_PW']=NULL;
}
}
function CheckUser()
{
if (!isset($_SESSION['auth_user']))
{
$u_login=$_SERVER['PHP_AUTH_USER'];
$u_pass=$_SERVER['PHP_AUTH_PW'];
}
else
{
$u_login=$_SESSION['auth_user'];
$u_pass=$_SESSION['auth_pw'];
}
if ($u_login==""||$u_pass=="") return false;
if ($res=mysql_query("SELECT login FROM `icqadminusers` WHERE login=\"$u_login\" and pass=\"".md5($u_pass)."\""))
{
if (mysql_num_rows($res)<=0) return false;
else return true;
}
else return false;
}
}
?>