需要帮助用方法或case语句更新PHP脚本吗

需要帮助用方法或case语句更新PHP脚本吗,php,postfix-mta,Php,Postfix Mta,此脚本检查Postfix邮箱文件夹上的修改日期 问题是,我有不止一个位置需要检查 文件夹/mnt/mail1/包含邮件目录a、b、d、g 文件夹/mnt/mail2/包含其余的c、e、f、h、…、x、z 该脚本仅通过URL运行 我需要脚本根据检查的电子邮件地址签入正确的装入点。在上述情况下,它应该签入/mnt/mail2/d/e/delta.com/ 请帮忙。我对php一无所知 <?php if (isset($_REQUEST["email"])) { $emailaddres

此脚本检查Postfix邮箱文件夹上的修改日期

问题是,我有不止一个位置需要检查

文件夹/mnt/mail1/包含邮件目录a、b、d、g

文件夹/mnt/mail2/包含其余的c、e、f、h、…、x、z

该脚本仅通过URL运行

我需要脚本根据检查的电子邮件地址签入正确的装入点。在上述情况下,它应该签入/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();
}


?>

在不阅读代码和了解php的情况下:首先,您需要从链接中获取电子邮件地址。为此使用正则表达式。 第二,分解电子邮件并使用regex获取域

$domain=

获取域的第一个和第二个字符:$domain[0]和$domain[1]

然后你应该在两个文件夹中选择两个复选框。用一个开关来做,有4种主要情况:a、b、d、g和一个检查其他情况的默认情况


。。。顺便问一下:上面的案例不应该检查/mnt/mail1/文件夹吗?

脚本已经准备好了您需要的一切:

$domain = $emailparts[1];      
$basedir = "/mnt/mail1/";
您只需要根据$domain中的值更改$basedir,例如

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

但是说真的,如果你想维护这样的脚本,你应该学习一些基础知识。在网上随意复制/粘贴一些陌生人的代码行是很危险的。尤其是在Stackoverflow,这是一个问答网站,人们通常不愿意只写代码

我确实检查了mail1文件夹,但我也需要检查其他文件夹。你的答案听起来确实可行,但请记住……我和PHP不是朋友。你能帮我更新代码吗?我会的,但我对PHP也不太了解。没问题。无论如何,谢谢你。非常感谢。您认为我们愿意花时间来实现您的要求吗?拿一本书,学习PHP,如果你有特殊问题,我们会在这里帮助你。