2. 中间层PHP数据处理
<?php
include_once "dbconn.php";
$lifeTime = 8 * 3600;
session_set_cookie_params($lifeTime);
session_start();
header("Content-type: text/html; charset=utf-8");
if (!isset($_SESSION['currentuserchinesename'])) {
if(!wisephpvalidate(@$_SERVER['PHP_AUTH_USER'], @$_SERVER['PHP_AUTH_PW'])) {
http_response_code(401);
header('WWW-Authenticate:Basic realm="mis system"');
echo "User name and password are required to continue"; //取消时浏览器输出
exit;
} else {
// echo $_SESSION['currentuserchinesename']." Login OK";
//document.getElementsByTagName("title")[0].innerText= $_SESSION['currentuserchinesename'];
}
}
// Download File
if (isset($_GET['dl'])) {
$dl =urldecode($_GET['dl']);//base64_decode
$dl = trim($dl);
//$dl=str_replace('.','',$dl);
$dl = trim($dl, '\\/');
$dl=str_replace('\\', '/', $dl);
if (strpos($dl,':') !== false){ $dlfn=$dl;
} else { $dlfn=$_SERVER['DOCUMENT_ROOT'].'/'.$dl; }
// $path = $_SERVER['DOCUMENT_ROOT'];
if ($dl != '' && is_file($dlfn)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($dlfn) . '"');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($dlfn));
readfile($dlfn);
} else {
echo "Error,File not found(".$dl.')';
}
exit();
}
// Upload file
if (isset($_POST['uploadtopath'])) {
$path =$_SERVER['DOCUMENT_ROOT'].$_POST['uploadtopath']."/".$_FILES['wisefile']['name']; // 相對目錄 以/開始 如 /upload
if (is_uploaded_file($_FILES['wisefile']['tmp_name'])) {
if (move_uploaded_file($_FILES['wisefile']['tmp_name'], $path)){
echo "OK,All files uploaded to $path";
} else {
echo "Error while uploading files. Uploaded files: ".$path ;
}
}
exit();
}
if (!isset($_POST['functionname'])) {
echo "Calling function module name cannot be empty";
exit();
}
$ffname=$_POST['functionname'];
// if (isset($_POST['params']){
$params=json_decode(base64_decode($_POST['params']),true);
// }
switch($ffname){
case "fm_fileexists":
if (fm_fileexists($params['filename'])){ echo "1";} else { echo $params['filename'];}
break;
case "fm_direxists":
if (fm_direxists($params['dirname'])){ echo "1";} else { echo "0";}
break;
case "fm_getfilesize":
$ffsize=fm_getfilesize($params['filename']);
echo $ffsize;// $params['filename']." ".$ffsize;
break;
case "fm_dirfiledelete":
if (fm_rdelete($params['dirfilename'])){ echo "1";} else { echo "0";}
break;
case "fm_getdirfilelist":
fm_getdirfilelist($params['dirname']);
break;
case "fm_getdirectorylist":
fm_getdirectorylist($params['dirname']);
break;
case "db_querytojson":
$dbconn=getdbconn($params['dbname']);
$rsjson=$dbconn->query_tojson($params['sqlstr']);//iconv('GBK','UTF-8',$params['sqlstr']),$params['dbname']);
echo $rsjson;
break;
case "db_getsqlfirstfieldvalue":
$dbconn=getdbconn($params['dbname']);
$stmt=$dbconn->getquery($params['sqlstr']);
$row=$stmt->fetch(PDO::FETCH_NUM);//取第一笔记录
echo $row[0];
break;
case "db_gettablerecordcount":
$dbconn=getdbconn($params['dbname']);
$sqlstr="select count(*) from ".$params['tablename']." where ".$params['wherestr'];
$stmt=$dbconn->getquery($sqlstr);
$row=$stmt->fetch(PDO::FETCH_NUM);//取第一笔记录
echo $row[0];
unset($dsarr);
break;
case "db_execsql":
$dbconn=getdbconn($params['dbname']);
$affected=$dbconn->execsql($params['sqlstr']);
echo $affected;
break;
case "db_batchexecsql":
$dbconn=getdbconn($params['dbname']);
$sqls=explode('|',$params['sqlstr']); //批量執行SQL語句之間用 | 分隔
$affected=$dbconn->batch_execsql($sqls);
echo $affected;
break;
case "fm_getfilemodiflytime":
clearstatcache();
$filename=$_SERVER['DOCUMENT_ROOT'].$params['filename'];
if (is_file($filename)) {
$fmtime=filemtime( $filename);
} else {$fmtime="Error,File not found (".$params['filename'].")";}
echo $fmtime;
break;
case "sendsmtpmail":
$rev=send_mail_by_smtp($params);
if ($rev) {echo "1";} else {echo $rev;}
break;
case "fm_getusermoudleversion":
$config_file_path = '../../WiseFileID.ini';
$dbparamstrs = $tmp = parse_ini_file($config_file_path, true)["WiseFileVer"];
echo $dbparamstrs[$params['moudlefilename']];
break;
default:echo "$ffname method not found.";
}
//define function start
function fm_fileexists($path)
{
return is_file($path);
}
function fm_direxists($path)
{
return is_dir($path);
}
function fm_getfilesize($path)
{
return filesize($path);
}
/**
* Delete file or folder (recursively)
* @param string $path
* @return bool
*/
function fm_rdelete($path)
{
if (is_link($path)) {
return unlink($path);
} elseif (is_dir($path)) {
$objects = scandir($path);
$ok = true;
if (is_array($objects)) {
foreach ($objects as $file) {
if ($file != '.' && $file != '..') {
if (!fm_rdelete($path . '/' . $file)) {
$ok = false;
}
}
}
}
return ($ok) ? rmdir($path) : false;
} elseif (is_file($path)) {
return unlink($path);
}
return false;
}
function fm_getdirfilelist($path)
{
$objects = is_readable($path) ? scandir($path) : array();
$files = array();
if (is_array($objects)) {
foreach ($objects as $file) {
if ($file == '.' || $file == '..') { continue; }
$new_path = $path . '/' . $file;
if (is_file($new_path)) {
// $files[] = $file;
echo $file."|";//"\r\n";
}
}
}
// return $files;
}
function fm_getdirectorylist($path)
{
$objects = is_readable($path) ? scandir($path) : array();
$folders = array();
if (is_array($objects)) {
foreach ($objects as $file) {
if ($file == '.' || $file == '..') { continue;}
$new_path = $path . '/' . $file;
if (is_dir($new_path) && $file != '.' && $file != '..') {
// $folders[] = $file;
echo $file."|";//"\r\n";
}
}
}
// return $folders;
}
function wisephpvalidate($user, $pass) {
//if (isset($user,$pass)){
$conn=getdbconn("MisDB");
$sqlstr="select chtname from App_user where usrname='$user' and passcode='$pass'";
$stmt = $conn->getquery($sqlstr );
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt=null;
if(isset($row[0]) && (count($row)>0)) {
$_SESSION['currentuserchinesename']=$row[0];//iconv('GBK','UTF-8',$row[0]);
return true;
} else {
return false;
}
// } else return false;
}
//=send_mail_by_smtp($params['hostname'],$params['username'],$params['password'],$params['snicename'],$params['address'],$params['inuicename'],$params['ReplyToaddr'],$params['subject'],$params['body'],$params['attfile']);
function send_mail_by_smtp($params)
{
require('./PHPMailer-master/Exception.php');
require('./PHPMailer-master/PHPMailer.php');
require('./PHPMailer-master/SMTP.php');
$mail = new PHPMailer();
$mail->SMTPDebug = 2;
$mail->isSMTP();
$mail->Host =$params['hostname'];
$mail->SMTPAuth = true;
$mail->Username =$params['username'];
$mail->Password =$params['password'];
$mail->Port = 25;
$mail->CharSet = "utf-8";
$mail->setFrom($params['fromAddr'],$params['fnicename']); //寄件者呢称
$addrs=explode(';',$params['address']);
foreach ($addrs as $addr) {$mail->addAddress($addr); } //收件人呢称
//设置回复人 参数1为回复人邮箱 参数2为该回复人设置的昵称
$mail->addReplyTo($params['ReplyToaddr'],$params['rnicename']);
if (isset($params['attfile'])) {
$attfiles=explode(';',$params['attfile']);
if (count($attfiles)>0) {
foreach ($attfiles as $attfn) {
$fn=$_SERVER['DOCUMENT_ROOT'].$attfn;
if (is_file($fn) and (substr($attfn,0,4)=="/tmp")) $mail->addAttachment($fn);
} // 添加附件
}
// $mail->AltBody ="Has ".count($attfiles)." Attachment files"; //附加信息,可以省略
}
$mail->isHTML(true); //邮件正文是否为html编码 true或false
$mail->Subject =$params['subject']; //邮件主题
$mail->Body =$params['body']; //邮件正文 若isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取的html文件
$rv=$mail->Send();
if (count($attfiles)>0) {
foreach ($attfiles as $attfn) {
$fn=$_SERVER['DOCUMENT_ROOT'].$attfn;
if (is_file($fn) and (substr($attfn,0,4)=="/tmp")) unlink($fn); //删除邮件附件
}
}
return $rv? true : 'ErrorInfo:' . $mail->ErrorInfo;
}
?>