# زبان های اسکریپتی > PHP > Yii Framework >  نحوه log گرفتن از تمام فعالیت ها و  action های کاربر و ثبت آن در دیتابیس

## aliabdzad

فکر می کنم مطلب مفیدی باشه که تو فروم ندیدم و گفتم براتون بذارم . یه راه ساده برای این کار وجود داره اونم اینه که چون اکثرا کنترلر هامون از کلاس Controler  که تو پوشه  protected\components ارث بری می کنن پس فقط کافیه چند خط کد به این کلاس اضافه کنیم و تمام  :چشمک: 
// /protected/components/Controller.php
public $logMessage = NULL;
        
public $writeLog = false;

 protected function afterAction($action)
    {   
                if($this->writeLog)
                {
                        $sql = 'INSERT INTO tbl_logs VALUES (\''.Yii::app()->user->name.'\',\''.$_SERVER['REMOTE_ADDR'].'\',\''.date("Y-m-d H:i:s").'\',\''.$this->getId().'\',\''.$this->getAction()->getId().'\',\''.$this->logMessage.'\')';
                        $command = Yii::app()->db->createCommand($sql);
                        $command->execute();
                }
    }

البته جدول رو هم تو دیتابیس درست کرده باشین . اینم کوئری جدولمون : 
CREATE TABLE `tbl_logs` (
 `username` varchar(50) NOT NULL,
 `ipaddress` varchar(50) NOT NULL,
 `logtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `controller` varchar(255) NOT NULL DEFAULT '',
 `action` varchar(255) NOT NULL DEFAULT '',
 `details` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8

----------


## koorosh4

> فکر می کنم مطلب مفیدی باشه که تو فروم ندیدم و گفتم براتون بذارم . 
>   CHARSET=utf8[/SQL]


سلام دوست عزیز . ببخشید الان من با این کد تو فایل _login پوشه ی C:\wamp\www\site\protected\views\site 
اینم کد : 


```
<script> TIME = new Date(); DIFF =  new  Date() - TIME ;
 INTV = window.setInterval("Show_Clock()",1000) ;   
  function Show_Clock(){      TIME = new Date(new Date() - DIFF) ;    
  HH   = TIME.getHours() ;      MM = TIME.getMinutes() ;      SS =   TIME.getSeconds() ; 
     document.getElementById('CLOCK').innerHTML=((HH<10  )?   "0"+HH:HH) + ":" + ((MM<10)? "0"+MM:MM) + ":" + ((SS<10)?   "0"+SS:SS); } </script> 
<span id="CLOCK"></span> <br> <?php echo jdate('j /  F / Y');?> <!-- پایان کد تاریخ و ساعت --> <br> 
 <?php echo $this->currentUser->username; ?>  <?php  echo('خوش آمدید '); ?> <br> <?php echo ('آی پی شما :');?>  <?php 
function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))
    //check ip from share internet
        $ip=$_SERVER['HTTP_CLIENT_IP'];
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    //to check ip is pass from proxy
        $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    else
        $ip=$_SERVER['REMOTE_ADDR'];
        
    return $ip;
}
$ip = getRealIpAddr();
echo ($ip);
?>
```

با اینا نام کاربر و شماره آی پی و تاریخ و ساعت را نشون میدم اما نمیتونم توی بانک اطلاعاتی ذخیره کنمش . اسم بانک اطلاعاتی من ole و جدولی که برای ذخیره اطلاعات در نظر گرفتم report
حالا نظر شما چیه ؟ با کد شما آیا نیاز به این جدول نیست ؟ آیا اطلاعات کاربر (ورود و خروج و غیره) همه ذخیره میشن ؟ ممنون میشم توضیح بدید
این جدول من شامل 5 بخش آی پی و نام و ساعت و تاریخ و آی دی هست . 
با تشکر

----------


## koorosh4

> اینم کوئری جدولمون : 
> CREATE TABLE `tbl_logs` (
>  `username` varchar(50) NOT NULL,
>  `ipaddress` varchar(50) NOT NULL,
>  `logtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
>  `controller` varchar(255) NOT NULL DEFAULT '',
>  `action` varchar(255) NOT NULL DEFAULT '',
>  `details` text
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8


ببخشید این کد را کجا بنویسیم ؟ توی لاگ این بنویسیم که لاگ این شد ذخیره کنه یا نه ؟ ممنون میشم راهنمایی کنید

----------


## Veteran

این کد ساخت جدول هست.
پیشنهاد من به شما 
تهیه پکیج اموزشی پی اچ پی اقای شهرکی
هست.بنظر شما در مباحث پایه ایی مشکل دارید که باید ابتدا با اصول کار اشنا بشید

----------


## under22

> این کد ساخت جدول هست.
> پیشنهاد من به شما 
> تهیه پکیج اموزشی پی اچ پی اقای شهرکی
> هست.بنظر شما در مباحث پایه ایی مشکل دارید که باید ابتدا با اصول کار اشنا بشید


به نظره بنده هم بهتر این پکیج رو تهیه کنید چون خود Yii یه Log خیلی حرفه ایی داره که اصلا به این کارا نیاز نیست

----------


## koorosh4

> این کد ساخت جدول هست.
> پیشنهاد من به شما 
> تهیه پکیج اموزشی پی اچ پی اقای شهرکی
> هست.بنظر شما در مباحث پایه ایی مشکل دارید که باید ابتدا با اصول کار اشنا بشید


آقای شهرکی که استادن . بله درسته برای یادگیری باید php  و   yii را بگیرم و ببینم . اما من از صبح سر کارم تا 6 عصر . بعدشم که حال خودمو ندارم چه برسه به دیدن فیلم اونم از نوع آموزشی . چیزی متوجه نمیشم . 2تا کتاب گرفتم مال جعفر نژاد قمی و محمد مصدری . اینا را سر کار میخونم گهگاه . که شکر خدا تو اینا هم در این مورد چیزی نگفته .

----------


## MMSHFE

پس با این اوصاف قید برنامه نویسی رو بزنید. برای برنامه نویسی باید وقت بگذارین. ضمناً فیلمها رو میتونید روی موبایل یا تبلت بریزین و سر کار هم استفاده کنید.

----------


## koorosh4

ممنون از راهنمایی شما . این مشکل هم حل شد . الان کامل ذخیره مشین . فقط تو گزارش گیری و ارسال گزارش بصورت ماهیانه به کاربر ها دارم کار میکنم .

----------

