Fikri Madrid نشر 23 يونيو 2023 أرسل تقرير نشر 23 يونيو 2023 (معدل) السلام عليكم لدي سكربت php لدخول صفحة ويب بكلمة السر واحدة فقط <?php session_start(); $password = '123456'; session_start(); if (!isset($_SESSION['loggedIn'])) {$_SESSION['loggedIn'] = false;} if (isset($_POST['password'])) {if($_POST['password'] == $password) {$_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..'; ?> والان انا اريد اضافة كثير من كلمات السر للدخول و ليس كلمة واحدة فقط مثل هكذا : $password = array('123456', 'xxxx', '7777', '8888', '9999'); و انا في انتظار اجابتكم . وشكرا للجميع .. تم التعديل في 23 يونيو 2023 بواسطة Fikri Madrid تصحيح كلمة 2 اقتباس
1 محمد Fahmy نشر 23 يونيو 2023 أرسل تقرير نشر 23 يونيو 2023 لتحقيق هذا الهدف، يمكنك استخدام الدالة in_array() التي تقوم بفحص ما إذا كان عنصر محدد موجودًا في مصفوفة معينة. يمكنك استخدام هذه الدالة لفحص ما إذا كانت قيمة كلمة المرور المقدمة من المستخدم موجودة في مصفوفة كلمات المرور التي تم تعريفها. يمكنك استخدام الكود التالي لتحقيق هذا الهدف: <?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..'; ?> تم تعريف المصفوفة $passwords لتحتوي علي الكلمات المرور المطلوبة للدخول. ثم تم استخدام دالة in_array() لفحص ما إذا كانت قيمة كلمة المرور المقدمة من المستخدم موجودة في هذه المصفوفة. إذا تم العثور على القيمة المطلوبة، يتم تعيين: $_SESSION['loggedIn'] إلى true، وإذا لم يتم العثور على القيمة المطلوبة، يتم عرض رسالة خطأ ويتم إيقاف التشغيل. 1 اقتباس
0 Fikri Madrid نشر 24 يونيو 2023 الكاتب أرسل تقرير نشر 24 يونيو 2023 @محمد Fahmy جربت السكربت اشتغل تمام . شكرا اخي محمد فهمي على الكود. وبارك الله في عمرك... اقتباس
1 Mustafa Suleiman نشر 24 يونيو 2023 أرسل تقرير نشر 24 يونيو 2023 هناك عدة طرق وسأذكر منها طريقتين، الأولى عليك بالإعتماد على مصفوفة (Array) لتخزين مجموعة من كلمات السر.، أي تعديل السكريبت كالتالي: <?php session_start(); $passwords = array('123456', 'xxxx', '7777', '8888', '9999'); session_start(); 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..'; ?> والتعديلات هي إنشاء متغير $passwords كمصفوفة تحتوي على مجموعة من كلمات السر، ثم استخدام دالة in_array() للتحقق مما إذا كانت كلمة المرور التي تم إدخالها موجودة في المصفوفة، وإذا تم العثور على تطابق، يتم تعيين الجلسة $_SESSION['loggedIn'] إلى true، وإلا يتم عرض رسالة خطأ. الطريقة الثانية وهناك طريقة أخرى ألا وهي استخدام قاعدة بيانات لتخزين كلمات السر بدلاً من استخدام مصفوفة في السكريبت PHP الخاص بك، وفيما يلي مثال على كيفية تنفيذ ذلك باستخدام قاعدة بيانات MySQL: أولاً، يجب إعداد قاعدة البيانات وجدول لتخزين كلمات السر، باستخدام أداة إدارة قاعدة البيانات مثل phpMyAdmin لإنشاء قاعدة بيانات جديدة وجدول بها. ويجب أن يحتوي الجدول على حقلين على الأقل: id (المعرّف الرئيسي) و password (حقل لتخزين كلمات السر)، تستطيع أيضًا إضافة حقول إضافية حسب احتياجاتك، مثل اسم المستخدم أو أي معلومات إضافية. بعد إعداد قاعدة البيانات، باستطاعتك استخدام اتصال PDO للاتصال بقاعدة البيانات واستعلام الجدول للتحقق من صحة كلمة المرور، كالتالي: <?php session_start(); // معلومات قاعدة البيانات $host = 'اسم_المضيف'; $db = 'اسم_قاعدة_البيانات'; $user = 'اسم_المستخدم'; $password = 'كلمة_المرور'; // اتصال PDO بقاعدة البيانات $pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $password); if (!isset($_SESSION['loggedIn'])) { $_SESSION['loggedIn'] = false; } if (isset($_POST['password'])) { $enteredPassword = $_POST['password']; // استعلام للتحقق من صحة كلمة المرور $query = "SELECT COUNT(*) AS count FROM passwords WHERE password = :password"; $statement = $pdo->prepare($query); $statement->bindParam(':password', $enteredPassword); $statement->execute(); $result = $statement->fetch(PDO::FETCH_ASSOC); if ($result['count'] > 0) { $_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..'; ?> وتأكد من تعديل المتغيرات $host، $db، $user و $password وفقًا لمعلومات اتصال قاعدة البيانات. والنموذج السابق يقوم بالاتصال بقاعدة البيانات باستخدام PDO ويستعلم الجدول "passwords" للتحقق من صحة كلمة المرور المدخلة، فإذا تم العثور على تطابق، يتم تعيين الجلسة $_SESSION['loggedIn'] إلى true، وإلا يتم عرض رسالة خطأ. وبإمكانك إضافة سجلات كلمات المرور في جدول "passwords" في قاعدة البيانات، وسيتم قبول أي كلمة مرور تتطابق مع السجلات المخزنة في الجدول. وأنصحك أن تعتمد على نمط تخزين كلمات المرور الأمن والموصى به، مثل استخدام الهاش (hash) والملح (salt)، لتوفير حماية أفضل لكلمات المرور المخزنة. 1 اقتباس
1 عبدالباسط ابراهيم نشر 24 يونيو 2023 أرسل تقرير نشر 24 يونيو 2023 هناك طرق أخرى أيضًا مثل: استخدام حلقة for لفحص كل كلمة مرور: for ($i = 0; $i < count($passwords); $i++) { if ($_POST['password'] == $passwords[$i]) { $_SESSION['loggedIn'] = true; break; } } تخزين كلمات المرور في قاعدة بيانات واستخدام استعلام SQL للتحقق من كلمة المرور. استخدام تشفير كلمة المرور (مثل bcrypt) ومقارنة الهاش المشفر بدلاً من كلمة المرور نفسها. استخدام دالة array_search() للبحث عن كلمة المرور المدخلة في المصفوفة $passwords، وذلك باستخدام شرط if لفحص ما إذا كانت قيمة الدالة array_search() تساوي false أو لا. $passwords = array('123456', 'xxxx', '7777', '8888', '9999'); if (array_search($_POST['password'], $passwords) !== false) { $_SESSION['loggedIn'] = true; } else { die ('Incorrect password'); } استخدام دالة in_array() بشكل مباشر داخل الشرط if بدلاً من استخدام متغير، وذلك باستخدام الأقواس المستديرة في دالة in_array() بدلاً من الأقواس المربعة. if (in_array($_POST['password'], array('123456', 'xxxx', '7777', '8888', '9999'))) { $_SESSION['loggedIn'] = true; } else { die ('Incorrect password'); } 1 اقتباس
0 Fikri Madrid نشر 24 يونيو 2023 الكاتب أرسل تقرير نشر 24 يونيو 2023 (معدل) @محمد Fahmy @Mustafa Suleiman لو تكرمتم اريد نسخة سكربت بالكوكيز صالحة ل 30 يوم . يعني تغير session ب cookies . بدون قاعدة البيانات... وشكرا... تم التعديل في 24 يونيو 2023 بواسطة Fikri Madrid تصحيح كلمة اقتباس
السؤال
Fikri Madrid
السلام عليكم
لدي سكربت php لدخول صفحة ويب بكلمة السر واحدة فقط
<?php
session_start();
$password = '123456';
session_start();
if (!isset($_SESSION['loggedIn'])) {$_SESSION['loggedIn'] = false;}
if (isset($_POST['password'])) {if($_POST['password'] == $password) {$_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..';
?>
والان انا اريد اضافة كثير من كلمات السر للدخول و ليس كلمة واحدة فقط
مثل هكذا :
$password = array('123456', 'xxxx', '7777', '8888', '9999');
و انا في انتظار اجابتكم .
وشكرا للجميع ..
تم التعديل في بواسطة Fikri Madridتصحيح كلمة
6 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.