W dzisiejszym wpisie zajmiemy się powiadamianiem klientów oraz nas samych o końcu ważności konta hostingowego. Ispcp w w wersji 1.0.7 daje możliwość ustawienia czasu wygaśnięcia konta jednak nie znalazłem do tego żadnych narzędzi które by z tego korzystały. W takim razie musimy naskrobać coś sami :)
Do naszego tool-a wykorzystamy php ponieważ będzie najprościej oraz kod ten będzie można w banalny sposób rozbudować o dodatkowe linie odpowiadające np za blokowanie dostępu do konta po określonym czasie.
Na początek musimy połączyć się z bazą
<?
mysql_connect("localhost", "root", "secretpassword") or die(mysql_error());
mysql_select_db("ispcp") or die(mysql_error());
Wrzucimy są funkcję (thx dla ZBT) która będzie gadać z mysql
function result($query)
{
$array = $result = array();
$query = mysql_query($query) or die(mysql_error());
while($re = mysql_fetch_array($query, MYSQL_ASSOC))
$array[] = $re;
if(!sizeof($array)) return false;
foreach($array as $no => $arr)
foreach($arr as $key => $val)
$result[$no][$key] = stripslashes($val);
return $result;
}
Teraz zapytanie
$query = result("SELECT * FROM `domain`");
Pętelka która będzie przeszukiwać wszystkie rekordy w bazie. Dla kont które nie mają pusty rekord lub nie posiadają ustawionego czasu wygaśnięcia pętli nie wykonujemy.
foreach($query as $row){
if (($row['domain_expires'] != '') || ($row['domain_expires'] != '0')){
Jak widać poniżej funkcja sprawdza sobie daty i wypluwa ilość dni pozostałych do wygaśnięcia konta
$year = date('Y'); $month = date('n'); $day = date('d');
$end = date("Y-m-d", $row['domain_expires']);
$ile_dni = (strtotime("$end GMT")-strtotime("$year-$month-$day GMT"))/86400;
I użyteczna część czyli informacja na maila. Jeśli do końca pozostało 14 dni informujemy klienta pobierając jego email przyporządkowany do konta oraz wysyłamy do siebie krótką notkę.
if ($ile_dni == '14'){
$email = result("SELECT * FROM `admin` WHERE `admin_id` = '".$row['domain_admin_id']."'");
foreach($email as $row1){
$email=$row1['email'];
}
$naglowki = "From: contact@domain.tld".PHP_EOL."Content-type: text/plain; charset=utf-8";
mail($email, 'Reminder', "\n\n\nWelcome ".$row['domain_name']." your account expire for 14 days", $naglowki);
mail('myemail@domain.tld', 'Reminder', "\n\n\nAccount ".$row['domain_name']." for 14 days die", $naglowki);
}
To samo dla 30 dni i zamykamy cały skrypt.
if ($ile_dni == '30'){
$email = result("SELECT * FROM `admin` WHERE `admin_id` = '".$row['domain_admin_id']."'");
foreach($email as $row1){
$email=$row1['email'];
}
$naglowki = "From: contact@domain.tld".PHP_EOL."Content-type: text/plain; charset=utf-8";
mail($email, 'Reminder', "\n\n\nWelcome ".$row['domain_name']." your account expire for 30 days", $naglowki);
mail('myemail@domain.tld', 'Reminder', "\n\n\nAccount ".$row['domain_name']." expire for 30 days", $naglowki);
}
}
}
?>
Tada :) Teraz wystarczy raz dziennie wrzucić skrypt do cron-a
* 9 * * * php /sbin/reminder_ispcp.php
i możemy spać spokojnie wiedząc, że klienci zostaną poinformowani o wygaśnięciu konta. Pozostaje tylko stworzyć interakcję z użytkownikiem np integracja z platnosci.pl lub system wysyłania faktur. Sposobów jest wiele. Jeśli mi się zachce (na co bym nie liczył) to z pewnością wrzucę tu takowy. Dla maruderów i malkontentów- skrypt można z pewnością napisać lepiej i bardziej przejrzyście ale pisanie czegoś o 3 w nocy nie uskrzydla :)
Na koniec dla leniwych gotowy skrypt z komentami
skrypt
Tagi: account, email, expire, informacja dla klientów, ispcp, omega, pay, system hostingowy, wygaśnięcie konta

