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

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

مغلقمُجاب
بدأه ahmedarkan في 14 يونيو 2013 · 5 رد · 2,433 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عملت صفحت 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 connection
if (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 في 14 يونيو 2013 في 12:04

#3

هل تستخدم محرر نصوص عادي لكتابة أكواد 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 الذي يحويها :

<?php
Require_once("login.php");
$name = addslashes($_POST['login']);
$pass = addslashes($_POST['password']);

$con = mysqli_connect("localhost", "root", "", "test");


// Check connection
if (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 في 14 يونيو 2013 في 11:06

1
#4
اقتباس

 

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

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 في 14 يونيو 2013 في 14:06

#5 أفضل إجابة
اقتباس
اشكر مساعدتك القيمة

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

اقتباس

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

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

<?php
require_once("login.php");
$name = addslashes($_POST['login']);
$pass = addslashes($_POST['password']);

$con = mysql_connect("localhost", "root", "");
mysql_select_db("test");

// Check connection
if (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 :

<?php
Session_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 فهو أكثر من رائع :)

#6

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

 

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

هذا الموضوع مغلق.

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

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

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

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

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