اذهب إلى المحتوى

السؤال

نشر (معدل)

السلام عليكم

لدي هذا السكربت لتسجيل الدخول لصفحة ويب بكلمة السر  php session

<?php session_start(); $passwords = array('123456', 'xxxx', '7777', '8888', '9999'); if (!isset($_SESSION['loggedIn'])) { $_SESSION['loggedIn'] = false; } if (isset($_POST['password'])) { if (in_array($_POST['password'], $passwords)) { $_SESSION['loggedIn'] = true; } else { die ('Incorrect password'); } } if (!$_SESSION['loggedIn']): ?> <html><head><title>Login</title></head><body> <p>You need to login</p> <form method="post"> Password: <input type="password" name="password"> <br /> <input type="submit" name="submit" value="Login"> </form></body></html> <?php exit(); endif; echo '<h1> hello world ... Logged in successfully..'; ?>

المطلوب تغير السيشن الى الكوكيز

ومع اضافة  مدة انتهاء صلاحية الكوكيز 30 يوم.

وشكرا مع التحية للجميع...

 

@عبدالباسط ابراهيم

@محمد Fahmy

تم التعديل في بواسطة Fikri Madrid
اضافة نص

Recommended Posts

  • 1
نشر

الكود بعد التعديل سيصبح كالتالي:

<?php
$passwords = array('123456', 'xxxx', '7777', '8888', '9999');

if (isset($_POST['password'])) {
    if (in_array($_POST['password'], $passwords)) {
        setcookie('loggedIn', true, time() + (30 * 24 * 60 * 60)); // تعيين الكوكيز
        header('Location: ' . $_SERVER['PHP_SELF']); // إعادة توجيه الصفحة بعد تعيين الكوكيز
        exit();
    } else {
        die ('Incorrect password');
    }
}

if (!isset($_COOKIE['loggedIn']) || !$_COOKIE['loggedIn']):
?>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <p>You need to login</p>
    <form method="post">
        Password: <input type="password" name="password"> <br />
        <input type="submit" name="submit" value="Login">
    </form>
</body>
</html>
<?php
    exit();
endif;
echo '<h1>Hello world... Logged in successfully.</h1>';
?>

وما تم هو تعيين قيمة الكوكيز "loggedIn" إلى true باستخدام الدالة setcookie() عند تسجيل الدخول بكلمة المرور الصحيحة، ثم تحديد صلاحية الكوكيز لمدة 30 يومًا باستخدام time() + (30 * 24 * 60 * 60)، حيث يتم ضرب 30 (عدد الأيام) في 24 (عدد الساعات في اليوم) في 60 (عدد الدقائق في الساعة) في 60 (عدد الثواني في الدقيقة) للحصول على الوقت المستقبلي الذي ينتهي فيه صلاحية الكوكيز.

وفي حالة عدم وجود قيمة الكوكيز "loggedIn" أو إذا كانت قيمتها false، فسيعرض نموذج تسجيل الدخول، وعند تسجيل الدخول الصحيح، سيتم تعيين الكوكيز وإعادة توجيه الصفحة لعرض رسالة تأكيد تسجيل الدخول بنجاح.

وعليك بتأمين الاتصال باستخدام SSL والتحقق من صحة البيانات المرسلة قبل تعيين الكوكيز.

  • 1
نشر

لتحويل السيشن إلى الكوكيز، يجب تعديل الشيفرة الأصلية على النحو التالي:

تعريف متغير $_SESSION['loggedIn'] يتم تغييره إلى $_COOKIE['loggedIn'].

if (!isset($_COOKIE['loggedIn'])) {
    $_COOKIE['loggedIn'] = false;
}

استخدام دالة setcookie() لتعيين كوكيز بدلاً من السيشن.

setcookie('loggedIn', true, time() + (30 * 24 * 60 * 60)); // تعيين كوكيز مع صلاحية 30 يوم
$_COOKIE['loggedIn'] = true;

تحديث شرط الاختبار لاستخدام $_COOKIE['loggedIn'] بدلاً من $_SESSION['loggedIn'].

if (!$_COOKIE['loggedIn']): ?>

إضافة خاصية expire إلى دالة setcookie() لتعيين مدة صلاحية الكوكيز.

setcookie('loggedIn', true, time() + (30 * 24 * 60 * 60), '/');
// تعيين كوكيز مع صلاحية 30 يوم ومسار الجذر
  • 1
نشر

لتحقيق ذلك، يمكنك تعديل السكربت لتخزين معلومات تسجيل الدخول في الكوكيز بدلاً من السيشن، وضبط مدة انتهاء صلاحية الكوكيز على 30 يومًا. إليك السكربت المعدل:

<?php
$passwords = array('123456', 'xxxx', '7777', '8888', '9999');

if (isset($_COOKIE['loggedIn']) && $_COOKIE['loggedIn'] === 'true') {
    echo '<h1> hello world ... Logged in successfully..';
    exit();
}

if (isset($_POST['password'])) {
    if (in_array($_POST['password'], $passwords)) {
        // تعيين كوكيز لتسجيل الدخول
        setcookie('loggedIn', 'true', time() + (30 * 24 * 60 * 60)); // صلاحية الكوكيز لمدة 30 يومًا
        echo '<h1> hello world ... Logged in successfully..';
        exit();
    } else {
        die('Incorrect password');
    }
}
?>

<html>
<head>
    <title>Login</title>
</head>
<body>
    <p>You need to login</p>
    <form method="post">
        Password: <input type="password" name="password"> <br />
        <input type="submit" name="submit" value="Login">
    </form>
</body>
</html>

في هذا السكربت، تم استبدال السيشن بالكوكيز باستخدام دالة setcookie()، وتم ضبط قيمة الكوكيز على 'true' عند تسجيل الدخول بنجاح. تم أيضًا ضبط صلاحية الكوكيز باستخدام time() + (30 * 24 * 60 * 60) لتكون صالحة لمدة 30 يومًا.

يرجى ملاحظة أنه في بعض الحالات، قد يتم تجاوز صلاحية الكوكيز من قبل إعدادات المتصفح أو عند مسح الكوكيز يدويًا.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...