[Release] AIWeb Public Library

killar4eto

Well-Known Member
Joined
Apr 11, 2009
Messages
920
Reaction score
463
wjt1rm.jpg

Bulgarian
Code:
Здравейте на всички,
от много време не съм качвал нищо, за което съжалявам, но си имах причина. Та това е клас/библиотека в която може да намерите всичко за вашият собствен Mu Web, всичко нужно от А до Я, ест това е само Public release, и повечето работи не са направени докрай
Оригинален размер на файл-а в редове е 5624, а Public е само 1704

[B][SIZE="4"]ПРОЧЕТИ:[/SIZE][/B] Няма да помагам и обяснявам на никой как се работи с класове и функции, моля този файл да се ползва само от хора които знаят как се работи и могат сами да си подкарват всичко от него ;]

[B][SIZE="4"]Copyright:[/SIZE][/B]Всичко е писано от мен с много идеи от моите приятели overLucked и StoneAngel, а Уеб-а който няма да бъде release-нат е по идея на StoneAngel

English
Code:
Hello to everyone,
from a long time I didn't release anything and I am really sorry about that, but I had my own problems that need to solve. So, that's php library file that includes everything that you need for creating your own Mu Online Website it contains everything from A to Z (warp,reset,register...), but I want you to know that's only Public release, that means does not have everything on 100%. Original file size is 5624 rows in public there's only 1704 but it's enought to have normally working website ;]

[B][SIZE="4"]READ:[/SIZE][/B] I will not teach anyone how to work with that file, so please only people that have some experience to work and test it.

[B][SIZE="4"]Copyright:[/SIZE][/B]Everything is created by Me with a lot of ideas from my friends overLucked and StoneAngel. This project is developed from StoneAngel's idea ;]

Може да видите как изглежда из цялостно като се вкара кода в някой дизайн ;]

HOT -> UPDATE 0.1
DEFCON Security Class
Code:
class defcon_library{

//Deffense state 1
function defcon(){

$backupdir = "backup"; 

echo "<meta http-equiv='REFRESH' content='5;URL=./'>";

if(!is_dir($backupdir)){
	print "<b>".ucfirst($backupdir)."</b> not exist in main directory!";
	print "<br/>I want to create a <b><a href='?func=create'>new</a></b> one";
}
else{
$dirscan = scandir("./");
$num = 1;

foreach($dirscan as $value){
	if(!preg_match("/.php/s", $value)){continue;}
	else{
	
	$addfile = $num++;
	
		if(!is_file("./$backupdir/filelist.beam")){
			$backupfile = fopen("./$backupdir/filelist.beam", "w");	
		}
		else{
				$value = basename($value, ".php");
		
				$vzemi = @file_get_contents($value.".php");
				$vzemi2 = @file_get_contents($backupdir."/".(hash_file('sha512', $value.".php")));
		
				if(!file_exists($backupdir."/".(hash_file('sha512', $value.".php")))){
					$error = 1;
					$status = "<font color='#ffae00'>Not exist</font>";
				}
				elseif(!file_exists($value.".php")){
					$error = 1;
					$status = "<font color='red'>Deleted</font>";
				}
				elseif(base64_decode($vzemi2) != $vzemi){
					$error = 1;
					$status = "<font color='red'>Missing/Change</font> | <a href='?func=restore'>Restore it</a>";
				}
				elseif($error == 0){
						$status = "<font color='green'>OK</font>";
						$backupfile = fopen("./$backupdir/filelist.beam", "w+");
						fwrite($backupfile, $addfile);
						@fclose($backupfile);
				}
				else{}
				print ucfirst($value)."- <a href='?func=backup&fileid=$value.php'>Copy it</a> | <a href='?func=remove&fileid=$value.php'>Remove it</a> | Status: $status<br/>";
		}
		
	}
}

}

//Create directory function
if(htmlspecialchars(addslashes($_GET[func])) == "create"){
	mkdir("./$backupdir") or die("<br/>Can't create <b>".ucfirst($backupdir)."</b>, Windows do not allowed it");
	print "<br/><b>".ucfirst($backupdir)."</b> is created";
	echo "<meta http-equiv='REFRESH' content='2;URL=./'>";
}
//Remove function
elseif(htmlspecialchars(addslashes($_GET[func])) == "remove"){
	unlink(htmlspecialchars(addslashes($_GET[fileid])));
	print "<br/><b>".ucfirst(htmlspecialchars(addslashes($_GET[fileid])))."</b> is removed from main directory!";
	echo "<meta http-equiv='REFRESH' content='2;URL=./'>";	
}
//Backup function
elseif(htmlspecialchars(addslashes($_GET[func])) == "backup"){
if(file_exists(hash_file('sha512', $file))){
	print "<br/><b>".ucfirst(htmlspecialchars(addslashes($_GET[fileid])))."</b> exists in <b>".ucfirst($backupdir)."</b> directory!";
	echo "<meta http-equiv='REFRESH' content='2;URL=./'>";
}
else{
	$file = htmlspecialchars(addslashes($_GET[fileid]));
	$file = hash_file('sha512', $file);
	$getcontent = file_get_contents(htmlspecialchars(addslashes($_GET[fileid])));
	$getcontent = base64_encode($getcontent);
	$newfile = fopen("./$backupdir/$file", "w");
	fwrite($newfile, $getcontent);
	@fclose($newfile);
	print "<br/><b>".ucfirst(htmlspecialchars(addslashes($_GET[fileid])))."</b> is store in <b>".ucfirst($backupdir)."</b> directory!";
	echo "<meta http-equiv='REFRESH' content='2;URL=./'>";
}

}

}

}
 

Attachments

  • AIWeb Lib.rar
    9.1 KB · Views: 186
  • AIWeb-Not Public.jpg
    AIWeb-Not Public.jpg
    539.6 KB · Views: 550
Last edited:
Цял месец писане беше, колко часове разговори имаме с StoneAngel няма да казвам ;] :D :D мога да я обновявам от време на време, защото има още доста неща, които мога да ви предоставя. Искам само от Вас като я ползвате да споменете Copyright-а нищо друго. За мен познанието е за всички хора без изключения!
 
  • Like
Reactions: KoHgoMa and ivowe3
Много е добро. Имам 1 предложение. Използвайте while место for. Така сайта става по бърз.
 
На доста места кода може да се направи в пъти по-кратък, но иначе като цяло ми харесва как се е получило :)
 
  • Like
Reactions: killar4eto
едно предложение от мен защо не направите това в масив
Code:
	if($city == "0"){$city = "Lorencia";}
	elseif($city == "1"){$city = "Dungeon";}
	elseif($city == "2"){$city = "Devias";}
	elseif($city == "3"){$city = "Noria";}
	elseif($city == "4"){$city = "LostTower";}
	elseif($city == "5"){$city = "Exile";}
	elseif($city == "6"){$city = "Stadium";}
	elseif($city == "7"){$city = "Atlans";}
	elseif($city == "8"){$city = "Tarkan";}
	elseif($city == "9"){$city = "Devil Square 1";}
	elseif($city == "10"){$city = "Icarus";}
	elseif($city == "11"){$city = "Blood Castle 1";}
	elseif($city == "12"){$city = "Blood Castle 2";}
	elseif($city == "13"){$city = "Blood Castle 3";}
	elseif($city == "14"){$city = "Blood Castle 4";}
	elseif($city == "15"){$city = "Blood Castle 5";}
	elseif($city == "16"){$city = "Blood Castle 6";}
	elseif($city == "17"){$city = "Blood Castle 7";}
	elseif($city == "18"){$city = "Chaos Castle 1";}
	elseif($city == "19"){$city = "Chaos Castle 2";}
	elseif($city == "20"){$city = "Chaos Castle 3";}
	elseif($city == "21"){$city = "Chaos Castle 4";}
	elseif($city == "22"){$city = "Chaos Castle 5";}
	elseif($city == "23"){$city = "Chaos Castle 6";}
	elseif($city == "24"){$city = "Kalima 1";}
	elseif($city == "25"){$city = "Kalima 2";}
	elseif($city == "26"){$city = "Kalima 3";}
	elseif($city == "27"){$city = "Kalima 4";}
	elseif($city == "28"){$city = "Kalima 5";}
	elseif($city == "29"){$city = "Kalima 6";}
	elseif($city == "36"){$city = "Kalima 7(Lost Kalima)";}
	elseif($city == "30"){$city = "Valley of Loren";}
	elseif($city == "31"){$city = "Land of Trials";}
	elseif($city == "33"){$city = "Aida";}
	elseif($city == "34"){$city = "Crywolf Fortress";}
	elseif($city == "37"){$city = "Kantru";}
	elseif($city == "38"){$city = "Kantru 2";}
	elseif($city == "39"){$city = "Kantru 3";}
	elseif($city == "40"){$city = "Silent Map";}
	elseif($city == "41"){$city = "Barracks of Balgass";}
	elseif($city == "42"){$city = "Balgass Refuge";}
	elseif($city == "45"){$city = "Illusion Temple 1";}
	elseif($city == "46"){$city = "Illusion Temple 2";}
	elseif($city == "47"){$city = "Illusion Temple 3";}
	elseif($city == "48"){$city = "Illusion Temple 4";}
	elseif($city == "49"){$city = "Illusion Temple 5";}
	elseif($city == "50"){$city = "Illusion Temple 6";}
	elseif($city == "51"){$city = "Elbeland";}
	elseif($city == "52"){$city = "Blood Castle 8";}
	elseif($city == "53"){$city = "Chaos Castle 7";}
	elseif($city == "56"){$city = "Swamp of Calmness";}
	elseif($city == "57"){$city = "Raklion";}
	elseif($city == "58"){$city = "Raklion Boss";}
	elseif($city == "62"){$city = "Villages Santa";}
	elseif($city == "63"){$city = "Vulcanus";}
	elseif($city == "64"){$city = "Duel Arena";}
	elseif($city == "65"){$city = "Double Gear";}
	elseif($city == "66"){$city = "Double Gear";}
	elseif($city == "67"){$city = "Double Gear";}
	elseif($city == "68"){$city = "Double Gear";}
	elseif($city == "69"){$city = "Empire Fortress";}
	elseif($city == "70"){$city = "Empire Fortress";}
	elseif($city == "71"){$city = "Empire Fortress";}
	elseif($city == "72"){$city = "Empire Fortress";}	
	else{$city=$city;}
 
Мм , има полезни работи. Добре форматирано с коментари. Nice Job :p
 
На пръв поглед виждам някои проблеми.

PHP:
//Function GET Page
	function get_page(){
	$this->x = $_GET[page];
	
	if(isset($this->x)){
		if(is_file("./addons/$this->x.php"))
		{
			include "./addons/$this->x.php";
		}
		else{
			echo "<center><font color='#c42500'>".error480."</font></center>";
		}
	}
	else{
		include "./addons/news.php";
	}
	
	}
//END OF GET Page

Тук не филтрираш "$this->x = $_GET[page];" и може да бъде инклуднат всеки файл от всяка директория.

PHP:
if(isset($_POST[clearme])){
	$char = $_POST[char];
	$kills = $_POST[kills];
	$zen = $_POST[zen];
	$clear = mssql_query("UPDATE Character SET PkCount='0',PkLevel='3',PkTime='0',Money=Money - '$pay' WHERE Name='$char'");
		echo "<font color='GREEN'>".clear_complete."</font>";
	}

При тази част от кода на функцията aiweb_clearpk пак не филстрираш $_POST заявките и може да се направи SQL Injection.

Иначе много добре си направил всички необходими кодове за Му сайт в един клас. Остава само да се научат хората да ползват кода.
 
На пръв поглед виждам някои проблеми.

PHP:
//Function GET Page
	function get_page(){
	$this->x = $_GET[page];
	
	if(isset($this->x)){
		if(is_file("./addons/$this->x.php"))
		{
			include "./addons/$this->x.php";
		}
		else{
			echo "<center><font color='#c42500'>".error480."</font></center>";
		}
	}
	else{
		include "./addons/news.php";
	}
	
	}
//END OF GET Page

Тук не филтрираш "$this->x = $_GET[page];" и може да бъде инклуднат всеки файл от всяка директория.

PHP:
if(isset($_POST[clearme])){
	$char = $_POST[char];
	$kills = $_POST[kills];
	$zen = $_POST[zen];
	$clear = mssql_query("UPDATE Character SET PkCount='0',PkLevel='3',PkTime='0',Money=Money - '$pay' WHERE Name='$char'");
		echo "<font color='GREEN'>".clear_complete."</font>";
	}

При тази част от кода на функцията aiweb_clearpk пак не филстрираш $_POST заявките и може да се направи SQL Injection.

Иначе много добре си направил всички необходими кодове за Му сайт в един клас. Остава само да се научат хората да ползват кода.

Така е, прав си. Не е достатъчно да се проверява с функцията is_file(), можем да сложим още една проверка с preg_match(), за да сме сигурни, че няма да бъдат използвани нежелани символи. Пример:
PHP:
if(!preg_match("/^[a-z0-9]{1,20}$/ix", $this->x))  echo "Error Initialized.";
това ще позволи да се извикват само файлове съдържащи буквите от a до z и цифрите от 0 до 9, и с дължина на файла между 1 и 20 символа.
За $_POST, няма да давам пример как се защитава, защото е обсъждано хиляди пъти.
 
Last edited:
На пръв поглед виждам някои проблеми.

PHP:
//Function GET Page
	function get_page(){
	$this->x = $_GET[page];
	
	if(isset($this->x)){
		if(is_file("./addons/$this->x.php"))
		{
			include "./addons/$this->x.php";
		}
		else{
			echo "<center><font color='#c42500'>".error480."</font></center>";
		}
	}
	else{
		include "./addons/news.php";
	}
	
	}
//END OF GET Page

Тук не филтрираш "$this->x = $_GET[page];" и може да бъде инклуднат всеки файл от всяка директория.

PHP:
if(isset($_POST[clearme])){
	$char = $_POST[char];
	$kills = $_POST[kills];
	$zen = $_POST[zen];
	$clear = mssql_query("UPDATE Character SET PkCount='0',PkLevel='3',PkTime='0',Money=Money - '$pay' WHERE Name='$char'");
		echo "<font color='GREEN'>".clear_complete."</font>";
	}

При тази част от кода на функцията aiweb_clearpk пак не филстрираш $_POST заявките и може да се направи SQL Injection.

Иначе много добре си направил всички необходими кодове за Му сайт в един клас. Остава само да се научат хората да ползват кода.

Дам, виждам, че съм го изпуснал, много благодаря Damian-не, като се видим някой ден ще те почерпа, някоя Монтана пак ;] :D(wasntme)
 
До вниманието на всички до 2 дена ще добавя нова функция/плугин PvCPU or PvP който до сега не се е ползвал в никой Mu Online сайт и до сега не е писан. Той е готов, в момента си играя да наглася Damage системата. Искам да ви попитам как ще е по - добре да го направя да е срещу CPU или PvP? В момента PvCPU работи без проблем :) има си статистика на попаденията и т.н.т. С него ще може да направите сайта Ви много по - интересен пък и може да напиша и двете PvP & PvCPU и няма да ви казвам колко много евенти могат да се правят с това и каква статистика може да си вадите ;]... А за някои хора това значи и пари ;] :D :D Ще гледам до 2 дена да го направя, да знаете, че ходя на работа нощна смяна, така че може и да закъснея с 2 дена МАКС :D
 
  • Like
Reactions: crazyboy
killer4eto не е човек :D Браво пич възхищавам ти се на творенията :)
1000/10000 чакаме го
 
  • Like
Reactions: killar4eto
Ето може да видите до къде съм стигнал... Вие сами може да си направите настройките за колко critical damage да дава на герой, колко deffence и т.н.т :D
 

Attachments

  • PvCPU&PvP system.jpg
    PvCPU&PvP system.jpg
    212.8 KB · Views: 90
Last edited:
Пич браво! Идеите, които реализираш са наистина добри и оригинални. Допринасяш много към света на Mu Online сървърите. :)
 
  • Like
Reactions: killar4eto
Killar4e ще вземат те целуват скоро пази се ^^