mmssaa
(M Soheili71)
November 13, 2014, 9:04am
1
[right]
[font="Tahoma"]
با سلام من در داخل تابع
authenticate
در فایل
UserIdentity.php
کدی نوشتم میخوام هنگامی که کاربر با استفاده از بانک اطلاعاتی که وارد سیستم شد تاریخ زمان ورود و آی پی مورد نظر شو توی بانک اطلاعاتی ذخیره کنه… وقتی کد رو اجرا می کنم خطایی نمی بینم … در حالی چیزی هم توی بانک ذخیره نمیکنه به نظرتون مشکل از چیه؟؟؟؟
[/font]
[/right]
public function authenticate()
{
$username=strtolower($this->username);
$users=Users::model()->findByAttributes(Array('username'=>$this->username));
if(!$users)
$this->errorCode=self::ERROR_USERNAME_INVALID;
elseif($users->password !== $this->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$users->last_login_date = date('Y/m/d h:i:s');
$users->last_login_ip = $this->getIp();
$users->save();
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getIp()
{
$ip = $_SERVER['REMOTE_ADDR'];
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
return $ip;
}
}
[rtl]
[font="Tahoma"]سلام
قبل از هرچیز شما پسورد ها رو hash نمیکنی؟! خدارو خوش نمیاد ها!
و اینکه به جای user->save از user->update استفاده کن، بعضا دیده شده اینجوری کار میکنه.اما دفعاتی که جای این ۲ تا رو عوض کردم و مشکل حل شده هیچوقت پیگیری نکردم که مشکل save چی بوده
ضمنا احتمالا میشه بعد از عمل save، تابع getErrors رو صدا زد و دلیل ذخیره نشدن رو اونجا پیدا کرد.
[/font][/rtl]
mmssaa
(M Soheili71)
November 13, 2014, 11:19am
3
[rtl]
[font="Tahoma"]سلام
قبل از هرچیز شما پسورد ها رو hash نمیکنی؟! خدارو خوش نمیاد ها!
و اینکه به جای user->save از user->update استفاده کن، بعضا دیده شده اینجوری کار میکنه.اما دفعاتی که جای این ۲ تا رو عوض کردم و مشکل حل شده هیچوقت پیگیری نکردم که مشکل save چی بوده
ضمنا احتمالا میشه بعد از عمل save، تابع getErrors رو صدا زد و دلیل ذخیره نشدن رو اونجا پیدا کرد.
[/font][/rtl]
[right]
[font="Tahoma"]
چرا هش می کنم ولی این نمونه از تابع آموزشیه.
با تابع
Update
که میزنم خطای
CDbException
رو میده بعدشم با همون تابع
save
میخوام کار کنه … جالبشم اینه وقتی تابع
getErrors
رو استفاده می کنم باز خطایی نشون نمی ده
[/font]
[/right]
mmssaa
(M Soheili71)
November 13, 2014, 11:31am
4
mmssaa:
[right]
[font="Tahoma"]
چرا هش می کنم ولی این نمونه از تابع آموزشیه.
با تابع
Update
که میزنم خطای
CDbException
رو میده بعدشم با همون تابع
save
میخوام کار کنه … جالبشم اینه وقتی تابع
getErrors
رو استفاده می کنم باز خطایی نشون نمی ده
[/font]
[/right]
[right]
[font="Tahoma"]
بچه ها احتیاجی نیست خودم . جواب سوالمو پیدا کردم باید کد بالا رو به صورت زیر ویرایش کنیم …همین
[/font]
[/right]
public function authenticate()
{
$username=strtolower($this->username);
$users=Users::model()->findByAttributes(Array('username'=>$this->username));
if(!$users)
$this->errorCode=self::ERROR_USERNAME_INVALID;
elseif($users->password !== $this->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
//$users->last_login_date = date('Y/m/d h:i:s');
//$users->last_login_ip = $this->getIp();
Users::model()->updateAll(Array('last_login_date'=>date('Y/m/d h:i:s')));
Users::model()->updateAll(Array('last_login_ip'=>$this->getIp()));
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getIp()
{
$ip = $_SERVER['REMOTE_ADDR'];
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
return $ip;
}
}
hesam.khaki
(Nk Hesam+Yii)
November 13, 2014, 12:31pm
5
[rtl]
[font="Tahoma"]
خب دوباره تابع save با update جابجا شد و مشکل حل شد و نفهمیدیم چرا save به تنهایی جواب نمیداد
[/font][/rtl]
mmssaa
(M Soheili71)
November 14, 2014, 9:06am
6
[right]
[font="Tahoma"]
همون دیگه نمی دونم چرا تابع
save
کار نمی کرد …
[/font]
[/right]
negar
(Nar8591)
November 15, 2014, 10:38am
7
[font="Tahoma"][right]
سلام
پیشنهاد میکنم دو لینک زیر را مطالعه کنید
My link
My link1
[/right][/font]