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

السؤال

نشر (معدل)

اخواني عندي كود برمجي لتحقق من الاعضاء وتسجيل الدخول المشكل كيف اخلي الاعضاء يدخلون والغير مسجلين يرجعو لصفحة التسجيل ومنع اي احد من دخول الصفحة من غير تسجيل الكود كتالي: 

<?php
session_start();
       // to logn in -->
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    if (isset($_POST['sublog'])){
        $dalog = array(
        trim(strip_tags($_POST['mmm'])), 
        trim(strip_tags($_POST['ppp']))
        );
       $mailr = '/^[-a-zA-Z0-9!\#\$%&*+\=?^_.{|}~]{3,50}\@[\w]{3,50}\.[\w-]{2,10}/';
       $mailn = preg_match($mailr, $dalog[0], $k);
       $passr = '/[\w\@\#\-]{8,20}/';
       $passn = preg_match_all($passr, $dalog[1], $n);
       
 if ($mailn==1) {
 if ($passn==1) {
       // data server

 $cons = array(
 'localhost', 
 'root', 
 '', 
 'user', 
 'datau'
 );
 try{

        // .... Connect To Server .... //
     $conn = new PDO("mysql:host=$cons[0];dbname=$cons[3]", $cons[1], $cons[2]);

        // .... change Error Attribute .... //
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        // .... Get data from server
      $stnt = $conn->prepare("SELECT mail, name, imgg, pasw FROM datau");
      $stnt->execute();
        // .... Change Array Attribute
      $stnt->setFetchMode(PDO::FETCH_ASSOC);
        // .... Get Data
       foreach($stnt->fetchAll() as $key => $value) { 
        // .... Chack email && Chack password

        if ($dalog[0]==$value['mail'] && md5($dalog[1])==$value['pasw']){
          $_SESSION['mail'] = $value['mail'];
          $_SESSION['name'] = $value['name'];
          $_SESSION['imag'] = $value['imgg'];

          break;
        }
      }
 }catch(PDOException $e){
        echo 'server hasn\'t conected' . $e->getMessage();
      }$cons = null;
    }}}

}

?>

علما ان كود التحقق من العضو هو في الصفحة المراد الدخول اليها وليست صفحة التسجيل كما اتمنى اذا في اي خطا او ثغرة تفيدوني من اجل تصحيحها وشكرا ^___^

تم التعديل في بواسطة Sid Ahmed4

Recommended Posts

  • 0
نشر

مرحباً أخي ...
لعمل نظام تسجيل الدخول نقوم أولا بإنشاء جدول للمستخدمين ثم نقوم بعمل صفحة و لتكن مثلا login_pdo.php

<?php  
 session_start();  
 $host = "localhost";  
 $username = "root";  
 $password = "";  
 $database = "testing";  
 $message = "";  
 try  
 {  
      $connect = new PDO("mysql:host=$host; dbname=$database", $username, $password);  
      $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
      if(isset($_POST["login"]))  
      {  
           if(empty($_POST["username"]) || empty($_POST["password"])) // في حالة عدم إدخال البيانات 
           {  
                $message = '<label>All fields are required</label>';  
           }  
           else  
           {  
                $query = "SELECT * FROM users WHERE username = :username AND password = :password";  
                $statement = $connect->prepare($query);  
                $statement->execute(  
                     array(  
                          'username'     =>     $_POST["username"],  
                          'password'     =>     $_POST["password"]  
                     )  
                );  
                $count = $statement->rowCount();  
                if($count > 0) // إذا وجدنا البيانات مسجلة في جدول المستخدمين  
                {  
                     $_SESSION["username"] = $_POST["username"]; // نحفظ إسم المستخدم ضمن الجلسة  
                     header("location:dashboard.php");  // ونقوم بتحويل المستخدم إلى لوحة التحكم
                }  
                else  
                {  
                     $message = '<label>Wrong Data</label>';  // في حالة عدم وجود البيانات نرجع الرسالة 
                }  
           }  
      }  
 }  
 catch(PDOException $error)  
 {  
      $message = $error->getMessage(); // في حالة حدوث خطأ في الإتصال مع قاعدة البيانات
 }  
 ?>  

ملف dashboard.php يكون بهذا الشكل :

<?php  
 session_start();  
 if(isset($_SESSION["username"])) // بمعنى إذا كان إسم المستخدم موجود في الجلسة هذا يعني أن هناك مستخدم قام بتسجيل الدخول  
 {  
      echo '<h3>Login Success, Welcome - '.$_SESSION["username"].'</h3>';  // رسالة ترحيبية فقط
      echo '<br /><br /><a href="logout.php">Logout</a>'; // رابط لتسجيل الخروج
 }  
 else  // في حالة عدم وجود شخص مسجل دخوله نمنع الوصول إلى لوحة التحكم
 {  
      header("location:login_pdo.php"); // نقوم بتحويل المستخدم إلى صفحة تسجيل الدخول
 }  
 ?>  

و ملف ال logout.php يكون بهذا الشكل 

<?php    
 session_start();  
 session_destroy(); // تحطيم الجلسة  
 header("location:login_pdo.php");  // التحويل إلى صفحة تسجيل الدخول
 ?> 

و هذا نظام بسيط لتسجيل الدخول أرفقت لك الملفات.

login_pdo.zip

بالتوفيق

  • 0
نشر

أهلاً بك  أخي 
بكل بساطة بعد عملية تسجيل الدخول بنجاح تقوم بحفظ اسم المستخدم داخل session و تقوم بفحص اذا كان  هذا الsession  فارغ إذا فلم يقم المستخدم بتسجيل الدخول ،  و اذا كان يحتوي على بيانات إذا فهو بالفعل قام بتسجيل الدخول و يستطيع الإنتقال الى باقي الصفحات ، و هذا مثال بسيط يقوم بعملية فحص تسجيل الدخول 

//start session
session_start(); 

//check do the person logged in
if($_SESSION['username']==NULL){
    //haven't log in
    echo "You haven't log in";
}else{
    //Logged in
    echo "Successfully log in!";
}

 

  • 0
نشر
بتاريخ الآن قال ماجد قطوسة:

أهلاً بك  أخي 
بكل بساطة بعد عملية تسجيل الدخول بنجاح تقوم بحفظ اسم المستخدم داخل session و تقوم بفحص اذا كان  هذا الsession  فارغ إذا فلم يقم المستخدم بتسجيل الدخول ،  و اذا كان يحتوي على بيانات إذا فهو بالفعل قام بتسجيل الدخول و يستطيع الإنتقال الى باقي الصفحات ، و هذا مثال بسيط يقوم بعملية فحص تسجيل الدخول 


//start session
session_start(); 

//check do the person logged in
if($_SESSION['username']==NULL){
    //haven't log in
    echo "You haven't log in";
}else{
    //Logged in
    echo "Successfully log in!";
}

 

نعم اخي شكرا لكن كيف اقوم باعادة توجيهه الى لوحة التسجيل في حالة لم يكن مسجل

  • 0
نشر
بتاريخ 18 ساعات قال Sid Ahmed4:

نعم اخي شكرا لكن كيف اقوم باعادة توجيهه الى لوحة التسجيل في حالة لم يكن مسجل

الي كنت محتاجه وجدته عندك والله مابعرف كيف اشكرك اخلي الله هو الي يكافيك تسلم يا حبيبي

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...