• 0
ahmedarkan

اين الخطأ في كود التحقق من اسم المستخدم وكلمة المرور وكود التحويل الى الصفحة التالية ؟؟

سؤال

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

 

كذلك عملت صفحة اسمها test تقوم بالتأكد من ادخال البيانات الصحيحة لكن لم ارى نتيجة للعمل ... حيث تظهر لي بعد ادخال اسم المستخدم وكلمة المرور صفحة فيها ارقام وكودات كثيرة ثم بعدها بثواني يتم تحويلي الى صفحة index المراد منها ان تظهر بعد ادخال معلومات المستخدم الصحيحة ..

 

اليكم المعلومات 

 

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

 

اسم القاعدة data_test

اسم مستخدم القاعدة data_du

كلمة المرور 12345678

اسم الجدول loged وفي الجدول عمودين هما uname  و password

 

هذا كود صفحة الدخول login

<?Session_start();If(isset($_SESSION['uname'] && isset($_SESSION['password'])){Die("you loged in ");?> <html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1256"><title>Login page</title><style type="text/css"></style></head><body><center><p>الرجاء ادخال اسم المستخدم وكلمة المرور</p></center><form name="form1" method="post" action="test.php"'><table align='center' class='label'><tr><td>اسم المستخدم</td><td><input type="text" name="login" size="20" value=""></td></tr><tr><br><td>كلمة المرور</td><td><input type="password" name="password" size="20" value=""></td></tr><tr><td> <input type="submit" name="Submit" value="دخـــول"></td></form> 

وهذا كود صفحة test 

<?Session_start();Require_once("login.php");$name=addslashes($_POST['name']);$pass=addslashes($_POST['pass']);$con=mysqli_connect("localhost","data_du","12345678","data_test");// Check connectionif (mysqli_connect_errno($con))  {  echo "Failed to connect to MySQL: " . mysqli_connect_error();  }If($name && $pass){$fuser=mysql_query("select * from loged where uname='$name' && password='$pass'");$num=mysql_num_rows($fuser);If($num !=0){While($row=mysql_fetch_array($fuser)){$n=$row['uname'];$p=$row['password'];}If($name && $pass){$fuser=mysql_query("select * from loged where uname='$name' && password='$pass'");$num=mysql_num_rows($fuser);If($num !=0){While($row=mysql_fetch_array($fuser)){$n=$row['uname'];$p=$row['password'];If($name==$n && $pass==$p){$_SEESION['uname']=$name;$_SESSION['password']=$pas;Echo" hello $d";Echo '<meta http-equiv="refresh" content="3; url= index.php">';} else{Die ("error in username or password");}?>

وهذا كود صفحة index

<html><head><meta content="text/html; charset=ISO-8859-1"http-equiv="content-type"><title></title></head><body>hello this is index page<br></body></html>

وهذا كود صفحة logout 

<?Session_start();If(!isset($_SESSION['uname']) and !isset($_SESSION['password'])){Echo '<meta http-equiv="refresh" content="3; url= login.php">';}else{Session_destroy();}?>

ارجو مساعدتي اخواني الاعزاء 

تم تعديل بواسطه ahmedarkan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

5 إجابة على هذا السؤال .

  • 0
اشكر مساعدتك القيمة

على الرحب و السعة

حاولت ان اجعل رسالة الخطأ تظهر اذا تم ادخال معلومات مستخدم خاطئة لكن لم افلح

إذا كان عدد الصفوف rows == 0 فلا يوجد مستخدم يحوي نفس الاسم ونفس كلمة المرور، لذا عدّل الكود في صفحة test لكي يُصبح كالتالي (لا ادري لماذا تريد تحويل الدوال من mysqli الى mysql ! لكن لك ما طلبت) :

<?phprequire_once("login.php");$name = addslashes($_POST['login']);$pass = addslashes($_POST['password']);$con = mysql_connect("localhost", "root", "");mysql_select_db("test");// Check connectionif (mysql_errno($con)) {    echo "Failed to connect to MySQL: " . mysql_error();}If ($name && $pass) {    $fuser = mysql_query("select * from loged where uname='$name' && password='$pass'");    $num = mysql_num_rows($fuser);    If ($num != 0) {        While ($row = mysql_fetch_array($fuser)) {            $n = $row['uname'];            $p = $row['password'];        }        If ($name && $pass) {            $fuser = mysql_query("select * from loged where uname='$name' && password='$pass'");            $num = mysql_num_rows($fuser);            If ($num != 0) {                While ($row = mysql_fetch_array($fuser)) {                    $n = $row['uname'];                    $p = $row['password'];                    If ($name == $n && $pass == $p) {                        $_SESSION['uname'] = $name;                        $_SESSION['password'] = $pass;                        Echo" hello $name";                        Echo '<meta http-equiv="refresh" content="3; url= index.php">';                    } else {                        Die("error in username or password");                    }                }            }        }    } else {        echo "please enter a valid username or passowrd";    }}?>

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

يمكن ذلك بتعديل ملف logout :

<?phpSession_start();If (!isset($_SESSION['uname']) and !isset($_SESSION['password'])) {    Echo '<meta http-equiv="refresh" content="3; url= login.php">';} else {    Session_destroy();    echo "you have logged out";    Echo '<meta http-equiv="refresh" content="3; url= login.php">';}?>

عملت بنصيحتك ونصبت برنامج Aptana Studio 3

لا تنسى أن تُلقي نظره على NetBeans فهو أكثر من رائع :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حاول أن تكتب هذا الكود

header( 'Location: index.php' ) ;

بدلا من هذا السطر

Echo '<meta http-equiv="refresh" content="3; url= index.php">';
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هل تستخدم محرر نصوص عادي لكتابة أكواد php ؟ لأن الأكواد تحوي على الكثير من الأخطاء البنيوية (نسيان قوس, نسيان وسيط من وسطاء الدوال, اسماء المتغيرات غير متطابقة ...الخ) لذا انصحك بتنصيب IDE كبرنامج netbeans أو Aptana.

من ناحية الأخطاء لديك صفحتي "logout" و "index" سليمتين لكن صفحة login يوجد فيها خطأ وحيد هي نسيان إغلاق القوس (طبعًا تحوي أخطاء في HTML)

<?Session_start();If (isset($_SESSION['uname']) && isset($_SESSION['password'])) {    Die("you loged in ");}?> <html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=windows-1256">        <title>Login page</title>        <style type="text/css">        </style>    </head>    <body>    <center><h2>شركة خطوط الانابيب النفطية</h2></center>    <center><p>الرجاء ادخال اسم المستخدم وكلمة المرور</p></center>    <form name="form1" method="post" action="test.php">        <table align='center' class='label'>            <tr>                <td>اسم المستخدم</td>                <td><input type="text" name="login" size="20" value=""></td>            </tr>            <tr>            <br>            <td>كلمة المرور</td>            <td><input type="password" name="password" size="20" value=""></td>            </tr>            <tr>                <td> <input type="submit" name="Submit" value="دخـــول"></td>                </form>

أما صفحة test فينقصها عدد من الأقواس، ناهيك عن دمج دوال mysql و mysqli مع بعضها ونسيان تحديد الوسيط الأول في دوال mysqli وعدم تطابق اسماء المتغيرات في السطر 33 ...الخ ولا يوجد داعٍ لإستدعاء الدالة session_start في ملف test لانك قمت بتضمين ملف login الذي يحويها :

<?phpRequire_once("login.php");$name = addslashes($_POST['login']);$pass = addslashes($_POST['password']);$con = mysqli_connect("localhost", "root", "", "test");// Check connectionif (mysqli_connect_errno($con)) {    echo "Failed to connect to MySQL: " . mysqli_connect_error();}If ($name && $pass) {    $fuser = mysqli_query($con, "select * from loged where uname='$name' && password='$pass'");    $num = mysqli_num_rows($fuser);    If ($num != 0) {        While ($row = mysqli_fetch_array($fuser)) {            $n = $row['uname'];            $p = $row['password'];        }        If ($name && $pass) {            $fuser = mysqli_query($con, "select * from loged where uname='$name' && password='$pass'");            $num = mysqli_num_rows($fuser);            If ($num != 0) {                While ($row = mysqli_fetch_array($fuser)) {                    $n = $row['uname'];                    $p = $row['password'];                    If ($name == $n && $pass == $p) {                        $_SESSION['uname'] = $name;                        $_SESSION['password'] = $pass;                        Echo" hello $name";                        Echo '<meta http-equiv="refresh" content="3; url= index.php">';                    } else {                        Die("error in username or password");                    }                }            }        }    }}?>
تم تعديل بواسطه Abd Allatif
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

حاول أن تكتب هذا الكود

header( 'Location: index.php' ) ;

بدلا من هذا السطر

Echo '<meta http-equiv="refresh" content="3; url= index.php">';
 

 

اشكرك اخي الكريم لكن جربت وظهرت لي رسالة الخطأ التالية في صفحة test.php

 

Parse error: syntax error, unexpected $end in test.php on line 32

 

===========================================================================

 

اخي الكريم 

Abd Allatif

 

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

 

بقي عندي شيئين بسيطين ان شاء الله 

 

حاولت ان اجعل رسالة الخطأ تظهر اذا تم ادخال معلومات مستخدم خاطئة لكن لم افلح 

 

عند الذهاب او الدخول على صفحة تسجيل الخروج logout يتم الخروج لكن لا يتم تحويلي الى صفحة تسجيل الدخول من جديد وحسب طلبي في  الكود

<?Session_start();If(!isset($_SESSION['uname']) and !isset($_SESSION['password'])){Echo '<meta http-equiv="refresh" content="3; url= login.php">';}else{Session_destroy();}?>

يتم تحويلي الى صفحة تسجيل الدخول من جديد عن الذهاب او الدخول على صفحة تسجيل الخروج logout فقط عندما اكون مسجل الخروج اصلاً .

 

عملت بنصيحتك ونصبت برنامج Aptana Studio 3

تم تعديل بواسطه ahmedarkan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ادعو لك بالتوفيق اخي الكريم ... واسف على التاخير في الرد ....

 

اجوبتك افادنتي . شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .