Вход Регистрация
Файл: FileSQL/setup.php
Строк: 201
<?php
######################################
#    FileSQL, система управления     #
#      файловыми базами данных       # 
#              ------                #
#        Версия от 22.09.2008        #  
######################################
#     Copyright © 2008 S.P.Y. Games  #
#     Разработчик: @lex              #
#     ICQ: 376060111                 #
#     E-mail: Aleksey.alex@mail.ru   #
#     Сайт: http://spygms.ru         #
#   Вы имеете право изменять скрипт  #
######################################

error_reporting(0);
set_time_limit(0);

function 
LowLight($code){
$time=time()+rand(111111,999999);
$colors=array('000000','0000BB','007700','DD0000','FF8000');
$colors_replace=array("FFFFCC","0066FF","009900","FF0044","FFCC33","EAFFFF");
$garbage=array('>&lt;?php'.$time,"?&gt;</span>".$time,"?&gt;".$time,$time);
$garbage_replace=array(">","</span>",'','');
$code=highlight_string("<?php".$time.$code."?>".$time,true);
$code=str_replace($garbage,$garbage_replace,$code);
$code=preg_replace("!<code>(.*?)</code>!si","\1",$code);
    for(
$i=0$i<count($colors); $i++){
    
$code=str_replace('<span style="color: #'.$colors[$i],'<font color="#'.$colors_replace[$i],$code);
    }
$code=str_replace("</span>","</font>",$code);
return 
$code;
}
function 
RootDirectory(){
$_root="";
$test=1;
    while((!
file_exists($_root."index.php") and !file_exists($_root."index.html") and !file_exists($_root."index.wml")) | $test){
        if(
file_exists($_root."index.php") | file_exists($_root."index.html") | file_exists($_root."index.wml")){
            if(!
file_exists($_root."../index.php") and !file_exists($_root."../index.html") and !file_exists($_root."../index.wml")){
            
$test=0;
            } else {
            
$_root.="../";
            }
        } else {
        
$_root.="../";
        }
    }
global 
$ScriptPath;
$temp=array(explode("/",$_root),getcwd());
$temp[1]=str_replace("\","/",$temp[1]);
$temp[1]=explode("/",$temp[1]);
    for(
$i=1; $i<count($temp[0]); $i++){
    
$ScriptPath.=$temp[1][$i+(count($temp[1])-count($temp[0]))]."/";
    }
$fp=fopen($_root."_root.dat","w");
flock(
$fp,LOCK_EX);
fputs(
$fp, "Файл созданный FileSQLнеобходим для определения корневой директорииНе удаляйте его.");
fflush(
$f);
flock(
$fp, LOCK_UN);
fclose(
$fp);
return 
$_root;
}
function SetUp(
$directory,$level){
global 
$_root;
global 
$ScriptPath;
$dir = opendir($directory);
    while(
$file = readdir($dir)){
        if(is_dir(
$directory.'/'.$file)){
            if(
$file != "." && $file != ".." and ($directory.'/'.$file)!=$_root.substr($ScriptPath,0,strlen($ScriptPath)-1)){
            SetUp(
$directory.'/'.$file,$level+1);
            }
        } else if(is_file(
$directory.'/'.$file) and ereg(".php$", $file)){
        PasteCode(
$directory.'/'.$file,$level);
        }
    }    
closedir(
$dir);
}
function PasteCode(
$file,$level){
global 
$okFiles$TotalTest$ScriptPath;
$okFiles[0]++;
$TotalTest[]=$file."|".filesize($file);
$req_path="";
    for(
$i=0; $i<$level$i++){
    
$req_path.="../";
    }
$req_path.=$ScriptPath;
$f=file($file);
    for(
$i=0; $i<count($f); $i++){
        if(eregi("
<?",$f[$i])){
        break; 
        }
    }
$z="";
    if(trim(
$f[$i+1])!='require_once "'.$req_path.'FileSQL.php"; #FileSQL start'){
    (ereg("
<?php",$f[$i])) ? $z="<?php" : $z="<?";
    
$f[$i]=str_replace($z,"<?php"."rn".'require_once "'.$req_path.'FileSQL.php"; #FileSQL start'."rn",$f[$i]);
    
$fp=fopen($file,"w");
    flock(
$fp,LOCK_EX);
    fputs(
$fp, implode("",$f));
    fflush(
$f);
    flock(
$fp, LOCK_UN);
    fclose(
$fp);
    }
}
function TotalTest(
$array){
global 
$okFiles;
    for(
$i=0; $i<count($array); $i++){
    
$temp=explode("|",$array[$i]);
    (filesize(
$temp[0])>$temp[1]) ? $okFiles[1]++ : "";
    }
}
if(
$action=="SetUp"){
$TotalTest=array();
$okFiles=array(0,0);
$_root=RootDirectory();
SetUp(substr(
$_root,0,strlen($_root)-1),0);
TotalTest(
$TotalTest);
header("
Location: ?all=1&t=".base64_encode(implode("|",$okFiles)));
} else {
echo '<!DOCTYPE html PUBLIC "
-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>FileSQL</title></head><style>BODY {   background: #000000;   color:             #FF9900;}.main {  font-family        : Arial, Helvetica, sans-serif;  font-size        : 9pt;  color            : white;  border: #ffff44}a {  font-family        : Arial, Helvetica, sans-serif;  font-weight        : bold;  color            : #00FF55;  text-decoration    : none;  font-size        : 9pt;}a:hover    {  color            : white;}a.title {  color            : #ffff44;  font-size        : 12pt;  text-decoration    : underline;}div.tab  { background-color: #222222; border-bottom: 3px solid #131313; border-left: 3px solid #3b3b3b; border-top: 3px solid #3b3b3b; border-right: 3px solid #131313; }div.tab2  { background-color: #333333; border-bottom: 3px solid #262626; border-left: 3px solid #3b3b3b; border-top: 3px solid #3b3b3b; border-right: 3px solid #262626; }input,select,textarea {color: #CCCCAA;background-color: #252525;border-bottom: 2px solid #131313; border-left: 1px solid #3b3b3b; border-top: 1px solid #3b3b3b; border-right: 2px solid #131313; }</style><body>';
echo "<div class='tab'><center><B><font color='#FFFFCC'>Установка FileSQL</font></B></center></div>";
echo 
"<div class='tab2'><center><img src='logo.png'></center>";
    if(
$all==1){
    
$t=explode("|",base64_decode($t));
        if((int)!
$t[0]){
        echo 
"<center><font color='#FF0000'>Внимание! Не было найдено ни одного скрипта! Убедитесь что у корневого каталога стоят права разрешающие чтение (chmod 755)</font></center>";
        echo 
"<div class='tab'><center><form action='setup.php?action=SetUp' method='post'><input type='submit' value='Установка'/></form><form action='?all=2'  method='post'><input type='submit' value='О FileSQL'/></form></center></div>";
        } else if((int)!
$t[1]){
        echo 
"<center><font color='#FF0000'>Внимание! Не было установлено ни одного скрипта! Вероятно установка была произведена ранее. Убедитесь что у PHP-скриптов стоят права разрешающие запись (chmod 777)</font></center>";
        echo 
"<div class='tab'><center><form action='setup.php?action=SetUp' method='post'><input type='submit' value='Установка'/></form><form action='?all=2'  method='post'><input type='submit' value='О FileSQL'/></form></center></div>";
        } else {
        echo 
"<center><font color='#FFFFCC'>Из ".(int)$t[0]." найденных скритпов, FileSQL был установлен в ".(int)$t[1]." из них.";
            if((int)
$t[0]>(int)$t[1]){
            echo 
'<BR><B>Причиной не полной установки FileSQL может быть:<BR>1. На неустановленных php-скриптах отстутствуют права разрешающие запись (chmod 777);<BR>2. FileSQL уже был установлен в текущие неустановленные php-скрипты.</B>';
            }
        echo 
'</font></center>';
        echo 
"<div class='tab'><center><form action='?all=2'  method='post'><input type='submit' value='О FileSQL'/></form></center></div>";
        }
    } else if (
$all==2){
    echo 
"<center><font color='#FFFFCC'><B>FileSQL</B> предназначен для удобной работы с файловыми базами данных. Для начала работы, необходимо выполнить установку. После установки вы сможете использовать <B>FileSQL</B> в своих PHP-скриптах.</font></center>";
    echo 
"<BR><center>Пример использования</center>";
    echo 
"<font color='#FFFFCC'><center>Для того чтобы начать работу с какой-либо базой данных, необходимо к ней подключится, присвоив к любой переменной это подключение. Для подключения базы данных вы должны прописать функцию ".LowLight('$fs=FileSQL_connect("my_db/new_db.dat");').". Внимание, путь &quot;my_db/new_db.dat&quot; указан как пример. Также следует учитывать, что путь к базе данных начинается с корневого каталога. Если же в пути используются несуществующие каталоги, то они создадутся автоматически.</center><BR>Допустим нам необходимо сохранить данные: логин - Ваня и его Пароль - 1234;<BR>Вот пример кода для выполнения данной операции:</font><BR>";
    echo 
LowLight('<?php
$fs=FileSQL_connect("my_DB/db.dat");
$login="Ваня";
$pass="1234";
FileSQL($fs,"COUNT: ADD", "", $login."|".$pass);
?>'
);
    echo 
"<BR><font color='#FFFFCC'>Вот и всё, всё очень просто, в итоге мы сохранили на последнюю строку базы данных текст &quot;Ваня|1234&quot;;<BR>Для последующего получения этих данных, необходимо написать ".LowLight('$data=FileSQL($fs,"COUNT: GET", "ID_нужной_строки");')."<BR>
Итог - в переменной "
.chr(36)."data находятся данные строки с введённым вами ID.<BR>
<BR><B>Рассмотрим ещё один пример, в котором мы будем использовать базы данных FileSQL как таблицы:</B><BR>
При регистрации мы создаём аккаунт пользователя как новую Базу Данных. Наша задача записать в неё логин, пароль, имя и город пользователя.<BR>
"
.LowLight('
<?php
$login="User"; #логин
$pass=md3("qwerty"); #пароль в тройном md5
$name="Ваня"; #имя пользователя
$city="Москва"; #город
$form=array("login"=>$login, "pass"=>$pass, "name"=>$name, "city"=>$city); #здесь мы создаём форму таблицы
$fs=FileSQL_connect("db/users/".$login.".dat"); #создаём аккаунт
FileSQL($fs,"COUNT: ADD",$form); #сохраняем таблицу
/*Дальше рассмотрим действия выполняемые после регистрации*/
$fs=FileSQL_connect("db/users/".$login.".dat"); #подключаемся к аккаунту
$user=FileSQL($fs,"COUNT: GET",0); #получаем аккаунт
/*Пример 1: Получение данных*/
echo $user['
city']; #Выводим город пользователя
/*Пример 2: Добавляем новые ячейки в таблицу, и сохраняем*/
$user['
last_visit']=time(); #устанавливаем последнее посещение пользователем
$user['
ban_status']=1; #устанавливаем аккаунт как забаненый
FileSQL($fs,"COUNT: REPLACE",0,$user); #сохраняем изменения
/*Пример 3: Удаляем ячейку таблицы, и сохраняем*/
unset($user['
city']); #удаляем ячейку "город"
FileSQL($fs,"COUNT: REPLACE",0,$user); #сохраняем изменения
?>
'
)."
<BR>Следует учесть что можно одновременно создавать любое количество подключений к разным базам данных, и соответственно присваивать эти подключения к разным переменным.<BR>Вообще <B>FileSQL</B> намного упрощает работу, необходимо только разобратся.<BR>
Обычно люди сохраняют пароли после обработки функцией "
.LowLight('md5("пароль");').", но слабые пароли уязвимы к расшифровке. Поэтому вместо ".LowLight('md5("пароль");')." используйте ".LowLight('md3("пароль");')."<BR>
Ниже представлен список запросов <B>FileSQL</B>, формат использования: "
.LowLight('FileSQL("переменная подключения","запрос");')."</div>";
    echo 
"<div class='tab'><center><font color='#FFFFCC'>Список запросов поддерживаемых FileSQL:</font></center></div>";
    
$help=array('<center><B><font color="#F0C050">Основные команды:</font></B></center>',
    
LowLight('FileSQL_connect("path");').' - функция "подключения" к базе данных, где path - это путь к базе данных. Если база данных отсутствует также как и директории присутствующие в переменной path, то они создаются автоматически. Достаточно просто указать путь, но следует учесть, что путь указывается от корневой директории;',
    
LowLight('FileSQL("Method", "ID", "data");').' - функция управления файловыми базами данных, где Method - это нужный запрос к базе данных. Обязательность параметров ID и data зависит от выбранного запроса;',
    
LowLight('md3("pass");').' - функция хеширования текста в тройной md5 хэш, где pass - это необходимый к хешированию текст;','<center><B><font color="#F0C050">Запросы DB:</font></B></center>',
    
LowLight('"DB: SIZE"').' - возвращает размер базы данных в байтах;',
    
LowLight('"DB: SIZE_BS"').' - возвращает сокращённый размер базы данных;',
    
LowLight('"DB: CLEAR"').' - очистка базы данных;',
    
LowLight('"DB: DELETE"').' - удаление базы данных;',
    
'<center><font color="#F0C050"><B>Запросы COUNT:</B><BR>Внимание, строки считаются с 0. Т.е. ID первой строки равен нулю, второй - единице, и т.д.</font></center>',
    
LowLight('"COUNT: PASTE", "ID", "TEXT"').' - вставка строки в базу данных, где ID - это номер строки, а TEXT - это сохраняемый текст. Вставка строки переносит предыдущие строки с и после запрошенного ID, на строку ниже. Параметром TEXT может быть переменная типа array, string, integer или boolean. Внимание, после сохранения переменной, при последующем запросе этой строки будет возвращена переменная этого же типа;',
    
LowLight('"COUNT: ADD", "TEXT"').' - та же самая функция что и '.LowLight('"COUNT: PASTE"').', только строка добавляется в конце базы данных, а не произвольно;',
    
LowLight('"COUNT: REPLACE", "ID", "TEXT"').' - та же самая функция что и '.LowLight('"COUNT: PASTE"').', только вместо переноса предыдущих строк на строчку ниже, выполняется замена предыдущей строки с запрошенным ID на текущую;',LowLight('"COUNT: JOIN", "ID", "TEXT"').' - функция добавления текста параметра TEXT, к уже существующему тексту в строке с параметром ID;',
    
LowLight('"COUNT: GET", "ID"').' - возвращает данные строки с указанным ID, причём данные возвращаются в виде переменной того типа, в котором их сохранили в эту строку;',
    
LowLight('"COUNT: DEL", "ID"').' - удаление строки, где ID - это номер строки;',
    
LowLight('"COUNT: SIZE"').' - возвращает общее количество строк базы данных;',
    
LowLight('"COUNT: SEARCH", "TEXT", "INT"').' - выполняет поиск указанного текста в базе данных начиная с указанной строки, поиск выполняется с учётом регистра. Где TEXT - текст который необходимо найти, INT - строка с которой необходимо начать поиск. Поиск выполняется как в строках с типом string (текст), так и в строках с типом array (массив). При успешном обнаружении возвращается номер строки с найденным текстом, при провале возвращается -1;');
        for(
$i=0$i<count($help); $i++){
        echo 
"<div class='tab2'>".$help[$i]."<div class='tab'></div></div>";
        }
    echo 
"<div class='tab'><center><form action='setup.php?action=SetUp' method='post'><input type='submit' value='Установка'/></form></center></div>";
    } else {
    echo 
"<center><font color='#FFFFCC'><b>FileSQL</b> - это система для удобного управления файловыми базами данных. Для тех кто использует файлы для хранения информации. FileSQL был проверен на действии, всё работает отлично, но тем не менее автор не несёт никакой ответственности за потерю сохранённых данных. <BR></font><font color='#FF0000'>Внимание! Установка будет произведена на все найденные  PHP-скрипты (путём добавления строки инклуда FileSQL), начиная с корневой директории. Корневая директория будет определена скриптом автоматически по лежащему index файлу в ней. Поэтому убедитесь в наличии этого файла. (index.php, index.html, index.wml)</font></center></div>";
    echo 
"<div class='tab'><center><form action='setup.php?action=SetUp' method='post'><input type='submit' value='Установка'/></form><form action='?all=2'  method='post'><input type='submit' value='О FileSQL'/></form></center></div>";
    }
echo 
'</body></html>';
}
?>
Онлайн: 1
Реклама