关于使用apache PHP作中间层Delphi接口程序2

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;
}

?>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值