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

مشكلة في كود التحقق من أسم المستخدم وكلمة المرور

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

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

قمت بعمل صفحة تسجيل دخول يقوم المستخدم من خلالها بأدخال اسم المستخدم وهو عبارة Administrator وكلمة المرر وهي كذلك Administrator طبعاً اسم المستخدم وكلمة المرور مخزنة في قاعدة بينات بأسم users داخل جدول اسمه ايضاً administrators الجدول يتكون من ثلاث حقول

1- No. و نوع قيمته (15)int وبهي الخاصية NOT NULL auto_increment

2- user_name ونوع قيمته varchar(15) NOT NULL

3-password ونوع قيمته varchar(15) NOT NULL

العملية تتكون من ثلاث صفحات (مع عدم مراعة الجوانب الأمنية MySQL injection)

1- صفحة تسجيل الدخول : ومن يستطيع المستخدم ان يدخل أسم المستخدم وكلمة المرور

2- صفحة التحقق : صفحة التحقق وهذه الصفحة لا يراها المستخدم وهي التي تحتوي على كود الـ php الذي يتحقق من صحة أسم المستخدم وكلمة المرور فإذا كان اسم المستخدم وكلمة المرور غير متطابقين مع البينات الموجودة في قاعدة البينات يظهر له رسالة تفيد بأن اسم المستخد وكلمة المرور خطأ وإذا كانتا صحيحتين يتم تحويل المستخدم إلى الصفحة الثالثة

3- التي تحتوي على رسالة تم تسجيل الدخول بنجاح

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

يظهر له رسالة خطئ التالية

اقتباس
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\camel\www\mandob\check.php on line 32

اقتباس
Wrong Username or Password

طبعاً الخطئ موجود في الصفحة الثانية وأسمها check.php التي تقوم بالتحقق من صحة اسم المستخدم وكلمة المرور و بالتحديد في السطر 32

كود الصفحة check.php

<html>

<head>

<title>Check</title>

</head>

<body>

<?php

$con_sv = mysql_connect("localhost","root","");
if (!$con_sv)
  {
  die('Could not connect: ' . mysql_error());
  }

$db_name = "users";
$con_db = mysql_select_db("$db_name");
if (!$con_db)
  {
  die ('cannot select database ' . mysql_error());
  }

$tbl_name = "administrators";
$myusername = $_POST['user_name'];
$mypassword = $_POST['password'];
$sql = "SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";

$result= mysql_query($sql);
$count= mysql_num_rows($result);
if($count==1)
{
session_register("user_name");
session_register("password");
header("location:cpanel.php");
}
else {
echo "Wrong Username or Password";
}
?>

</body>

</html>

أتمنى من الأخوة في المنتدى مساعدتي في حل هذه المشكلة

لمزيد من المعلومات

كود صفحة الأولة صفحة تسجيل الدخول login.php

<html>

<head>

<title>Login</title>

</head>

<body>

<form action="check.php" method="post" name="login_form">

User Name: <input name="user_name" type="text"/><br/>
Password:    <input name="password" type="password"><br/>
<input name="login_submit" type="submit" value="Login"/>

</form>

</body>

</html>

كود الصفحة الثالثة التي يراد الوصول إليهى cpanel.php

<?php
session_start();
if(!session_is_registered(user_name)){
header("location:login.php");
}
?>

<html>
<body>
Login Successful to cpanel
</body>
</html>

ولمزيد من المعلومات والتفاصيل يمكن مراجعة الملفات

صفحة تسجيل الدخول login.php

صفحة التحقق check.php

الصفحة المراد الوصول إليهى cpanel.php

#2

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

أخي في قاعدة البيانات ما هو اسم الحقل الخاص باسم المستخدم؟

username

أم

user_name

حيث كما تلاحظ أنك في بداية سؤالك ذكرت أن اسمه في قاعدة البيانات user_name

و في الاستعلام تقوم بمقارنته على اساس أن اسمه username

تأكد من هذه النقطة و صححها إن كان فيها خطأ

لأن مثل هذه الأخطاء

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\camel\www\mandob\check.php on line 32

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

1

Everything will be fine when we TALK LESS, DO MORE


#3
اقتباس
أخي في قاعدة البيانات ما هو اسم الحقل الخاص باسم المستخدم؟

بالفعل أسم قاعدة البينات هو user_name وقمت بتعديل المشكلة والحمدل لله الكود يعمل بشكل جيد

ولكنني قمت بإضافة صفحة رابعة اسمها logout تقوم بقطع Session

الصفحة توئدي المهمة المطلوبة منها ولله الحمد ولكن المشكلة هي ظهور هذه الرسالة عند تنفيذ صفحة logout.php

اقتباس
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\camel\www\mandob\logout.php:1) in C:\camel\www\mandob\logout.php on line 2

طبعاً قمت بوضع رابط في صفحة cpanel.php اسمه logout يأخذ المستخدم الى صفحة logout.php حتى يقطع الـ Session

للأطلاع على كود صفحة logout.php

<?php
session_start();
session_destroy();
?>
<html>

<head>

<title>Logout</title>

</head>

<body>


<p>We hope to see you soon</p>
<p>you want to <a href="login.php">login</a> again</p>


</body>

</html>

وللأطلاع على جميع الصفحات mandob.rar

وجزاكم الله كل خير

تم تعديل هذه المشاركة بواسطة SalehZubir في 10 أكتوبر 2010 في 13:16

#4

الحمد لله تعالى ... حمد الله على السلامة

تم تعديل هذه المشاركة بواسطة MrHASSAN في 10 أكتوبر 2010 في 13:31

#5
اقتباس
لصفحة توئدي المهمة المطلوبة منها ولله الحمد ولكن المشكلة هي ظهور هذه الرسالة عند تنفيذ صفحة logout.php

إقتباس

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\camel\www\mandob\logout.php:1) in C:\camel\www\mandob\logout.php on line 2

احفظ كود logout.php بالترميز utf-8 without bom

I Say Nothing

#6

نعم حلة المشكلة ولله الحمد

جزى الله كل خير لمن ساعدني في حل هذه المشكلة

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

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

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

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

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