Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Veritabanları & SQL

Cevapla
 
LinkBack Seçenekler
Eski 29/03/2006, 05:04   #1 (permalink)
xam
<? echo $xam; ?>
 
xam Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 03/2006
Mesaj: 977
Soru Kullanici kaydi silme (otomatik)..

Selamlar,

Arkadaslar, database'imde bulunan kayitli kullanicilardan 60 gun ziyaret etmeyenleri ve uye olduktan sonra 3 gun icinde aktivasyon yapmayan kullanicilarin otomatikman silinmesini istiyorum..

Databasimde bu olay icin 3 tablo var; joindate (kayit oldugu tarih) lastactivity (son login oldugu tarih) ve activated (0 yada 1, aktivasyon yapmis yada yapmamis)..

Uye kayit olurken, joindate tablosuna time() verisi gidiyor, buda sanirim unix time mesela: bugun kayit olmus bi uye icin su deger var 1143591759,
En son login oldugunda, lastactivity tablosuna ise TIMENOW verisi gidiyo, buda yine unix sanirim, mesela: bugun su anda login olan biri icin su deger var 1143591073

Amacim kisaca soyle:
60 gun ziyaret etmeyen uye kayit silmesi icin:
DELETE FROM users WHERE activated = 1 AND lastactivity = < 60 gun

3 gun icinde aktivasyon yapmamis uyeler icin ise:
DELETE FROM users WHERE activated = 0 AND lastactivity = 0 AND joindate < 60 gun

Bunu nasil yapabilirim ?

NOT: time() ve TIMENOW core.php'de soyle atanmis:
define('TIMENOW', time());
xam hatta değil   Alıntı Yaparak Yanıtla
Eski 29/03/2006, 05:07   #2 (permalink)
Agresif Üye
 
turker Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 07/2002
Mesaj: 6,290
Varsayılan

ara: crontab (*nix), zamanlanmış görevler (win)

bu istediklerini yapabilecek PHP/ASP dosyasını hazırladıktan sonra bunu crantab kayıtlarına girip istediğin saat, istediğin gün çalıştırılmasını sağlayabilirsin.
turker hatta değil   Alıntı Yaparak Yanıtla
Eski 29/03/2006, 05:37   #3 (permalink)
xam
<? echo $xam; ?>
 
xam Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 03/2006
Mesaj: 977
Varsayılan

bunu nasil yapabilirim dostum? detayli bi bilgi verirmisin ?
Cron yerine direk herhangi bi php dosyasina function olarak eklesem olmazmi ?
xam hatta değil   Alıntı Yaparak Yanıtla
Eski 29/03/2006, 05:47   #4 (permalink)
Agresif Üye
 
turker Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 07/2002
Mesaj: 6,290
Varsayılan

crontab yerine fonksiyon hazırlayabilirsin fakat bu fonksiyonu herhangi bir sayfadan çağırman gerekir. bu sayfa her çalıştırıldığında aynı işlemleri yapar ki bu da gereksiz yere işlem yapmak, zaman kaybetmek demektir.
(örneğin bu fonksiyonu forum ana sayfasından çalıştırdığını düşün.)
turker hatta değil   Alıntı Yaparak Yanıtla
Eski 29/03/2006, 06:01   #5 (permalink)
xam
<? echo $xam; ?>
 
xam Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 03/2006
Mesaj: 977
Varsayılan

hmm.. o zaman cron daha mantikli..
peki windows'da bu cron isini nasil yapariz ?
xam hatta değil   Alıntı Yaparak Yanıtla
Eski 29/03/2006, 06:05   #6 (permalink)
Agresif Üye
 
turker Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 07/2002
Mesaj: 6,290
Varsayılan

zamanlanmış görevler (Scheduled Tasks) ile.
turker hatta değil   Alıntı Yaparak Yanıtla
Eski 29/03/2006, 12:21   #7 (permalink)
Eski Fındıkçı
 
cou_ Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 10/2004
Yer: Anadoluhisarı
Mesaj: 62
Varsayılan

Mssql de bu iş için job yazabilirsin. Hem databasini yedeklerden joblarınıda yedeklersin kaybolmazlar biyere...
__________________
Yavaş yavaş çıkacaksın bu merdivenlerden...
arama motoru sözlük burçlar oyunlar
cou_ hatta değil   Alıntı Yaparak Yanıtla
Eski 30/03/2006, 00:25   #8 (permalink)
xam
<? echo $xam; ?>
 
xam Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 03/2006
Mesaj: 977
Varsayılan

Ben bi tane php dosyasi yaptim, dogru sifre girildiginde calisan ve database'deki aktivasyon islemi yapmamis uyeleri silen bi script.. daha sonra bunu windows scheduled task'lara tanittim, mesela: mozilla.exe http://myweb.com/cronjob/deleteuncon...ord=mypassword gibi.. sorunsuz calisiyo, 2 gunde bir calisacak sekilde ayarladim..

Yukarda anlattigim bu olayi aynen, 60 gun ziyaret etmemis uyeler icinde yapmak istiyorum ama bu php dosyasini hazirlamak digerine gore cok daha zor, mesela mysql'den sorgu alirken where activated=1 AND lastactivity < 60gun gibi olmasi lazim ama nasil yapacagimi bilmiyorum Bu konuda yardima ihtiyacim var..
xam hatta değil   Alıntı Yaparak Yanıtla
Eski 12/06/2006, 01:11   #9 (permalink)
xam
<? echo $xam; ?>
 
xam Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 03/2006
Mesaj: 977
Ampul

Bu islemi en sonunda basardim, tum denemelerden olumlu cevap aldim, sorunsuz calisiyo kullanmak isteyen faydalanabilir kod asagida; Gorevi su: 60 gun icerisinde siteye ziyaret etmeyen kullanicilari isaretleyip 1 mail yolluyor, maili alan kullanici 15 gun icerisinde ziyaret etmezse account siliniyo ve silindi maili gidiyo..

PHP Kodu:
<?
$username 
"administrator";
$password "administratorfuckyourselfIDIOT";
if (
$_GET['username'] != $username || $_GET['password'] != $password) {
    die(
'go and fuckyourself');
}
mysql_connect("localhost""root""mainpassword") or die(mysql_error());
mysql_select_db("maintablo") or die(mysql_error());
define('TIMENOW'time()); 
function 
postala($gidecekMail,$gonderenAd,$gonderenMail,$konu,$mesaj) {
    
$headers "MIME-Version: 1.0\n";
    
$headers .= "Content-type: text/html; charset=iso-8859-9\n";
    
$headers .= "X-Mailer: PHP\n";
    
$headers .= "X-Sender: PHP\n";
    
$headers .= "From: $gonderenAd<$gonderenMail>\n";
    
$headers .= "Reply-To: $gonderenAd<$gonderenMail>\n";
    
$headers .= "Return-Path: $gonderenAd<$gonderenMail>\n";
    @
mail($gidecekMail,$konu,$mesaj,$headers);
    echo 
'Message has been sent to: ' $gidecekMail;    
    echo 
'<br>';
}

$users "SELECT userid, username, email FROM sd_users WHERE inactivitytag != 0 AND protected='no' AND donor='no' AND lastactivity < inactivitytag AND inactivitytag < UNIX_TIMESTAMP(DATE_ADD(NOW(), INTERVAL - 15 DAY))";
$result mysql_query($users) or die(mysql_error());
while (
$user mysql_fetch_array($result))
{    
    
$message1 "Dear <b>$user[username]</b>.<br><br>
You have not logged in at <b>www.sitename.org</b> for more then <b>60 days</b>.<br>
You also didn't respond to our eMail we sent to you <b>15 days ago</b>.<br><br>
Therefor we have decided to <b><font color=red>delete</font></b> your Account, as it seems you are not interested in our site any longer.<br>
We are sorry to see that you left us, feel free to come back at any time.<br><br>
Yours,<br>
Sitename Team<br>
<a href=http://www.sitename.org>www.sitename.org</a>"
;

postala($user['email'],'Site Name','system@sitename.org','Account Deleted!',$message1);
$usernames .= ", $user[username]";
$userids .= ",$user[userid]";
if (
$userids)
{
    
$userids "0$userids";
    
$delete "DELETE FROM sd_users WHERE userid IN ($userids)";
    
$deletee mysql_query($delete) or die(mysql_error());
    echo 
'<br>Inactive User(s) deleted: ' substr($usernames2);
}else{
    echo 
"No users deleted";
}
}

$users "SELECT userid, username, email FROM sd_users WHERE inactivitytag=0 AND protected='no' AND donor='no' AND lastactivity < UNIX_TIMESTAMP(DATE_ADD(NOW(), INTERVAL - 60 DAY))";
$result mysql_query($users) or die(mysql_error());
while (
$user mysql_fetch_array($result))
{
    
$message2 "Dear $user[username]. <br><br>
    It has come to our attention that you have registered at <b>www.sitename.org</b> more then <b>60 days ago</b>, but didn't login again since.<br>
    Did you forget about us?<br>
    We would be happy to see you around again!<br><br>
    If you don't login again within <b>15 days</b> from now, we will <b><font color=red>delete</font></b> your account.<br><br>
    Yours,<br>
    Site Name Team<br>
    <a href=http://www.sitename.org>www.sitename.org</a>"
;
    
    
postala($user['email'],'Site Name','system@sitename.org','Account Inactive!',$message2);
    
$notifieduserids .= ",$user[userid]";
    
$notifiedusernames .= ", $user[username]";
    if (
$notifieduserids)
    {        
        
$update "UPDATE sd_users SET inactivitytag = " TIMENOW " WHERE userid IN (0$notifieduserids)";
        
mysql_query($update) or die(mysql_error());        
        echo 
'Inactive User(s) have been warned: ' substr($notifiedusernames2);
        echo 
'<br>';
    }else{
        echo 
"No users warned";
    }
}

?>
Hatalari yada eksikleri soylerseniz dahada gelistirebiliriz.. tesekkurler

NOT: postala functionu KUTUPHANE bolumunden alintidir.
xam hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
Otomatik Veri Silme ShockShock PHP 7 07/02/2007 15:56
ip kontrolü & veri tabanını otomatik silme g_azlag PHP 5 02/02/2007 11:36
Otomatik Veri Silme? velet Veritabanları & SQL 7 30/11/2006 00:45
Mysql otomatik silme rox PHP 8 20/09/2005 23:19
W2k Active Directory icin otomatik dizin silme scripti.:) Huzeyfe Windows 1 21/12/2002 06:06


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 03:40.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net