یلدا ادامه داره... ❤️ ۴۰ درصد تخفیف همه دوره‌ها

استفاده از تخفیف‌ها
ثانیه
دقیقه
ساعت
روز
heather
7 سال پیش توسط heather مطرح شد
1 پاسخ

مشکل در bind کردن remember token

سلام خدمت شما استاد موسوی و کاربران محترم سایت...ببخشید یک مشکلی واسم پیش امده:
ارور اینه:
Recoverable fatal error: Object of class stdClass could not be converted to string in C:\xampp\htdocs\oop\app\Model\DB.php on line ۱۶۷
لاین ۱۶۷ مربوط به متد bind value هستش ....وقتی remember_token رو توش میریزیم این ارور رو به من میده
remember_token = یک استرینگ از کلمه های تصادفی که در موقع لاگین و موقعی که کاربر گزینه ی remember me رو میزنه ساخته میشه و در داخل دیتابیس ذخیره می شه و یک cookie هم به اسم اون و با مقدار اون درست میشه .وقتی که کاربر بعد یک زمانی مثلا یک روز دیگه میاد به جای تست کردن ای cookei پسوورد و یا کوکی ایمیل همین remember_token چک میشه ......و باقیشم که خودتون میدونین.
و این هم کدهام:

public function update($id, $data)
{
    $object = $this->find('id',$id);

    if (!$object)
        throw new \Exception("This Id Not Exist in the {$this->table}.");

    $feildForUpdate = $this->feildForUpdate($data);
    $this->stmt = $this->pdo->prepare("UPDATE {$this->table} SET {$feildForUpdate} WHERE id = :id");
    $this->bind = array_merge($data, ['id'=>$id]);
    $this->bindValue();

    return $this->stmt->execute();

}
private function bindValue()
{
    foreach ($this->bind as $key => $value) {
        $this->stmt->bindValue(":$key" , $value);
    }
}

private function feildForUpdate($data)
{
    $feild = [];
    foreach (array_keys($data) as $name){
        $feild[] = "$name = :$name";
    }

    return join(', ',$feild);

}

}

خب اینا در کلاس DB بودند. متد update و متد bindValue برای بایند کردن اطلاعات و متد fieldForUpdate برای ساختن یک استرینگ برای prepear کردن در متد update هستش.

public static function login($user, $remember = false)
{
    Session()->set('email', $user->email);

    if ($remember == true){
        $rememberToken = random(240);
        (new Users())->update($user->id, ['remember_token' => $rememberToken]);
        Cookei()->set('remember_token',$rememberToken);
    }
    return true;
}

و اینم متد login از کلاس Atuth : سشن رو ست کردم به نام ایمیل و با مقدار ایمیل کاربر .بعدش اگر گزینه ی remember me فعال باشه remember Token ساخته میشه و کلاس یوزرز تبدیل به شیء میشه و از اون متد update با ورودی های id کاربر و rememberToken ساخته شده فعال میشه.
کوکی هم که با همین مقدار rememberToken ساخته میشه و...


ثبت پرسش جدید
heather
تخصص : برنامه نویس بک اند
@heather 7 سال پیش مطرح شد
0

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


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام