السلام عليكم. تحية طيبة للجميع.
لدي مشكلة في صفحة تسجيل الدخول بالكوكيز فقط.
حيث عندما ادخل بالاسم و كلمة السر ادخل للصفحة عادي
واذا افتحت نفس الصفحة في نافذة اخرى نفس المتصفح وبدون اغلاق الصفحة الاولى
اضطر للدخول بالاسم و كلمة السر مرة اخرى .
وانا اريد ان تبقى الصفحة مفتوحة على الاقل نصف ساعة.
اريد الحل يكون بالكوكيز فقط
بدون قاعدة البيانات او السيشن
الكود الصفحة في الرابط اسفله:
تم اصلاح المشكل بفضلك اخي اشرف
ولكن هل تسطيع ان تعدل على الكود الذي سيظهر بعد تسجيل الدخول للصفحة
بوضعه مرة واحدة ققط وليس مرتين كما فعلت انت هنا.؟
setcookie('login', $user, time() + 60); //60 = 1 minute
echo 'HTML PAGE HERE ... You are logged in!';
وهنا :
elseif (isset($_COOKIE['login']) && $_COOKIE['login'] == $user) {
echo 'HTML PAGE HERE ... You are logged in!';
لان كود html الذي اضعه انا في صفحتي كبير جدا و من الصعب وضعه مرتين في الصفحة.
بالنسبة لدالة الوقت لدقيقة واحدة فقط وليس نصف ساعة, وضعته من اجل التجربة الكود بسر عة.
و شكرا على المساعدة...
بالتأكيد يمكنك أن تستخدم صيغة Heredoc في PHP والتي تسمح لك بإستخدام مجموعة من الأسطر كنص، على النحو التالي:
$html_content = <<<HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
Hi {$user}
</body>
</html>
HTML;
لاحظ صيغة Heredoc تبدأ بعلامة >>> ثم اسم من إختيارك (يمكنك أن تستعمل أي كلمة ولكن يجب أن تستعمل نفس الكلمة في نهاية النص) على سبيل المثال إستخدمت أنا كلمة HTML بأحرف كبيرة للتعبير عن بداية ونهاية النص، وخزنت كل هذا النص في متغير باسم $html_content، الآن يمكنك أن تقوم بطباعة هذا المتغير بدلًا من جملة You are logged in ، كالتالي:
if (isset($_POST['login'])) {
if ($_POST['username'] == $user && $_POST['password'] == $pass) {
setcookie('login', $user, time() + 60); //60 = 1 minute
echo $html_content;
} else {
echo "invalid password";
}
} elseif (isset($_COOKIE['login']) && $_COOKIE['login'] == 'admin') {
echo $html_content;
} else {
echo 'Please login first';
}
صيغة Heredoc توفر عليك عناء إستخدام علامة إقتباس فردية أو مزدوجة حول النص، وبالتالي يمكنك إستخدام كلاهما بداخل النص بدون مشكلة.
ملاحظة: يمكنك أن تستعمل المتغيرات بداخل صيغة Heredoc بدون مشكلة أيضًا.
تستطيع أن تقرأ أكثر حول صيغة Heredocs وكذلك صيغة Nowdoc من خلال موسوعة حسوب من هنا:
@Elalfi_Web
بارك الله فيك اخي اشرف على المساعدة و الرد على اسئلتي.
بالنسبة لصيغة heredoc اول مرة اسمع بها واضافة جديدة لمعلوماتي بلغة php .
وانا وجدت حل اخر من خلال دالة:
header refrech او header location
وبالتوفيق لك باذن الله.
التعليقات