Этот скрипт проверяет дату изменения в папке почтового ящика Postfix.
Проблема в том, что у меня есть несколько мест, которые нужно проверить.
скоросшиватель / Шоссе / mail1 / содержит почтовые директории a, b, d, g
скоросшиватель / Шоссе / mail2 / содержит остальное с, е, е, з, …….., х, г
Скрипт запускается просто через URL HTTPS: //URL/index.php [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();
}?>
Не читая код и не зная много о php: во-первых, вам нужно получить адрес электронной почты по ссылке. Используйте регулярные выражения для этого.
Во-вторых, взорвите электронную почту и получите домен (также с регулярным выражением).
$ domain =
Получите первый и второй символ домена: $ domain [0] и $ domain [1].
Затем вы должны выбрать между двумя папками две проверки. Сделайте это с помощью переключателя, используя 4 основных случая: a, b, d, g и случай по умолчанию, который проверяет остальные.
… кстати: разве в вышеприведенном случае не нужно проверять папку / mnt / mail1 /?
В скрипте есть все, что вам нужно:
$domain = $emailparts[1];
$basedir = "/mnt/mail1/";
вам просто нужно изменить $basedir
в соответствии со значением в $domain
например,
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, который является сайтом вопросов и ответов, люди обычно не хотят просто писать код