مشکل در ذخیره

[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]

[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;

	}

}



[rtl]

[font="Tahoma"]

خب دوباره تابع save با update جابجا شد و مشکل حل شد و نفهمیدیم چرا save به تنهایی جواب نمیداد :)

[/font][/rtl]

[right]

[font="Tahoma"]

همون دیگه نمی دونم چرا تابع

save

کار نمی کرد … :blink:

[/font]

[/right]

[font="Tahoma"][right]

سلام

پیشنهاد میکنم دو لینک زیر را مطالعه کنید

My link

My link1

[/right][/font]

[right]

[font="Tahoma"]

ممنون مطالب جوابگو بودند :)

[/font]

[/right]