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

استخدام Http Authentication

بدأه joo في 30 أبريل 2008 · 5 رد · 1,018 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام

اردت ان اتحقق من دخول المستخدم عبر استخدام http authentication وقد قمت بالعديد من المحاولات لكنها لم تنجح, مصدر كود هذه المحاولات ,إما من ملف المساعدة الخاص بيبي ا شبي او من بعض الكتب التعليمية ت

مع العلم باننني استخدم اباتش موديول

وفي النهاية قررت استخدامها بشكل بسيط جداً فقط اريد ان اعرف اين تذهب القيم التي اضعها , وعلى أي اساس تقبل نافذة http authentication القيم او ترفضها

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

Function test1(){
Header(“WWW-Authenticate: Basic  realm=something  written here ”)
Header(“HTTP/1.0 401 Unauthorized”);
Print  $_SERVER[‘PHP_AUTH_USER’];
Print  $_SERVER[‘PHP_AUTH_PW’];
}

وقمت باستدعائه في صفحة index.php لكنه يستمر في عرض نافذة التحقق , فهل من شخص على دراية بما يجري ليزودنا بمعلومات مفيدة حول العملية والية عملها وما الخلل فيها وما هو الحل السليم , ولكم جزيل الشكل مسبقاً

تم تعديل هذه المشاركة بواسطة joo في 30 أبريل 2008 في 09:19

#2

انسخ الكود للمفكرة واعكس اتجاه النص

<?php
//if ($PHP_AUTH_USER != "user" or $PHP_AUTH_PW != "pass"):
if ($_SERVER['PHP_AUTH_USER'] != "user" or $_SERVER['PHP_AUTH_PW'] != "pass"):
 // Bad or no username/password.
 // Send HTTP 401 error to make the
 // browser prompt the user.
 header("WWW-Authenticate: " .
		"Basic realm=\"Protected Page: " .
		"Enter your username and password " .
		"for access.\"");
 header("HTTP/1.0 401 Unauthorized");
 // Display message if user cancels dialog
?>
 <HTML>
 <HEAD><TITLE>Authorization Failed</TITLE></HEAD>
 <BODY>
 <H1>Authorization Failed</H1>
 <P>Without a valid username and password, access to this page cannot be granted.
	Please click 'reload' and enter a username and password when prompted.
 </P>
 </BODY>
 </HTML>
<?php else: ?>
 <HTML>
 <HEAD><TITLE>Authorization Failed</TITLE></HEAD>
 <BODY>
 <H1>Welcome</H1>
 <P>Welcome user!!
 </P>
 </BODY>
 </HTML>
<?php endif; ?>
#3

الكود الأول

I Say Nothing

#4

الكود الأول

في الكود السابق يتم اظهار نافذه التحقق فإذا تم ادخال كلمة اسر واسم اليوزر فيتم اعطاء رسالة welcome .

اما اذا كانت البيانات الخاطئة فينادي الداله Auth() ويقوم بتكرار النافذه الادخال مرة اخرى فاذا تكرر ادخال البيانات الخاطئة لثلاث مرات

في internet explore فبعد ذلك يتم اظهار رساله ان هذا الشخص غير مسجل

<?
function Auth () {
   header('WWW-Authenticate: Basic realm="Realm- Name"'); 
   header("HTTP/1.0 401 Unauthorized");
   echo "You are not authorized to view this resource.";
   exit;
}
if($_SERVER['PHP_AUTH_USER']=="user" && $_SERVER['PHP_AUTH_PW']=="pass"){
  echo "Welcome";
}
else
 Auth();
?>

الكود الثاني

يمكن تطوير الكود السابق ليصبح افضل وذلك بمقارنة اسم اليوزر

وكلمة السر من قاعدة البيانات

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

<?
function Auth () {
  header('WWW-Authenticate: Basic realm="Realm-Name"');
  header("HTTP/1.0 401 Unauthorized");
  echo "You are not authorized to view this resource.";
  exit;
}
$db = mysql_connect('localhost','root','') or die("Couldn't connect to the database.");
mysql_select_db('auths') or die("Couldn't select the database");
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
  Auth();
}
else {
 $username=addslashes($_SERVER['PHP_AUTH_USER']);
 $password=addslashes($_SERVER['PHP_AUTH_PW']);
 $result = mysql_query("SELECT count(*) FROM auths WHERE pass='$password'
              AND name='$username'")or die("Couldn't query the user-database.");
 $num = mysql_result($result, 0);
 if (!$num) {
   Auth();
 }
}
echo "Welcome";
?>

I Say Nothing

#5

مشكور كثيرا على المساعدة

ساجرب كلا الذريقتين واردلك خبر

سلام

#6

شكراً

لقد اشتغل الكود على احسن وجه

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