Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Patobulintas ir apsaugotas adminu pridejimas

Parašė bruzgis· 2008 Rugp. 13 18:08:19
#1

Sory už pavadinima, niko doro nesugalvojau :D

Taigi ši syk patobulinau ramon moda. Nuo šiol ip bus galima pridet per adminke, ir tai labai gerai tiems kas turi warezus ar pramogu saitus, labai lengva pridet uploaderius, moderatorius, administratorius, vyr.administratorius ir savininkus. Tiesiog pasirenkat nari ir pasirenkat statusa jo. Automatiškai prideda to nario ip, ir jam irašo reikiamus user_rightus.

taigi pradesim. Susikuriam faila ADMINAI.PHP
ir jame irašom visa šita scripta:

<?

/*---------------------------------------------------+
| PHP-Fusion 6 Content Management System
+----------------------------------------------------+
| Copyright © 2002 - 2005 Nick Jones
| http://www.php-fusion.co.uk/
+----------------------------------------------------+
| Autorius: chipass
| chipass@gmail.com
| www.m4u.lt
+----------------------------------------------------*/
require_once "../maincore.php";
require_once BASEDIR."subheader.php";
require_once ADMIN."navigation.php";
$ip = getenv("REMOTE_ADDR");
$leistini = 'Jusu ip';
$result = dbquery("SELECT * FROM ".$db_prefix."admin_ip");
while ($data = dbarray($result)) {
$leistini .= "".$data['user_ip']."|";
}

$leistini_ip = explode("|", $leistini);
$nikas = $userdata['user_name'];
$laikas = showdate("longdate", time());

$irasas=$laikas."|".$ip."|".$nikas;

if (!in_array($ip, $leistini_ip)) {
    $file=BASEDIR."adm468468468768inai651846848asdasdasd13213487.txt";

    $duomenys=fopen($file, "a");

        fwrite($duomenys, "$irasas\n");
    fclose($duomenys);
   $result = dbquery("INSERT INTO ".$db_prefix."blacklist (blacklist_ip, blacklist_reason) VALUES ('$ip', 'M&#235;ginimas &#225;sibrauti &#225; Admin valdym&#224;.')");
   redirect(BASEDIR."index.php");
}
if (!iSUPERADMIN || $userdata['user_rights'] == "") fallback("../index.php");
if (!checkrights("S")) fallback("../index.php");


if (isset($_POST['add_admin'])) {
    $user_id = $_POST['user_id'];
   $user_ip = $_POST['user_ip'];
   $user_statusas = $_POST['user_statusas'];
   $result = dbquery("SELECT * FROM ".$db_prefix."admin_ip WHERE user_id = '".$user_id."'");
   if (dbrows($result) == 0) {
   
   $result = dbquery("INSERT INTO ".$db_prefix."admin_ip (user_id, user_ip, user_pridetas, user_statusas) VALUES ('$user_id', '$user_ip', '".time()."', '$user_statusas')");
   if($user_statusas == 'uploader') { $result = dbquery("UPDATE ".$db_prefix."users SET user_level='102', user_rights='PH.N.D.A.W' WHERE user_id='$user_id'");}
   elseif($user_statusas == 'moderator') { $result = dbquery("UPDATE ".$db_prefix."users SET user_level='102', user_rights='PO.FQ.F.PH.N.D.A.W.C.S.SU' WHERE user_id='$user_id'");}
   elseif($user_statusas == 'admin') { $result = dbquery("UPDATE ".$db_prefix."users SET user_level='102', user_rights='PO.FQ.F.PH.NC.N.IM.D.DC.A.AC.W.WC.B.C.S.M.SU.UG' WHERE user_id='$user_id'");}
   elseif($user_statusas == 'super_admin') { $result = dbquery("UPDATE ".$db_prefix."users SET user_level='103', user_rights='PO.CP.FQ.F.PH.NC.N.IM.D.DC.A.AC.W.WC.AD.B.C.S.M.SU.UG.SL' WHERE user_id='$user_id'");}
   elseif($user_statusas == 'owner') { $result = dbquery("UPDATE ".$db_prefix."users SET user_level='103', user_rights='A.AC.AD.B.C.CP.DB.DC.D.FQ.F.IM.I.IP.M.N.NC.P.PH.PI.PO.S.SL.S1.S2.S3.S4.S5.S6.S7.SU.UG.U.W.WC' WHERE user_id='$user_id'");}
   opentable('D&#235;mesio!');
   echo "<center><font color='green'>Vartotojas s&#235;kmingai prid&#235;tas prie komandos.</font></center>";
   closetable();
}
else {
opentable('D&#235;mesio!');
echo "<center><font color='red'>&#208;is narys ir taip jau komandos narys<br>Nor&#235;dami pakelti arba suma&#254;inti &#240;io nario pareigas, <br>pirma j&#225; pa&#240;alinkite i&#240; pareigø, tada v&#235;l prid&#235;kite</center></font>";
closetable();
} }

if (isset($_GET['veiksmas']) && $_GET['veiksmas'] == "pasalinti")
   {
if (isset($id) && !isNum($id)) fallback("../index.php");
      $result = dbquery("DELETE FROM ".$db_prefix."admin_ip WHERE user_id='$id'");
      $result = dbquery("UPDATE ".$db_prefix."users SET user_level='101', user_rights='' WHERE user_id='$id'");
      opentable('D&#235;mesio!');
      echo "<center><b><font color='brown'>Vartotojas s&#235;kmingai pa&#240;alintas i&#240; komandos.</font></center>";
      closetable();
   }

if (isset($_GET['veiksmas']) && $_GET['veiksmas'] == "koreguoti")
   {
if (isset($id) && !isNum($id)) fallback("../index.php");
   }

opentable('Prid&#235;ti nauj&#224; komandos nar&#225;');
echo"<form name='adminform' method='post' action='".FUSION_SELF."'>";
echo "
<table border='0' cellpadding='2' style='border-collapse: collapse' bordercolor='#111111' width='100%'>
  <tr>
    <td width='33%'>
    <p align='right'><span lang='lt'>Vartotojo id:</span></td>
    <td width='33%'>";
   $result = dbquery("SELECT * FROM ".$db_prefix."users ORDER BY user_name");
   echo "
<select name='user_id' class='textbox'>\n";
   while ($data = dbarray($result)) {
      echo "<option value='".$data['user_id']."'>".$data['user_name']."</option>\n";
      $ip = $data['user_ip'];
   }
   echo "</select></td>
  </tr>

  <tr>
    <td width='33%'>
    <p align='right'><span lang='lt'>Vartotojo statusas:</span></td>
    <td width='33%'><select size='1' name='user_statusas' class='textbox'>
    <option value='uploader' selected>Uploaderis</option>
    <option value='moderator'>Moderatorius</option>
    <option value='admin'>Adminas</option>
    <option value='super_admin'>Super adminas</option>
    <option value='owner'>Savininkas</option>
    </select></td>
  </tr>
  <tr><td class='tbl2' colspan='2' align='center'><input type='hidden' name='user_ip' value='$ip' size='15' class='textbox'><input type='submit' value='Prid&#235;ti komandos nar&#225;' name='add_admin' class='button'></tr>
</table>
</form>";

closetable();

opentable('Esami komandos nariai');
echo"
<div align='center'>
  <center>
  <table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%' align='center'>
    <tr>
     <td width='1%' height='19' align='center' class='tbl'></td>
      <td width='20%' height='19' align='center' class='tbl'><b>Vartotojo vardas</b></td>
      <td width='5%' height='19' align='center' class='tbl1'><b>ID</span></b></td>
      <td width='5%' height='19' align='center' class='tbl2'><b>IP</span></b></td>
      <td width='20%' height='19' align='center' class='tbl1'><b>Prid&#235;tas</b></td>
     <td width='20%' height='19' align='center' class='tbl1'><b>Statusas</b></td>
      <td width='20%' height='19' align='center' class='tbl2''><b>Veiksmas</b></span></td>
   </tr>";
   $result = dbquery("SELECT * FROM ".$db_prefix."admin_ip ORDER BY user_statusas");
   $nr = 0;
   while ($data = dbarray($result)) {
   $vardas = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_id = ".$data['user_id']." LIMIT 0,1");
   while ($vardenis = dbarray($vardas)) {
   $nr++;
   echo"<tr>
     <td width='1%' height='17' align='center' ><b>$nr.</b></td>
      <td width='20%' height='17' align='center'><a href='".BASEDIR."profile.php?lookup=".$vardenis['user_id']."'>".$vardenis['user_name']."</a></td>
      <td width='5%' height='17' align='center'>".$data['user_id']."</td>
      <td width='5%' height='17' align='center'>".$data['user_ip']."</td>
      <td width='20%' height='17' align='center'>".showdate("shortdate", $data['user_pridetas'])."</td>
      <td width='20%' height='17' align='center'>";
     if ($data['user_statusas'] == 'uploader') { echo "<b><font color='green'>Uploaderis</font></b>"; }
     elseif ($data['user_statusas'] == 'moderator') { echo "<b><font color='green'>Moderatorius</font></b>"; }
     elseif ($data['user_statusas'] == 'admin') { echo "<b><font color='blue'>Administratorius</font></b>"; }
     elseif ($data['user_statusas'] == 'super_admin') { echo "<b><font color='blue'>Vyr. administratorius</font></b>"; }
      elseif ($data['user_statusas'] == 'owner') { echo "<b><font color='red'>&#193;k&#251;r&#235;jas</font></b>"; }
     elseif ($data['user_statusas'] == '') { echo "<b><font color='red'>Baninti!</font></b>"; }
      
     echo "</td>
     <td width='20%' height='17' align='center'><a href='".FUSION_SELF."?veiksmas=pasalinti&id=".$data['user_id']."'>Pa&#240;alinti</a></td>
    </tr>";   
   }}
   echo"
   
  </table>
  </center>
</div>

";
closetable();
?>





Paryškintoj vietoj irašot savo ip (Tai vienintelis kartas kai reikes irašyt ip rankiniu budu.)
Sukuriat pagrindinej direktorijoj pavadinimas.txt faila, ir jo pavadinima irašot vietoj adm468468468768inai651846848asdasdasd13213487. Nepamirškit suchmodint to txt failo i 777.

Toliau visuose failuose kur noresit, kad galetu užeit tik adminas ir tik su tam tikru ip, irašot toki koda:


$ip = getenv("REMOTE_ADDR");
$leistini = '';
$result = dbquery("SELECT * FROM ".$db_prefix."admin_ip");
while ($data = dbarray($result)) {
$leistini .= "".$data['user_ip']."|";
}

$leistini_ip = explode("|", $leistini);
$nikas = $userdata['user_name'];
$laikas = showdate("longdate", time());

$irasas=$laikas."|".$ip."|".$nikas;

if (!in_array($ip, $leistini_ip)) {
    $file=BASEDIR."adm468468468768inai651asdasdas84684813213487.txt";

    $duomenys=fopen($file, "a");

        fwrite($duomenys, "$irasas\n");
    fclose($duomenys);
   $result = dbquery("INSERT INTO ".$db_prefix."blacklist (blacklist_ip, blacklist_reason) VALUES ('$ip', 'M&#235;ginimas &#225;sibrauti &#225; Admin valdym&#224;.')");
   redirect(BASEDIR."index.php");
}




Ir cia pakeiskit to ilgo txt failo pavadinima i savo sukurto txt failo pavadinima.

Toliau duomenu baze: einat i pridetinius puslapius ir irasot toki koda ir spaudziat perziuret:



<?php
$result = dbquery(" CREATE TABLE ".$db_prefix."admin_ip (
  `user_id` smallint(5) NOT NULL,
  `user_ip` varchar(20) NOT NULL,
  `user_pridetas` int(10) NOT NULL,
  `user_statusas` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
$result = dbquery(" CREATE TABLE ".$db_prefix."admin VALUES(111, 'AD', 'admins.gif', 'Adminai', 'adminai.php', 2);");
?>





Cia prinscreen kaip atrodo:
 




Butu malonu isgirst pasiulymus, pageidavimus ir papeikimus :)

Redagavo bruzgis· 2008 Rugp. 13 18:08:50