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

السؤال

نشر

كيفكم يا أصدقاء فيه عندي موقع متكون من 6 ملفات php.... 

index.php واجهة الموقع فيه search 

Info.php فيه جدول بيانات 

updata.php فيه فورم تعديل بيانات 

edit.php فيه كود استرداد البيانات من قاعدة بيانات إلى الفورم 

connect.php كود اتصال مع قاعدة بيانات 

admin.php فيه فورم إدخال البيانات.... 

 

عاوز اضع login مع تشفيره لصفحات التاليه (admin.php updata.php Info.php) 

 

 

Recommended Posts

  • 0
نشر

يمكن عمل ذلك، لكن في البداية نحتاج أولا إلى إنشاء جدول في قاعدة البيانات لتخزين معلومات المستخدمين بحيث يحتوي على معرّف فريد، اسم المستخدم وكلمة المرور المشفرة إضافة إلى صفحة تسجيل الدخول (login.php) وتحتوي على نموذج لإدخال اسم المستخدم وكلمة المرور وعند إرسال النموذج، يتم التحقق من صحة البيانات مقابل قاعدة البيانات فإذا كانت صحيحة، يتم إنشاء جلسة للمستخدم وتوجيهه إلى الصفحة المطلوبة.

ولحماية الصفحات (admin.php، updata.php، Info.php)، نضيف كود التحقق من وجود جلسة مستخدم نشطة فإذا لم تكن موجودة، يتم إعادة توجيه المستخدم إلى صفحة تسجيل الدخول.

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

وهذه محاكاة لكيفية تطبيق ذلك، نضيف الكود التالي إلى ملف connect.php لإنشاء جدول المستخدمين:

$sql = "CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL
)";
$conn->query($sql);

ثم ننشئ ملف login.php بهذا الشكل:

<?php
session_start();
require_once 'connect.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    $stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows == 1) {
        $user = $result->fetch_assoc();
        if (password_verify($password, $user['password'])) {
            $_SESSION['user_id'] = $user['id'];
            $_SESSION['username'] = $user['username'];
            header("Location: admin.php");
            exit();
        } else {
            $error = "كلمة المرور غير صحيحة";
        }
    } else {
        $error = "اسم المستخدم غير موجود";
    }
}
?>

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <title>تسجيل الدخول</title>
</head>
<body>
    <h2>تسجيل الدخول</h2>
    <?php if (isset($error)) echo "<p style='color: red;'>$error</p>"; ?>
    <form method="POST">
        <label for="username">اسم المستخدم:</label>
        <input type="text" id="username" name="username" required><br>
        <label for="password">كلمة المرور:</label>
        <input type="password" id="password" name="password" required><br>
        <input type="submit" value="تسجيل الدخول">
    </form>
</body>
</html>

وللحماية، يجب تعديل كل من الملفات admin.php، updata.php، و Info.php بإضافة كود التحقق التالي في بداية كل ملف:

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit();
}
?>

ونهاية الجلسة ستكون بهذا الشكل:

<?php
session_start();
session_destroy();
header("Location: login.php");
exit();
?>

وبهذه الطريقة، سيكون لدينا تسجيل دخول آمن مع تشفير لكلمات المرور باستخدام password_hash() ويتم التحقق من تسجيل الدخول في الصفحات المحمية، ويتم تخزين معلومات المستخدم في الجلسة بعد تسجيل الدخول بنجاح.

  • 0
نشر
بتاريخ 32 دقائق مضت قال ياسر مسكين:

يمكن عمل ذلك، لكن في البداية نحتاج أولا إلى إنشاء جدول في قاعدة البيانات لتخزين معلومات المستخدمين بحيث يحتوي على معرّف فريد، اسم المستخدم وكلمة المرور المشفرة إضافة إلى صفحة تسجيل الدخول (login.php) وتحتوي على نموذج لإدخال اسم المستخدم وكلمة المرور وعند إرسال النموذج، يتم التحقق من صحة البيانات مقابل قاعدة البيانات فإذا كانت صحيحة، يتم إنشاء جلسة للمستخدم وتوجيهه إلى الصفحة المطلوبة.

ولحماية الصفحات (admin.php، updata.php، Info.php)، نضيف كود التحقق من وجود جلسة مستخدم نشطة فإذا لم تكن موجودة، يتم إعادة توجيه المستخدم إلى صفحة تسجيل الدخول.

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

وهذه محاكاة لكيفية تطبيق ذلك، نضيف الكود التالي إلى ملف connect.php لإنشاء جدول المستخدمين:

$sql = "CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL
)";
$conn->query($sql);

ثم ننشئ ملف login.php بهذا الشكل:

<?php
session_start();
require_once 'connect.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    $stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows == 1) {
        $user = $result->fetch_assoc();
        if (password_verify($password, $user['password'])) {
            $_SESSION['user_id'] = $user['id'];
            $_SESSION['username'] = $user['username'];
            header("Location: admin.php");
            exit();
        } else {
            $error = "كلمة المرور غير صحيحة";
        }
    } else {
        $error = "اسم المستخدم غير موجود";
    }
}
?>

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <title>تسجيل الدخول</title>
</head>
<body>
    <h2>تسجيل الدخول</h2>
    <?php if (isset($error)) echo "<p style='color: red;'>$error</p>"; ?>
    <form method="POST">
        <label for="username">اسم المستخدم:</label>
        <input type="text" id="username" name="username" required><br>
        <label for="password">كلمة المرور:</label>
        <input type="password" id="password" name="password" required><br>
        <input type="submit" value="تسجيل الدخول">
    </form>
</body>
</html>

وللحماية، يجب تعديل كل من الملفات admin.php، updata.php، و Info.php بإضافة كود التحقق التالي في بداية كل ملف:

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit();
}
?>

ونهاية الجلسة ستكون بهذا الشكل:

<?php
session_start();
session_destroy();
header("Location: login.php");
exit();
?>

وبهذه الطريقة، سيكون لدينا تسجيل دخول آمن مع تشفير لكلمات المرور باستخدام password_hash() ويتم التحقق من تسجيل الدخول في الصفحات المحمية، ويتم تخزين معلومات المستخدم في الجلسة بعد تسجيل الدخول بنجاح.

هل ممكن نضع ثلاث ايميلات مع باسورد.... لكي يمكن لثلاث أشخاص فقط الدخول على هذهِ الصفحات؟ اما في خصوص الجدول في قاعدة بيانات انا لدي جدول خاص بيانات الذي سيدخلها الادمن لإضافتها في صفحة Info.php...  هل تقصد اعمل جدول بيانات اخر في نفس قاعدة بيانات؟ 

  • 0
نشر
بتاريخ 7 دقائق مضت قال Baker Mohammed:

هل ممكن نضع ثلاث ايميلات مع باسورد.... لكي يمكن لثلاث أشخاص فقط الدخول على هذهِ الصفحات؟ اما في خصوص الجدول في قاعدة بيانات انا لدي جدول خاص بيانات الذي سيدخلها الادمن لإضافتها في صفحة Info.php...  هل تقصد اعمل جدول بيانات اخر في نفس قاعدة بيانات؟ 

بالطبع، يمكنك تعديل النظام ليسمح فقط لثلاثة أشخاص محددين بالدخول. وبخصوص قاعدة البيانات، نعم، ستضيف جدولا جديدا في نفس قاعدة البيانات الموجودة لديك.

  • 0
نشر
بتاريخ منذ ساعة مضت قال ياسر مسكين:

بالطبع، يمكنك تعديل النظام ليسمح فقط لثلاثة أشخاص محددين بالدخول. وبخصوص قاعدة البيانات، نعم، ستضيف جدولا جديدا في نفس قاعدة البيانات الموجودة لديك.

استاذ في هذهِ العمليه هل يتم عندما يحاول شخص يدخل على صفحة Info.php و admin.php هل سيطلب منه تسجيل دخول اولآ؟ 

 

وعنده تسجيل الدخول هل في كل عمليه تسجيل دخول ستذهب الايميل و الباس إلى قاعدة بيانات ام هي مجرد عمليه تحقق هل هذهِ الحقلين تساوي اذا تساوي سيتم الدخول اذا لاتساوي لن يتم الدخول.... واين يتم وضع الايميل و الباسورد في الكود؟ 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...