PDA

View Full Version : نمایش نام کاربری



koorosh4
یک شنبه 08 تیر 1393, 09:50 صبح
سلام . من با این کد آی پی کاربر را میارم ...
<?php echo ('آی پی شما :');?>

<?php echo getenv("remote_addr"); ?>
اما از اونجا که آی پی چیز جالبی نیست و آی پی سرویس دهنده وب میفته و نه سیستم خود شخص تصمیم دارم نام کاربری شخص نمایش داده بشه . کد زیر
Yii::app()->user->id;
نمایش نمیده . البته عدد مربوط به لیست را نشون میده . مثلا ادمین که نفر اول هست تو بانک این کد هم عدد 1 را نشون میده. نام کاربری را با
<input name="LoginForm[username]" id="username" type="text" maxlength="255" /><br /><br />
میگیره . چه کدی باید بدم تا نام کاربر را نمایش بده ؟

koorosh4
یک شنبه 08 تیر 1393, 10:32 صبح
این را هم میدم
<?php echo Yii::app()->user->username; ?>

میگه : ویژگیهای "CWebUser.username" تعریف نشده است.
یعنی مجوز میخواد ؟ کنترلر را باید دستکاری کنم ؟

Muhammad-Ali
یک شنبه 08 تیر 1393, 10:44 صبح
Yii::app()->user->name

koorosh4
یک شنبه 08 تیر 1393, 10:49 صبح
Yii::app()->user->name

نه با این هیچی نشون نمیده . فقط لاگ این میشه

Veteran
یک شنبه 08 تیر 1393, 10:59 صبح
در صورت ورود اطلاعات صحیح



$this->setState('userInfo',$user);
echo Yii::app()->user->userInfo-> username

koorosh4
یک شنبه 08 تیر 1393, 11:50 صبح
در صورت ورود اطلاعات صحیح



$this->setState('userInfo',$user);
echo Yii::app()->user->userInfo-> username


یوزر نیم و پسوردم هردوتا admin هستن اما باز اینو میده
Undefined variable: user
C:\wamp\www\ddd1\protected\views\site\_login.php(1 7)
اگر$user را از خط اول کد شما حذف کنم هم ارور زیر را میده

SiteController and its behaviors do not have a method or closure named "setState".

C:\wamp\www\yii\framework\base\CComponent.php(266)

MMSHFE
یک شنبه 08 تیر 1393, 12:06 عصر
این کد رو توی protected/compontents/Controller.php بگذارین:

public $currentUser;
public function init() {
if(!Yii::app()->user->isGuest) {
$this->currentUser = User::model()->findByPk(Yii::app()->user->id);
}
}
حالا توی تمام اکشنها از همه کنترلرها و درنتیجه توی تمام ویوها، ازطریق this->currentUser$ میتونید به مدل کاربر جاری دسترسی داشته باشین. فرضاً اگه نام و نام خانوادگی به ترتیب توی فیلدهای name و family باشن، برای نمایش نام و نام خانوادگی اینطوری مینویسید:

echo $this->currentUser->name . ' ' . $this->currentUser->family;

koorosh4
یک شنبه 08 تیر 1393, 13:21 عصر
این کد رو توی protected/compontents/Controller.php بگذارین:

public function init() {
if(!Yii::app()->user->isGuest) {
$this->currentUser = User::model()->findByPk(Yii::app()->user->id);
}
}
حالا توی تمام اکشنها از همه کنترلرها و درنتیجه توی تمام ویوها، ازطریق this->currentUser$ میتونید به مدل کاربر جاری دسترسی داشته باشین. فرضاً اگه نام و نام خانوادگی به ترتیب توی فیلدهای name و family باشن، برای نمایش نام و نام خانوادگی اینطوری مینویسید:

echo $this->currentUser->name . ' ' . $this->currentUser->family;

باز این ارور را میده .
ویژگیهای "SiteController.currentUser" تعریف نشده است.

MMSHFE
یک شنبه 08 تیر 1393, 13:31 عصر
شرمنده این خط رو هم توی Controller.php اضافه کنین (یادم رفت) :

public $currentUser;

Muhammad-Ali
یک شنبه 08 تیر 1393, 13:33 عصر
نه با این هیچی نشون نمیده . فقط لاگ این میشه
کاربری که لاگین نشده در کامپوننت user بعضی پروپرتی ها رو نداره. پروپرتی name زمانی ست میشه که کاربر لاگین کنه.

MMSHFE
یک شنبه 08 تیر 1393, 13:48 عصر
شدیداً توصیه میکنم ابتدا روی مباحث پایه مثل PHP و شئ گرایی و MVC و الگوهای مختلف طراحی مثل ActiveRecord و... تحقیق و مطالعه کنید و بعد سراغ فریمورک بیاین. از نوع سؤالاتتون در مدت فعالیتتون توی تالار اینطور برداشت کردم که مشکل شما در مفاهیم پایه است نه خود فریمورک. اگه در این زمان و با این دانش پایه بخواین از فریمورک استفاده کنید، نه تنها به شما کمک نمیکنه بلکه بیشتر برای شما دردسر و مشکلات و سؤالهای بعضیاً پیچیده ایجاد میشه.

koorosh4
یک شنبه 08 تیر 1393, 13:49 عصر
شرمنده این خط رو هم توی Controller.php اضافه کنین (یادم رفت) :

public $currentUser;

بازم اینو میگه
ویژگیهای "SiteController.currentUser" تعریف نشده است.

MMSHFE
یک شنبه 08 تیر 1393, 13:50 عصر
این خط باید بیرون از متد باشه. کد اولی که دادم رو ببینید (ویرایش کردم)

koorosh4
یک شنبه 08 تیر 1393, 13:51 عصر
شدیداً توصیه میکنم ابتدا روی مباحث پایه مثل PHP و شئ گرایی و MVC و الگوهای مختلف طراحی مثل ActiveRecord و... تحقیق و مطالعه کنید و بعد سراغ فریمورک بیاین. از نوع سؤالاتتون در مدت فعالیتتون توی تالار اینطور برداشت کردم که مشکل شما در مفاهیم پایه است نه خود فریمورک. اگه در این زمان و با این دانش پایه بخواین از فریمورک استفاده کنید، نه تنها به شما کمک نمیکنه بلکه بیشتر برای شما دردسر و مشکلات و سؤالهای بعضیاً پیچیده ایجاد میشه.

حق با شماست . کاملا گیج شدم . هر کدی از هر سایتی میگیرم و جا گذاری میکنم ارور میده . هر طور شده میرم و پی اچ پی را یاد میگیرم . ممنون از راهنماییتون

koorosh4
یک شنبه 08 تیر 1393, 13:53 عصر
این خط باید بیرون از متد باشه. کد اولی که دادم رو ببینید (ویرایش کردم)

میدونم. دیگه اینو فهمیدم که پابلیک را داخل پابلیک نذارم . بیرون از متد اول گذاشتم اما باز ارور داد . نه مشکل جای دیگست . این پی اچ پی را باید یاد بگیرم بعد شاید طراحی سایت برام راحت تر بشه :چشمک:

koorosh4
یک شنبه 08 تیر 1393, 13:58 عصر
حل شد مهندس name را باید به usernameتغییر میدادم
دستت درد نکنه
echo $this->currentUser->username<?php?>

MMSHFE
یک شنبه 08 تیر 1393, 21:37 عصر
خوب من که گفته بودم با فرض اینکه اسامی فیلدهای شما name و family هست...

Veteran
یک شنبه 08 تیر 1393, 22:01 عصر
یوزر نیم و پسوردم هردوتا admin هستن اما باز اینو میده
Undefined variable: user
C:\wamp\www\ddd1\protected\views\site\_login.php(1 7)
اگر$user را از خط اول کد شما حذف کنم هم ارور زیر را میده

SiteController and its behaviors do not have a method or closure named "setState".

C:\wamp\www\yii\framework\base\CComponent.php(266)

این متقیر در واقع رکوردی هست که شما بر اساس اطلاعات وارد شده(صحیح) توسط کاربر از دیتابیس استخراج کردین. توی فایل UserIdentity
و در سراسر برنامه قابل دسترسی هست.