2015-03-03 75 views
0

此腳本檢查Postfix郵箱文件夾的修改日期。需要使用方法或案例語句更新PHP腳本的幫助

問題是,我有多個位置需要檢查。

的/ mnt/MAIL1/包含郵件顯示目錄的a,b,d,克

的/ mnt/mail2/包含其餘C,E,F,H,.... ....,X,Z

腳本通過網址https://URL/[email protected]

只需運行我需要的腳本,在正確的檢查依賴於電子郵件地址被檢查掛載點。在上面的情況下,它應該檢查/mnt/mail2/d/e/delta.com/.....

請幫忙。我對PHP一無所知。

<?php 

if (isset($_REQUEST["email"])) { 
    $emailaddress= trim($_REQUEST["email"]); 
    $emailparts = explode("@",$emailaddress); 
    if (sizeof($emailparts) != 2) { 
      print "invalid-email,,,,"; 
      exit(); 
    } 
    $username = $emailparts[0]; 
    $domain = $emailparts[1];  
    $basedir = "/mnt/mail1/"; 
    $livePrefix = $basedir; 
    $archivePrefix = $basedir."archive/"; 
    $livePath = $livePrefix . substr($domain,0,1) . "/" . substr($domain,1,1) . "/" . $domain . "/" . substr($username,0,1) . "/" . $username; 
    $archivePath = $archivePrefix . $domain ; 
    $liveStat = stat($livePath . "/" . "cur"); 
    $archStat = false; 
    if (file_exists($archivePath) && is_dir($archivePrefix)) { 
      $arhiveDirs = scandir($archivePath); 
      foreach($arhiveDirs as $i => $fname) { 
        if (stripos($fname , $username . "-" ) !== false) { 
          $archivePath = $archivePath . "/" . $fname ; 
          $archStat = stat($archivePath . "/cur"); 
          break; 
        } 
      } 
    } 
    $status="lost" ; 
    if ($liveStat != false) { 
      $status = "live" . "," . date("Y-m-d H:i:s", $liveStat['mtime']) . "," . sizeof(scandir($livePath . "/new")) . "," ; 
    } else if ($archStat != false) { 
      $status = "archived,,,"; 
    } else { 
      $status = "lost,,,"; 
    } 

    if ($archStat != false) { 
      $status = $status . date("Y-m-d H:i:s", $archStat['mtime']) . "," . sizeof(scandir($archivePath . "/new")) ; 
    } else { 
      $status = $status . "," ; 
    } 

    print $status ; 
    exit(); 
} else { 
    print "error,,,,"; 
    exit(); 
} 


?> 
+1

而且您認爲我們願意花時間實現您想要的功能嗎?拿一本書,學習PHP,如果你有一個特殊的問題,我們在這裏幫助你。 – 2015-03-06 09:52:54

+0

代碼格式化。 – SSA 2015-03-06 11:13:04

回答

0

沒有閱讀代碼和知道關於php的許多知識:首先,您需要從鏈接中獲取電子郵件地址。爲此使用正則表達式。 其次,爆炸電子郵件並獲得域(也與正則表達式)。

$域=

獲取第一個和域的第二個字符:$域[0]和$域[1]。

然後你應該選擇兩個文件夾中的兩個檢查。用一個開關來做,有四種主要情況:a,b,d,g和一個檢查其他情況的默認情況。

...順帶一提:上面的情況不應該檢查/ mnt/mail1 /文件夾嗎?

+0

我確實檢查了mail1文件夾,但我還需要檢查另一個文件夾。 你的答案聽起來像它會工作,但請記住.....我和PHP不是朋友。 是否有可能您可以爲我更新該代碼 – StoneAgeRebel 2015-03-03 13:01:22

+0

對不起,我會,但我對PHP也不甚瞭解。 – 2015-03-03 13:12:15

+0

沒有問題。不管怎麼說,還是要謝謝你。非常感激。 – StoneAgeRebel 2015-03-03 14:41:38

0

腳本有你需要準備好一切:

$domain = $emailparts[1];  
$basedir = "/mnt/mail1/"; 

你只需要通過

switch ($domain[0]) { 
    case 'a': 
    case 'b': 
    case 'd': 
    case 'g': 
     // fall through: all the cases above reach this point 
     $basedir = "/mnt/mail1/"; 
     break; 
    default: 
     // all other cases are handled here 
     $basedir = "/mnt/mail2/"; 
} 

但認真按照$domain值改變$basedir,例如,如果你想維護這樣的腳本,你應該學習基礎知識。在網上從一些隨機的陌生人複製/粘貼代碼行是很危險的。特別是在Q和A站點的Stackoverflow上,人們通常不願意編寫代碼