الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف أعطي صلاحيات لدخول صفحة معينة بالأدمن استريتر

بدأه أمير المعالي في 6 مايو 2012 · 17 رد · 3,153 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله ..

فكرتي هي اعطاء صلاحيات لدخول بعض العضويات ومنع البقية لملف داخل المجلد الاداري (بعد تسجيل الدخول )

الفكرة هي استدعاء الرقم الموجود بحقل (active) الخاص بالعضو المسجل دخوله في جدول ال users

بحيث الرقم 1 تسمح بالدخول و 0 أو غيرها يظهر لها (لا تملك صلاحيات كافية)

وهي بالكود التالي:

{     
$res = mysql_query("SELECT * FROM users WHERE id=$IDUSER_ADMIN AND active='$active' ");
    while ($row = mysql_fetch_array($res, MYSQL_NUM))
    {
        session_register("active");
        $IDUSER_ADMIN=$row[0];
        $active=$row[3];
        $row[3]='1';
      	}
   }

if($active)
{
 $body ="$username مرحبا وأهلاً بك يا";
}else{
 $body ="غير مصرح لك بدخول هذه الصفحة";
}

طبعاً الدالة خطأ ولا تفعّل الطريقة .. فماهي الطريقة الصحيحة أفيدونا بارك الله فيكم ،،

#2
$res = mysql_query("SELECT active FROM users WHERE id=$IDUSER_ADMIN");
	$row = mysql_fetch_array($res);

	if($row['active'] == 1)
	{
		// is admin
	}else
	{
		// not admin
	}

جرب هذا الكود , هذا على اساس انه في حقل عندك في جدول الاعضاء اسمه active وهو مخصص لصلاحيات 1 يعني مدير و 0 وغيرها يعني غير مدير

1

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#3

^^ حياك الله

للأسف الجملة أيضاً خاطئة وتظهر أخطاء بسطر جملة if ،،

#4

اخي الجملة صحيحة

ضع رسالة الخطأ التي تظهر لديك

وكذلك تأكد انك غيرت الكود حسب قاعدة البيانات لديك

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#5

أعدت المحاولة ونفس الشيء

وقمت بتغييرها حسب الجملة ونفس المشكلة

يظهر:

Parse error: syntax error, unexpected T_IF in C:\AppServ\www\site\administrator\avt.php on line 11

أي السطر الذي يبدأ بـif الشرطية

وقاعدة البيانات صحيحة .. الجدول users والحقل active ... ووضع include لملف بيانات القاعدة ،،

تم تعديل هذه المشاركة بواسطة أمير المعالي في 12 مايو 2012 في 13:49

#6

عدل الكود إلى

if ($user && $pass) {
    $row = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE user='" . mysql_real_escape_string($user) . "' and  pass='" . mysql_real_escape_string($pass) . "' limit 1"));

    if ($row['active'] == 1) {
        $_SESSION['IDUSER_ADMIN'] = $row['id'];
        $_SESSION['USER_ADMIN'] = $row['user'];
    }

    if ($_SESSION['IDUSER_ADMIN']) {
        $body = "$_SESSION[USER_ADMIN] مرحبا وأهلاً بك يا";
    } else {
        $body = "غير مصرح لك بدخول هذه الصفحة";
    }
}

في السطر الأول تعتمد المتغيرات على الفريم وورك المستخدم يعني ممكن يكون الأصح إستخدام السطر الاول كما يلي

if ($_GET['user'] && $_GET['pass']) {
    or
if ($_POST['user'] && $_POST['pass']) {
1

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#7

^^

بعد التعديل حسب بيانات القاعدة تظهر لي الصفحة بيضاء ،،

وبعد اضافة تعديلات .. عند الدخول عبر زيادة الرابط بـ 1 = $user && $pass ? مع تقليص الكلمة .. أو حذف if ($user && $pass) وترك الأقواس لتنفيذها بنفس الصفحة ،،

فتظهر جملة الترحيب في تسجيل الدخول .. وجملة الحظر في تسجيل الخروج .. لجميع ال active الـ 0 و 1 و غيرها >> أي لا تنفذ الشرط و عدت للمشكلة الأولى ...

ما المشكلة ؟

أخ بسام: هذه الطريقة مقتبسة من موضوعك (طريقة بناء موقع) من فكرة اظهار واخفاء التعليقات :)

#8

السلام عليكم

بسيط الامر نزلة جلس اداري احفظ له سينشي ادراي يكون لبعض العضويات

او تزل لنا الشرح للمشكلة كاملة مع قاعدة البينات حتي نقدر نساعدك اكثر

وشكرااا

#9

يمكنك وضع هدا الكود في اعلى الملف الدي تريد منع اي عضو من الدخول اليه

ويمكنك انت الدخول اليه برقم سري تضعه في وسطه

if (!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER']!=="ضع هنا اسم حقل الملف" || $_SERVER['PHP_AUTH_PW']!=="ضع هنا كلمة السر للملف")  
{  
header('WWW-Authenticate: Basic realm=" يجب عليك وضع الرقم والاسم للدخول "');  
header('HTTP/1.0 401 Unauthorized');  
exit("<b>لا يمكنك الدخول لهده الصفحة  </b>");
}
#10

^^

حياك الله legendq ..

قاعدة البيانات > جدول users > الحقول id , user_name , user_pass , active

الحقل active نوعه (1) int .. مخصص للصلاحيات

الأعضاء:

1 ـ admin ـ *** ـ 1

2 ـ ahmed ـ *** ـ 0

1 ـ saeed ـ *** ـ 3

كود الملف المقصود تحديد صلاحياته localhost/site/administrator/active.php كالتالي:

<?
session_start();
include "../config.php";    // بيانات الاتصال بالقاعدة
include "index1.php";     // ملف لتطبيق حالة تسجيل الدخول والخروج بالصفحة

if {    // تعمدت حذفة لاظهاره على نفس الصفحة << ليست مشكلة

    $res = mysql_query("SELECT * FROM users WHERE user_name='" . mysql_real_escape_string($user) . "' and  user_pass='" . mysql_real_escape_string($pass) . "' limit 1");
    $row = mysql_fetch_array($res, MYSQL_NUM);

    if ($row['active'] == 1) {
        $_SESSION['IDUSER_ADMIN'] = $row['id'];
        $_SESSION['USER_ADMIN'] = $row['user_name'];
    }

    if ($_SESSION['IDUSER_ADMIN']) {
        $body = "$username مرحبا وأهلاً بك يا";
    } else {
        $body = "غير مصرح لك بدخول هذه الصفحة";
    }
}

echo '<meta http-equiv="Content-Type" content="text/html" /> <head>';
echo "$body";   // طباعة الأمر

?>

فقط .. وأشكرك على البادرة الطيبة :)

....

..

(( ثم " مستقبلاً " في حالة نجاح الأمر .. نضيف جدول جديد يتكون من 5 مجموعات هي رُتب صلاحيات العضويات .. وربطها بحقل active بجدول الـ users ))

تم تعديل هذه المشاركة بواسطة أمير المعالي في 14 مايو 2012 في 00:52

#11

سؤال لو سمحتم؟

هل هذه الطريقة (بغض النظر عن تنفيذها ككود) صحيحة لاعطاء الصلاحيات للمستخدم؟؟؟؟

أم انه هناك طرق أفضل وذات مستوي احترافي اكبر؟

#12
اقتباس
أخ بسام: هذه الطريقة مقتبسة من موضوعك (طريقة بناء موقع) من فكرة اظهار واخفاء التعليقات

أعلم ذلك :)

مشكلتك في نسخة البي أتش بي , لم أحاول أن أعرف سبب المشكله ولكنها ليست في الكود وإنما في الأباتشي والإعدادات والله أعلم

ربما غدا أبحث عن سببها , حاول تنفيذ الكود على جهاز آخر أو على أستضافه مجانيه لنتأكد

اقتباس
هل هذه الطريقة (بغض النظر عن تنفيذها ككود) صحيحة لاعطاء الصلاحيات للمستخدم؟؟؟؟

أم انه هناك طرق أفضل وذات مستوي احترافي اكبر؟

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

2

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#13

شكراً لك 1+

#14

السلام عليكم

تفضل

اذا لم تنجح ها الطريقة

يكون عندك مشكلة اخرى

الكود وغير مايلزم

<?php 
session_start(); 
include "../config.php";    // بيانات الاتصال بالقاعدة 
include "index1.php";     // ملف لتطبيق حالة تسجيل الدخول والخروج بالصفحة 
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';

if ($username && $userpass){
	$user = mysql_real_escape_string($username);
    $pass = mysql_real_escape_string($userpass);
    $res = mysql_query("SELECT * FROM users WHERE user_name='".$user."' and  user_pass='".$pass. "' ") or die ("mysql error");

	if($num = mysql_num_rows($res) > 0){

		while($row = mysql_fetch_assoc($res)){

		 $us = $row["user_name"];
		 $pa = $row["user_pass"];
		 $ac = $row["active"];

		} // هنا نبدا اعطاء المدير واليزر والمشرف 
		if($username == $us && $userpass == $pa && $ac == 1){ // مدير
			$_SESSION['user_name'] = $us;
			$_SESSION['user_pass'] = $pa;
			$_SESSION['active_admin'] = $ac;
			$body = "مرحبابك مدير $us";

		}else if ($username == $us && $userpass == $pa && $ac == 0){ // يوزر
			$_SESSION['user_name'] = $us;
			$_SESSION['user_pass'] = $pa;
			$_SESSION['active_user'] = $ac;
			$body = "مرحبابك يوزر $us";

			}else if ($username == $us && $userpass == $pa && $ac == 3){ // مشرف
			$_SESSION['user_name'] = $us;
			$_SESSION['user_pass'] = $pa;
			$_SESSION['active_m_admin'] = $ac;
		    $body = "مرحبابك مشرف $us";

	       }else {
	         echo 	"لايمكن الدخول ";
	          exit;

	}


	}else {
		$body = "اسم المستخدم او كلمة المرور غير صحيحة";
	}
	}else {
		$body = "لرجاء كتابة اسم المستخدم وكلمة المرور";
	}

echo '<meta http-equiv="Content-Type" content="text/html" /> <head>'; 
echo "$body";   // طباعة الأمر 

?>
#15

أخ بسام: لدي php5 .. ربما يكون سبب المشكلة .. اذا توفرت نفس النوع الموجود في الاستضافات php6 أو 7 ستريحني كثيراً ..

سأجرب الملف على الاستضافة وأرى النتيجة (سيأخذ مني بعض الوقت ) .. شكراً لك ،،

أخ legendq : ^^ جربت الكود وبجميع اليوزرات تظهر لي ( الرجاء كتابة اسم المستخدم وكلمة المرور )

سأرفعها على استضافة واجربها لأتأكد منها أكثر .. شكراً لك ،،

أخ amira fatin وأخ mazenwrq : شكراً لمروركما العَطر ،،

#16

يا عزيزي

في الكود التالي غير اسم الانبوت اليتي تحمل اسم المستخدم وكلمة المرور

وضعها هنا بدلا

if ($username && $userpass){ 
غير $username 
وغير $userpass

تم تعديل هذه المشاركة بواسطة legendq في 14 مايو 2012 في 19:30

#17
legendq كتب:

يا عزيزي

في الكود التالي غير اسم الانبوت اليتي تحمل اسم المستخدم وكلمة المرور

وضعها هنا بدلا

if ($username && $userpass){ 
غير $username 
وغير $userpass

لم أفهم آخر جملة .. ماذا سأضع مكان $username و $userpass ؟

#18

ضع اسم الانبوت الذي سوف يتم كتابة بة اسم المستخدم وكلمة المرور

$_POST['username']
$_POST['userpass']

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…