شنبه یه خبراییه 🔥 منتظر شنبه باش 😉🥳
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ امیر محمد جوادی
متغیر $record
جامعه پی اچ پی ایجاد شده در ۱۶ دی ۱۴۰۱

سلام وقتتون بخیر

چنتا سوال برام پیش اومدیک این که از لاین 41 تا آخر فایل auth-lib اصلا متوجه نشدم چه اتفاقی داره میفته واینکه اصلا چرا متغیر $record تعریف شد و چرا توابع isalive و find token ؟

و چرا دوتا تابع تعریف کریدم براش ایا نمیشد داخل یک تابع کار انجام بدیم ؟

و سوال اخرمم هم در خصوص قسمتی هست که تابع isalive اومده

$record = findtokenbyhash($hash);

if(!$record)

return false;

return $record->expired_at()+120;

تعریف کرده د خط اخرش که گفته از جدول دیتابیس expired_at بگیره میخواستم بدونم مگه تابع findtoken نرفته از دیتابیس فقط هش گرفته پس چه جوری اومده متغیر $record اکسپایرات پاس داده و گفته به علاوه 120 بشه ؟ مگه الان این متغییر دسترسی به اکسپایر ات داره؟

ممنون میشم راهنمایی فرمایید چون راستیت درک نکردم از خط 41 به بعد

ممنون از تلاش شما برای یادگیری هرچه بهتر دانش پذیرانتون

سلام امیر جان

نباید اون ۲ فانکشن رو یکی میکردیم چون ۲ تا کار مختلف میکنن و جلوتر یه کار جدا با هر کدوم داریم

در مورد سوال دومت هم رفته رکورد رو برگردونده نه تنها فقط خود توکن رو


محمد گازری ۱۶ دی ۱۴۰۱، ۱۲:۳۶

ممنون محمد جان

این قسمت ریترنی که زدیم رفته متغییر رکورد صدازده از ذاخلش اکسپایر فراخونده ؟ مگه دسترسی به اکسپایر داره ؟ اخه بالاتر فقط هش مقدارشو برای رکورد تعریف کرده بودیم

 return $record->expired_at()+120;
امیر محمد جوادی ۱۶ دی ۱۴۰۱، ۱۲:۴۶

جدول tokens ۳ تا مقدار token, hash, expired_at داره

زمانی که توکن جدید ایجاد میشه زمان هم مقدار دهی میشه

function createLoginToken(): array
{
    global $pdo;
    $hash = bin2hex(random_bytes(8));
    $token = rand(100000, 999999);
    $expired_at = time() + 600;
    $sql = 'INSERT INTO `tokens` (token,hash,expired_at) VALUES (:token,:hash,:expired_at);';
    $stmt = $pdo->prepare($sql);
    $stmt->execute([':token' => $token, ':hash' => $hash, ':expired_at' => date("Y-m-d H:i:s", $expired_at)]);
    return [
        'token' => $token,
        'hash' => $hash
    ];
}

و تابع findTokenByHash کل رکورد رو با هش میگیره (SELECT * FROM `tokens`)

function findTokenByHash(string $hash): object|bool
{
    global $pdo;
    $sql = 'SELECT * FROM `tokens` WHERE `hash` = :hash;';
    $stmt = $pdo->prepare($sql);
    $stmt->execute([':hash' => $hash]);
    return $stmt->fetch(PDO::FETCH_OBJ);
}
محمد گازری ۱۶ دی ۱۴۰۱، ۱۳:۰۱

مرسی محمد جان کامل متوجه شدم

امیر محمد جوادی ۱۶ دی ۱۴۰۱، ۱۳:۰۷

موفق باشی امیر جان ?

محمد گازری ۱۶ دی ۱۴۰۱، ۱۳:۱۹