2014-11-09 3 views
0

У меня проблема. Я хочу вставить ipaddress и дату посещения каждого посетителя в моей базе данных, но ip вставлен каждый раз, когда я обновляю страницу или открываю новости. Мой код: NewsController:Вставьте уникальный ipaddress в базу данных

public function __construct(){ 
    $this->beforeFilter('csrf', array('on'=>'post')); 
    $sIpAddress = Visitors_lib::getIp(); 
    $dDateVisit = time("Y/m/d H:i:s"); 
    $oVisitor = new \Visitors(); 
    $bInsert = $oVisitor->addVisitor($sIpAddress,$dDateVisit); 
} 

VisitorsModel:

public function addVisitor($sIpAdress,$dDate){ 
    $oVisitor = new Visitors(); 
    $oVisitor->ipaddress = $sIpAdress; 
    $oVisitor->date = $dDate; 
    $oVisitor->save(); 
} 

Так что я хочу, чтобы вставить внутрибрюшинно только один. В таких ситуациях, когда я нажимаю на новости, ip вставлен в базу данных, поэтому для посетителя 1 клик = 1 вставка.

+0

сделать это поле IP уникальным в базе данных – Milad

+0

Это хорошая идея? – user3348229

+0

ip addreses должны быть уникальными в реальном мире, поэтому сделать его уникальным в db – Milad

ответ

0

Проверьте, если он уже существует, прежде чем ввести его:

public function addVisitor($ipaddresse, $date) 
{ 
    if (! $this->where(compact('ipaddresse'))->first()) 
    { 
     static::create(compact('ipaddresse', 'date')); 
    } 
} 
+0

Не работает ваш код, ipaddresse doen't не вводить в базу данных – user3348229

+0

Это работает:)) ... thx – user3348229

Смежные вопросы