使用方法:结合txtDb.inc
初始用户和密码为:admin 123
CODE:
<?php /* TxtDb Manager version: 0.1.0 mail: [email protected] This script is the manager for PHP txtDb. ############################# Suppose Modify structrual */ include('txtdb.inc'); $root="txtdb"; $s_admins=array("admin","admin2","admin3"); $s_password="123"; #################### if(isset($_GET))@extract($_GET); if(isset($_POST))@extract($_POST); if(isset($_SESSION))@extract($_SESSION); if(isset($_COOKIE))@extract($_COOKIE); ################# if(isset($u_admin))$admin=$u_admin; if(isset($u_password))$password=md5($u_password); $s_password=md5($s_password); $islogin=false; if(($password==$s_password)and in_array($admin,$s_admins)){ setcookie('admin', $admin); setcookie('password',$password); $islogin=true; if(isset($u_admin) and isset($u_password))echo"<script>top.location.reload();</script>"; } if($action=="quit"){ setcookie('admin'); setcookie('password'); $islogin=false; echo "<script>top.nav.location.reload();</script>"; } if(!$islogin and $action!="leftbar" and $action!="")$action="main"; ################# ?> <html> <head> <title>Episome TxtDb Manager</title> <meta http-equiv=pragma content=no-cache> <meta http-equiv=no-cache> <meta http-equiv=expires content=-1> <meta http-equiv=cache-control content=no-cache> <meta http-equiv=content-type content="text/html" charset=gb2312> <style> body,td,input,textarea,select{font-family: verdana; font-size:10pt;} .btn{width:100px} hr{color:#AAAAAA;size:1} li{list-style:square;line-height: 24px;} h5{font-size:11pt;color:green;margin-top:0;margin-bottom:0} h6{font-size:10pt;color:red;margin-top:0;margin-bottom:0} td{height:24}; a{color:blue;text-decoration:none;} a:hover{color:red;text-decoration:underline;} form{margin-top:0;margin-bottom:0} .tbl{color:red;} </style> <script> var lastRow; function select(curRow,curColor,lastColor){ if (lastRow!=null) lastRow.style.background=lastColor; curRow.style.background=curColor; lastRow = curRow; } </script> <? ########################## if(!is_dir($root)) die('<h6>Current TxtDb root does not exists!</h6>'); $db=new txtDb($root); $version=$db->version; ############################ switch($action){ case "leftbar": leftbar(); break; case "main": main(); break; case "selecttable": selecttable($table); break; case "viewdata": viewdata($table,$start,$num,$sortby,$order,$keyword,$fields,$selectstring,$selectcolumn); break; case "newtable": newtable($table,$tblfields); break; case "insertrecord": insertrecord($table,$value,$id); break; case "delrecord": delrecord($table,$id,$start,$num,$order,$sortby); break; case "editrecord": editrecord($table,$id,$act,$value,$start,$num,$order,$sortby); break; case "droptable": droptable($table); break; case "cleartable": cleartable($table); break; default: index(); } /* edit a row from table */ function editrecord($table,$id,$act,$value,$start,$num,$order,$sortby){ global $db; $order=($order=="asc")?"desc":"asc"; $db->open($table,$id,1); if($act=="save" and is_array($value)){ $db->change($value,$id); echo "<h5>The record of table <font class=tbl>[".$table."]</font> has been modifyed !</h5><hr>"; echo "<li><a href='?action=viewdata&table=".$table."&start=".$start."&num=".$num."&order=".$order."&sortby=".$sortby."'>View data</a>"; die(); } echo" <h5>Modify record of table <font class=tbl>[".$table."]</font> !</h5><hr> <table cellpadding=0 cellspacing=0> <tr> <td bgcolor='#AAAAAA'> <table cellpadding=0 cellspacing=1> <form action='?action=editrecord&table=$table&start=$start&num=$num&order=$order&sortby=$sortby' method=post>"; foreach($db->fieldNames as $field){ $v=stripslashes($db->dbValues[$id][$field]); echo " <tr> <td bgcolor='#B3DBF9' width='100' align=right><nobr>$field : </nobr></td> <td bgcolor='white'><textarea name='value[$field]' rows=2 style='width:380'>$v</textarea></td> </tr> "; } echo" </table> </td> <td valign=bottom> <input type=hidden name=act value='save'> <input type=hidden name=id value='$id'> <input type=submit value='Save >>' class=btn><br> <input type=submit value='Cancel >>' class=btn onclick='js:history.go(-1)'> </td> </tr></form> </table> "; } /* delete a row from table */ function delrecord($table,$id,$start,$num,$order,$sortby){ global $db; $order=($order=="asc")?"desc":"asc"; $db->open($table,0,1); $db->delete($id); echo "<h5>The record of table <font class=tbl>[".$table."]</font> has been deleted !</h5><hr>"; echo "<li><a href='?action=viewdata&table=".$table."&start=".$start."&num=".$num."&order=".$order."&sortby=".$sortby."'>View data</a>"; die(); } /* Insert a row to table */ function insertrecord($table,$value,$id){ global $db; $db->open($table,0,1); if(is_array($value)){ $db->append($value,$id); echo "<h5>The record has been inserted to table <font class=tbl>[".$table."]</font>!</h5><hr>"; echo "<li><a href='?action=viewdata&table=".$table."'>View data</a>"; echo "<li><a href='?action=insertrecord&table=$table'>Insert record</a>"; die(); } echo"<h5>Insert record to <font class=tbl>[".$table."]</font></h5>"; echo "<hr>"; echo " <table cellpadding=0 cellspacing=0> <tr> <td bgcolor='#AAAAAA'> <table cellpadding=0 cellspacing=1 height='100%'> <form action='?action=insertrecord&table=$table' method=post name=iform> "; foreach($db->fieldNames as $field){ echo " <tr> <td bgcolor='#B3DBF9' width='100' align=right><nobr>$field : </nobr></td> <td bgcolor='white'><textarea name='value[$field]' style='width:380'></textarea></td> </tr> "; } echo " </table> </td> <td valign=bottom> ID <input size=3 name=id value='$db->lines'><br> <input type=submit onclick='return !isNaN(iform.id.value);' value='Insert >>' class=btn><br> <input type=submit value='Cancel >>' class=btn onclick='js:history.go(-1)'></td> </tr></form> </table> "; } /* view data */ function viewdata($table,$start,$num,$sortby,$order,$keyword,$fields,$selectstring,$selectcolumn){ global $db; if(trim($start)=='')$start=0; if(trim($num)=='')$num=30; $db->open($table,$start,$num); if(trim($sortby)!='') $db->sortby($sortby,$order); $order=($order=="asc")?"desc":"asc"; $dbValues=$db->dbValues; if(trim($keyword)!="") $dbValues=$db->query($keyword,$fields); if(trim($selectstring)!="") $dbValues=$db->select($selectcolumn,$selectstring); echo" <h5>Data for Table <font class=tbl>[".$table."]</font></h5> <hr> <table cellpadding=0 cellspacing=0> <tr> <td bgcolor='#AAAAAA'> <table cellpadding=0 cellspacing=1> <tr bgcolor='#B3DBF9'> <td> <b>Actions</b> </td> <td> ID </td> "; foreach($db->fieldNames as $value){ $select_string.="<option value=".$value.">".$value."</option>"; echo"<td> <a href='?action=viewdata&table=$table&start=".$start."&num=".$num."&sortby=".$value."&order=".$order."'>".$value."</a> </td>\n"; } echo "</tr>"; if(is_array($dbValues)) foreach($dbValues as $id=>$Values){ echo "<tr style='background:#EEEEEE;cursor:hand' onclick=\"javascript:select(this,'#DCFAE8','#EEEEEE')\">\n"; echo "<td><nobr> <a href='?action=editrecord&id=".$id."&table=".$table."&start=".$start."&num=".$num."&order=".$order."&sortby=".$sortby."'>Edit</a> <a href='?action=delrecord&table=".$table."&id=".$id."&start=".$start."&num=".$num."&order=".$order."&sortby=".$sortby."' onclick=\"return window.confirm('Are U sure of delete the record?');\">Del</a> </nobr></td>"; echo "<td bgcolor='#B3DBF9'> $id </td>"; if(is_array($Values)) foreach($Values as $key=>$value){ echo "<td><nobr> ".htmlspecialchars($value)." </nobr></td>"; } echo "</tr>\n"; } echo" </tr> </table> </td> </tr> </table> <hr size=1> <li>Query :<br> <table cellpadding=0 cellspacing=0> <tr><td bgcolor='#AAAAAA'> <table cellpadding=0 cellspacing=1> <tr> <td bgcolor='#B3DBF9' valign=bottom> <form method=post action='?action=viewdata&table=$table' name=iform> Show <br> <input size=5 value='$num' name='num'> rows [<a onclick='num.value=$db->lines' style='cursor:hand'>All</a>] <br> Starting from <br> <input size=5 name='start'><br> <input value='$order' name=order type=hidden> <input value='Display >>' onclick='return (!isNaN(iform.start.value) && !isNaN(iform.num.value));' type=submit> </form> </td> <td width=25 bgcolor='white'></td> <td bgcolor='#B3DBF9'> <form method=post action='?action=viewdata&table=$table'> For <input size=12 value='$keyword' name='keyword'> in <br> <select name='fields[]' id=fields size=4 multiple style='width:100%'>$select_string</select> <input value='Display >>' type=submit> [<a onclick='for(i=0;i<fields.length;i++)fields[i].selected=true' style='cursor:hand'>All</a>] <input value='$num' name=num type=hidden> <input value='$start' name=srart type=hidden> <input value='$order' name=order type=hidden> </form> </td> <td width=25 bgcolor='white'></td> <td bgcolor='#B3DBF9'> <form method=post action='?action=viewdata&table=$table'> For <input size=12 value='$selectstring' name='selectstring'> == <br> <select name='selectcolumn' size=4 style='width:100%'>$select_string</select> <input value='Display >>' type=submit> <input value='$start' name=srart type=hidden> <input value='$num' name=num type=hidden> <input value='$order' name=order type=hidden> </form> </td> </tr> </table> </td></tr></table> <hr size=1> <li>Records : $db->lines <li><a href='?action=insertrecord&table=$table'>Insert record</a> <li><a href='?action=cleartable&table=".$table."' onclick=\"return window.confirm('Are U sure of clear the data?');\">Clear</a> or <a href='?action=droptable&table=".$table."' onclick=\"return window.confirm('Are U sure of drop the table?');\">Drop</a> this table. <li>"; $db->times(); } /* select table */ function selecttable($table){ global $db; $db->open($table,0,1); echo "<h5>Select Table <font class=tbl>[".$table."]</font></h5><hr>"; echo "<li>Path : ".$db->tableName; echo "<li>Size : ".number_format(filesize($db->tableName))." (bytes)"; echo "<li>Records : ".$db->lines; echo "<li>Fields :".$db->fields."<br>"; echo "<select size=8 name=field style='width:200'>"; foreach($db->fieldNames as $value){ echo "<option value=".$value.">".$value; } echo "</select>"; echo "<input value='Add >>' type=submit>"; echo "<input value='Drop >>' type=submit>"; echo "<input value='Insert >>' type=submit>"; echo "<li><a href='?action=viewdata&table=".$table."'>View data</a>"; echo "<li><a href='?action=insertrecord&table=".$table."'>Insert record</a>"; echo "<li><a href='?action=cleartable&table=".$table."' onclick=\"return window.confirm('Are U sure of clear the data?');\">Clear</a> or <a href='?action=droptable&table=".$table."' onclick=\"return window.confirm('Are U sure of drop the table?');\">Drop</a> this table."; echo "<li>Time of last modification : ".date ("F d Y H:i:s.", filemtime($db->tableName))."<br>"; clearstatcache(); $db->times(); } /* clear table */ function cleartable($table){ global $db; $db->open($table,0,1); $db->clear(); echo "<h5>The table <font class=tbl>[".$table."]</font> has been cleared !</h5><hr>"; } /* drop table */ function droptable($table){ global $db; $db->open($table,0,1); $db->drop(); echo "<h5>The table <font class=tbl>[".$table."]</font> has been droped !</h5><hr>"; echo "<script>top.nav.location.reload();</script>"; } /* create table */ function newtable($table,$tblfields){ global $db; if(isset($table) and isset($tblfields)){ if(!ereg("^[-a-zA-Z0-9_\.]",$table)) die('<font color=red>Table name <font class=tbl>['.$table.']</font> not allow!</font>'); $tblfields=str_replace("\n","",$tblfields); $fields=explode("\r",$tblfields); foreach($fields as $key=>$value){ if(trim($value)=="")unset($fields[$key]); } if($db->create($table,$fields)){ echo "<br><h5>The table <font class=tbl>[".$table."]</font> has been created !</h5><br>"; echo "<script>top.nav.location.reload();</script>"; die(); } } ?> <body> <h5>Create New Table</h5> <hr> <form action='?action=newtable' method=post> TableName:<br> <input name=table style="width:200"><br> Fields: (field per line)<br> <textarea name=tblfields rows=12 style="width:200"></textarea> <input type="submit" value="Create >>"> </form> </body> <? } /* show DB information */ function main(){ global $version,$islogin; $httphost=$_ENV["HTTP_HOST"]; $server=$_SERVER["SERVER_SOFTWARE"]; $php=PHP_VERSION; $os=PHP_OS; echo" <body onselectstart='return false;'> <br><br><br> <nobr><h5>Welcome to TxtDb Manager </h5></nobr> <hr width='40%' align=left><br> <li>TxtDb $version running on $httphost <li>PHP $php running on $os <li>Server_SoftWare : $server"; if(!$islogin){ echo " <form action='?action=main' method=post> <input name=u_admin> <input name=u_password type=password> <input type=submit value='Landing >>'> </form> "; } echo "<br><hr width='60%' align=left></body>"; } /* navigation bar */ function leftbar(){ global $db,$islogin; ?> <style> body{background:#444444;color:white;} a{color:white;} a:hover{color:red;} hr{color:white;} td{height:20} </style> <body onselectstart="return false;"> <a href='?action=main' target='manager'><b><?=$db->root?></b></a> <hr size=1> <?echo" <table width='100%' cellpadding=0 cellspacing=0> "; showTables($db->root,$db->exten); echo" </table> <hr size=1><br> <b>Actions</b> <hr size=1> <table width='100%' cellpadding=0 cellspacing=0> <tr onclick=select(this,'#000000','')> <td nowrap><font face=Wingdings>w</font> <a href='?action=newtable' target=manager>Create Table</a></td> </tr>"; if($islogin)echo" <tr onclick=select(this,'#000000','')> <td nowrap><font face=Wingdings>w</font> <a href='?action=quit' target=manager>Exit Manager</a></td> </tr>"; echo" </table> <hr size=1><br> </body>"; } /* show All tables */ function showtables($path){ global $db; $dirhandle=opendir($path); while($file=readdir($dirhandle)){ if ($file!="." && $file!=".."){ if (is_dir($path.'/'.$file)){ showtables($path.'/'.$file); }else{ $path_info=pathinfo($file); $exten=strtolower(".".$path_info["extension"]); if($exten==strtolower($db->exten)){ if(strpos($path,'/')){ $file=str_replace($db->root.'/','',$path.'/'.$file); $subdir=" "; } $file=str_replace($db->exten,'',$file); echo " <tr onclick=select(this,'#000000','')> <td nowrap> $subdir<font face=Wingdings>w</font> <a href='?action=selecttable&table=$file' target='manager'>$file</a> </td> </tr> "; }// } } } closedir($dirhandle); } /* index of this manager */ function index(){ print' <frameset name="frms" cols="150,*" rows="*" border="0" frameborder="0"> <frame src="?action=leftbar" name="nav"> <frame src="?action=main" name="manager"> </frameset>'; } 
|