مازلنا نطلب آيادي العون جزاكم الله خير
UP
مازلنا نطلب آيادي العون جزاكم الله خير
UP
سأقوم بتجربتها حالاً
و عذراً على التأخير
في إنتظارك يادكتور
أخي الكريم طبيعي لن يقبل دخولك في حال لم تكن كلمة المرور مشفرة لأنها موجودة فيالمشاركة الأصلية كتبت بواسطة فهد 2000
قاعدة البيانات مشفرة بـ md5 ..إذن الحل أن تقوم بتعديل صفحة التسجيل لتجعل الرقم السري
يدخل قاعدة البيانات بدون أي تعديل أو تشفير ..
عند إذن ستستطيع إستخدام الكود الذي قمت أنت بإرفاقه في بداية الموضوع !!
( ملخص كلامي ) أن الأرقام السرية لأعضائك في المنتدى ستكون مشفرة بالـ md5 ..
فعند الإستدعاء لابد من تشفير كلمة المرور ليتم مقارنتها بشكل صحيح..
عموماً سألقي نظرة على الملفات التي أرفقتها أيضاً!!
دعواتك ..تحياتي
__________________
{ وَكَانَ الإنسَانُ أَكْثَرَ شَيْءٍ جَدَلاً } . صدق الله العظيم
جزاك الله خير وأنا في إنتظارك
عرفت الخطأ
الخطأ في وجود header و عدم وجود ملف login_success.phpكود PHP:
if($count == 1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
قم بإنشاء الملف أو احذف هذا السطر
أي يصبح الكود
تحياتيكود PHP:
<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="m"; // Database name
$tbl_name="user"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$password1=md5 ($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$password1'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "index.php"
session_register("myusername");
session_register("mypassword");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>
Dr.no
لم أر ما يعيب ملفاتك شئ ..وأثبت أنت شخصياً أنه عند إدخالك الرقم السري بصيغة الـ md5 يتم الدخول!!
لكن لدي إستفسار واحد ..مشكلتك الآن هي أنك عندما تقوم بإدخال كلمة المرور بهذه الطريقة ( 12345 ) لا يقبل
الدخول صحيح ..رغم تشفير كلمة المرور ..هل هذا صحيح ؟
عموماً أريد منك تطبيق التالي وإخباري بالنتيجة ..
المفترض عند تطبيق هذه السطور خروج كلمة المرور المشفرة بنجاح ..كود PHP:
<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="m"; // Database name
$tbl_name="user"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword_a=$_POST['mypassword'];
$mypassword=md5 ($mypassword_a);
echo $mypassword;
return false;
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "index.php"
session_register("myusername");
session_register("mypassword");
header("location:index.php");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>
قم بتجربة ذلك وأخبرني بالنتيجة!!
( سؤال أخير ) هل كلمة المرور التي تريد مقارنتها عند الدخول هي نفسها كلمة مرور منتديات VB ؟
تحياتي..
__________________
{ وَكَانَ الإنسَانُ أَكْثَرَ شَيْءٍ جَدَلاً } . صدق الله العظيم
نعم هيا كلمة مرور VB
أتعبتنا الله يصلحك ..بس ما يخالف إن شاءالله تعبك راحة يالغالي!!
كلمة المرور التي تدخل قاعدة بيانات منتديات vBulletin مشفرة بالـ md5 نعم ..لكن بطريقة مختلفة لا أعلمها..
بمعنى أنه قد تكون كلمة it.7 تساوي ccd2c49aac2e2cb24379e7f7c4527bad لكنها في قاعدة بيانات هذا
المنتدى ستتغير إلى صيغة أخرى ..وذلك ناتج عن عمليات حسابية أخرى ( أنا ) أجهلها للحقيقة!!
وقد سبق لي تجربة هذه الطريقة لكنها لم تنجح ..وقد تم برمجة هذه الطريقة حديثاً منعاً لأي تغيير من داخل قواعد
البيانات قد يؤدي إلى سرقة عضوية المشرف العام أو خلافه..
أتمنى أني أفدتك!!
دعواتك ..تحياتي
__________________
{ وَكَانَ الإنسَانُ أَكْثَرَ شَيْءٍ جَدَلاً } . صدق الله العظيم
الملف موجود ولاكن دون جدوى وهذا هو محتواهالمشاركة الأصلية كتبت بواسطة Dr.no
// Check if session is not registered , redirect back to main page.
// Put this code in first line of web page.
<?
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>
<html>
<body>
Login Successful
</body>
</html>
________
نوع المنتدى vb
مشكور اخوي it.7 على مابذلته من جهد كفيت ووفيت وماقول غير الله يكتبلك الأجر إن شاء الله
قم بحذف السطر header() في الملف checklogin.php
لأني حذفته و نجح
و قمت بإنشاء ملف login_success.php و نجح أيضاً
ملاحظة لا تضع أي شيء قبل الـsession_start()
يعني يبدأ :
كود PHP:
<?
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>
<html>
<body>
Login Successful
</body>
</html>
جاري التجربة
أخي دكتور no هل انت عندما قمت بالتجربة ونجحت معك على قاعدة منتدى من نوع vb بواسطة جدول اليوزر ؟
انا لم تنجح معي وهل يلزم تعديل
<td><input name="mypassword" type="text" id="mypassword"></td>
في ملف main_login.php
إلى كذا مثلاً
<td><input name="password1" type="text" id="password1"></td>
تحملنا شوي ومالك غير الأجر إن شاء الله
لم أجرب على قاعدة vB
أنشأت قاعدة بيانات تحتوي نفس أسماء الحقول و الجدول و نجحت
و لم أقم بتغيير فورم الـHTML