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

Parašė bad_user· 2008 Rugp. 13 18:08:26
#2

Reiktu manau ne į txt failą o į mysql dėti :)

Parašė bruzgis· 2008 Rugp. 13 18:08:01
#3

i txt faila raso tik tuos kurie buvo prisijunge, o visus ip ima is mysql
Oj pamirsau pakeist varotojo id i vartotojo vardas :D pasikeisit patys

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

Parašė MAnjack· 2008 Rugp. 13 18:08:36
#4

Nežinau .txt nieko gero :| Dalykas įdomus, tačiau dar galima tobulint manau :)

Parašė bruzgis· 2008 Rugp. 13 20:08:08
#5

Galima
Butu malonu isgirst pasiulymus, pageidavimus ir papeikimus :)

Parašė ramon· 2008 Rugp. 13 20:08:34
#6

Buciau nuotaikoi pasidalinciau kur kas lengvesnia ir tobulesniu protect`u. :|

Parašė MAnjack· 2008 Rugp. 13 20:08:18
#7

Tai grįšk į nuotaiką :D

Parašė ex-it· 2008 Rugp. 13 20:08:48
#8

Arba nesigirk, kad turi, jei neduosi >.<

Parašė bruzgis· 2008 Rugp. 13 20:08:35
#9

Ramon prasideda tavo visi: AS galeciau geriau, susiprogramuociau geriau... Gal gana sakau? Gali geriau, davai padaryk geriau ir pateik. Negaliu pernest tokiu pasakymu: galiu geriau. Tau nuo to geriau kad taip pasakiai? Ka? :[

Parašė ex-it· 2008 Rugp. 13 20:08:07
#10

"Aš ir turiu, bet 1000x geresnį ir niekam neduosiu" ;)

Parašė ramon· 2008 Rugp. 13 20:08:18
#11

Pasedekit google paskaitikit tutus jei iki siol negirdejot apie proctect ir kitaip sakant kaip galima apsaugoti tam tikra faila... Toks jausmas kad jus tik ir sedit siame forume ir laukiat kol koks nors stebuklas jums monike pasirodis... php.net irgi daug apie tai yra kalba tai kad, o del jusu cia pasakimu tai ir kalbos negali buti su jumis...

Parašė bruzgis· 2008 Rugp. 13 21:08:44
#12

Zodziu i lankas krypsti... tai sedek skaityk darykis kaip nori, bet aš atejes i tokias temas cia nesigirk. uZknisa ir ne viena viena o dauguma. eik i offtopica ir kur nors. Si tema skirta ne tavo pagyroms o sio modo aptarimui

Parašė ramon· 2008 Rugp. 13 21:08:48
#13

Gerai tu tik neverk svarbiausia nes verki kaip 12metis.. Tu nesupik,,

Parašė Fanio· 2008 Rugp. 13 21:08:42
#14

Na įdomus dalykas :)