Skip to content

Commit 480a665

Browse files
authored
3.20
-optimization and improvement of blob-image download code -javascript code optimization
1 parent 6d55799 commit 480a665

File tree

1 file changed

+36
-42
lines changed

1 file changed

+36
-42
lines changed

lite.php

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
session_start();
66
$bg=2;
77
$step=20;
8-
$version="3.19";
8+
$version="3.20";
99
$bbs=['False','True'];
1010
$deny=['sqlite_sequence'];
1111
class DBT {
@@ -101,6 +101,9 @@ public function utf($fi) {
101101
}
102102
return $fi;
103103
}
104+
function isBase64($data) {
105+
return (bool) preg_match('/^[a-zA-Z0-9+\/]+={0,2}$/', $data) && (strlen($data) % 4 === 0);
106+
}
104107
public function form($furl,$enc='') {
105108
return "<form action='".$this->path.$furl."' method='post'".($enc==1 ? " enctype='multipart/form-data'":"").">";
106109
}
@@ -415,7 +418,7 @@ public function getTables($dbx) {
415418
}
416419
$ed=new ED;
417420
$head='<!DOCTYPE html><html lang="en"><head>
418-
<title>EdLiteAdmin</title><meta charset="utf-8">
421+
<meta charset="utf-8"><title>EdLiteAdmin</title>
419422
<style>
420423
*{margin:0;padding:0;font-size:14px;color:#333;font-family:Arial}
421424
html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;background:#fff}
@@ -444,7 +447,7 @@ public function getTables($dbx) {
444447
optgroup option{padding-left:8px}
445448
textarea{white-space:pre-wrap}
446449
.msg{position:absolute;top:0;right:0;z-index:9}
447-
.ok,.err{padding:8px;font-weight:bold;font-size:14px}
450+
.ok,.err{padding:8px;font-weight:bold}
448451
.ok{background:#efe;color:#080;border-bottom:2px solid #080}
449452
.err{background:#fee;color:#f00;border-bottom:2px solid #f00}
450453
.l1,th,button{background:#9be}
@@ -474,7 +477,7 @@ public function getTables($dbx) {
474477
default:
475478
case ""://show DBs
476479
$ed->check();
477-
echo $head.$ed->menu()."<div class='col1'>Create Database".$ed->form(2)."<input type='text' name='dbc' /><br/><button type='submit'>Create</button></form></div><div class='col2'><table><tr><th>Database</th><th>Tables</th><th><a href='{$ed->path}31'>Exp</a>/ Actions</th></tr>";
480+
echo $head.$ed->menu()."<div class='col1'>".$ed->form(2)."<input type='text' name='dbc' placeholder='Database' /><br/><button type='submit'>Create</button></form></div><div class='col2'><table><tr><th>Database</th><th>Tables</th><th><a href='{$ed->path}31'>Exp</a>/ Actions</th></tr>";
478481
foreach($ed->listdb() as $db) {
479482
$bg=($bg==1)?2:1;
480483
$dbx=new DBT($ed->dir.$db.$ed->ext);
@@ -1696,16 +1699,19 @@ public function getTables($dbx) {
16961699
} else {
16971700
$ph=$ed->sg[7];$nu1=" AND ".$ed->sg[5]."='".base64_decode($ed->sg[6])."'";
16981701
}
1699-
$q_ph=$ed->con->query("SELECT $ph FROM $tb WHERE $nu='$id'$nu1",true)->fetch();
1700-
$r_ph=base64_decode($q_ph);
1702+
$r_ph=$ed->con->query("SELECT $ph FROM $tb WHERE $nu='$id'$nu1",true)->fetch();
1703+
if($ed->isBase64($r_ph)) $r_ph=base64_decode($r_ph);
17011704
$len=strlen($r_ph);
1702-
if($len >=2 && $r_ph[0]==chr(0xff) && $r_ph[1]==chr(0xd8)) {$tp='image/jpeg';$xt='.jpg';}
1703-
elseif($len >=3 && substr($r_ph,0,3)=='GIF') {$tp='image/gif';$xt='.gif';}
1704-
elseif($len >=4 && substr($r_ph,0,4)=="\x89PNG") {$tp='image/png';$xt='.png';}
1705-
else {$tp='application/octet-stream';$xt='.bin';$r_ph=$q_ph;}
1705+
$tp='application/octet-stream';$xt='bin';
1706+
if($len>3){
1707+
if(substr($r_ph,0,3)=="\xFF\xD8\xFF"){$tp='image/jpg';$xt='jpg';}
1708+
elseif(substr($r_ph,0,3)=="GIF"){$tp='image/gif';$xt='gif';}
1709+
elseif(substr($r_ph,0,4)=="\x89PNG"){$tp='image/png';$xt='png';}
1710+
elseif(substr($r_ph,0,4)=="RIFF"){$tp='image/webp';$xt='webp';}
1711+
}
17061712
header("Content-type: $tp");
17071713
header("Content-Length: $len");
1708-
header("Content-Disposition: attachment; filename={$tb}-blob{$xt}");
1714+
header("Content-Disposition: attachment; filename={$tb}-blob.{$xt}");
17091715
die($r_ph);
17101716
break;
17111717

@@ -1849,33 +1855,21 @@ public function getTables($dbx) {
18491855
unset($_POST,$_SESSION["ok"],$_SESSION["err"]);
18501856
?></div></div><div class="l1 ce"><a href="http://edmondsql.github.io">edmondsql</a></div>
18511857
<script>
1852-
function byId(n){
1853-
return document.getElementById(n);
1854-
}
1855-
function byName(n){
1856-
return document.getElementsByName(n);
1857-
}
1858-
function byAll(n){
1859-
return document.querySelectorAll(n);
1860-
}
1861-
function createEl(n){
1862-
return document.createElement(n);
1863-
}
1864-
Element.prototype.show=function(){
1865-
this.style.display='block';
1866-
};
1867-
Element.prototype.hide=function(){
1868-
this.style.display='none';
1869-
};
1870-
var pwd=byId("pwd");
1858+
const $=(s)=>document.querySelector(s);
1859+
const $$=(s)=>document.querySelectorAll(s);
1860+
const $n=(s)=>document.getElementsByName(s);
1861+
const $c=(s)=>document.createElement(s);
1862+
Element.prototype.show=function(){this.style.display='block';}
1863+
Element.prototype.hide=function(){this.style.display='none';}
1864+
const pwd=$("#pwd");
18711865
pwd?pwd.focus():'';
18721866

1873-
let msg=byAll(".msg");
1874-
byAll(".del").forEach(d=>{
1867+
let msg=$$(".msg");
1868+
$$(".del").forEach(d=>{
18751869
d.addEventListener('click',(e)=>{
18761870
e.preventDefault();
18771871
msg.forEach(m=>m.remove());
1878-
let hrf=e.target.getAttribute("href"),nMsg=createEl("div"),nOk=createEl("div"),nEr=createEl("div");
1872+
let hrf=e.target.getAttribute("href"),nMsg=$c("div"),nOk=$c("div"),nEr=$c("div");
18791873
nMsg.className='msg';
18801874
nOk.className='ok';nOk.innerText='Yes';
18811875
nEr.className='err';nEr.innerText='No';
@@ -1950,34 +1944,34 @@ function addDragAndDrop(){
19501944
})();
19511945

19521946
function selectall(cb,lb){
1953-
var i,multi=byId(lb);
1947+
let i,multi=$('#'+lb);
19541948
if(cb.checked) for(i=0;i<multi.options.length;i++) multi.options[i].selected=true;
19551949
else multi.selectedIndex=-1;
19561950
}
19571951
function toggle(cb,el){
1958-
var i,cbox=byName(el);
1952+
let i,cbox=$n(el);
19591953
for(i=0;i<cbox.length;i++) cbox[i].checked=cb.checked;
19601954
}
19611955
function fmt(){
1962-
var j,opt=byName("fopt[]"),ff=byName("ffmt[]"),to=opt.length,ch="";
1956+
let j,opt=$n("fopt[]"),ff=$n("ffmt[]"),to=opt.length,ch="";
19631957
for(j=0;ff[j];++j){if(ff[j].checked) ch=ff[j].value;}
1964-
if(byId('tbs'))dbx('tbs');
1958+
if($('#tbs'))dbx('tbs');
19651959
if(ch=="sql"){
1966-
for(var k=0;k<to;k++) opt[k].parentElement.show();
1960+
for(let k=0;k<to;k++) opt[k].parentElement.show();
19671961
}else if(ch=="doc" || ch=="xml"){
1968-
var k,n=ch=="xml"?4:2;
1962+
let k,n=ch=="xml"?4:2;
19691963
for(k=0;k<n;k++) opt[k].parentElement.show();
19701964
for(k=n;k<to;k++) {opt[k].parentElement.hide();opt[k].checked=false}
19711965
}else{
1972-
for(var i=0;i<to;i++) {opt[i].parentElement.hide();opt[i].checked=false}
1966+
for(let i=0;i<to;i++) {opt[i].parentElement.hide();opt[i].checked=false}
19731967
}
19741968
}
19751969
function dbx(el='dbs'){
1976-
var j,ch="",ft=byName("ftype")[0],ff=byName("ffmt[]"),db=byAll("#"+el+" option:checked").length,dbs=byId('dbs'),arr=["json","csv1","csv2"];
1970+
let j,ch="",ft=$n("ftype")[0],ff=$n("ffmt[]"),db=$$("#"+el+" option:checked").length,dbs=$('#dbs'),arr=["json","csv1","csv2"];
19771971
for(j=0;ff[j];++j){if(ff[j].checked) ch=ff[j].value;}
19781972
if(ft[0].value!="plain"){
19791973
if((db<2 && (dbs||arr.indexOf(ch)>-1))||(db>1 && (dbs||arr.indexOf(ch)==-1))){
1980-
var op=createEl("option");
1974+
let op=$c("option");
19811975
op.value="plain";op.text="None";
19821976
ft.options.add(op,0);
19831977
ft.options[0].selected=true;

0 commit comments

Comments
 (0)