اذهب إلى المحتوى

السؤال

نشر

 

 

 

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

تحيه طيبه للجميع.

كنت رابط كود php التالي بصفحة تسجيل دخول flutter 

<?php
include 'connt.php';
 
 $json = file_get_contents('php://input');
 $_POST = json_decode($json,true);
 $phone = '9';
 $password ='9';

 $loginQuery = "select * from user where phone = '$phone' and password = '$password' ";
 
 
     $check = mysqli_fetch_array(mysqli_query($con,$loginQuery));
    if($check){
    
         $check['result'] = 'Login Matched';
         $SuccessMSG = json_encode($check);
         echo $SuccessMSG ; 
     }
    
     else{
        $InvalidMSG= array("result"=>"Invalid Username or Password Please Try Again");
        $InvalidMSGJSon = json_encode($InvalidMSG);
         echo $InvalidMSGJSon ;
     
     }
 
 
 
 
 
 mysqli_close($con);
?>

 

وكان كل شي شغال 100%100 والنتيجة كالتالي تظهر لدي

{"0":"81","id":"81","1":"9","name":"9","2":"9","phone":"9","3":"9","password":"","4":,"5":"v":"result":"Login Matched"}

اما كود لفلاتر كالتالي:

  Future userLogin() async {
    setState(() {
      visible = true;
    });

    final phoneController = TextEditingController();
    final passwordController = TextEditingController();
    String email = phoneController.text;
    String password = passwordController.text;


      var url = 'https://00000000000000/login.php';
      var data = {'phone': email, 'password': password};
      var response = await http.post(url, body: json.encode(data));
      Map<String, dynamic> message = jsonDecode(response.body);

      id = message['id'];

      if (message['result'] == 'Login Matched') {
        setState(() {
          visible = false;

        });
        
          Navigator.push(context, MaterialPageRoute(builder: (context) => Main());


    

       
                
              ],
            );
          },
        );
      }
  }

 

 

ولكن قمت بتخزين الباسورد في قاعدة البيانات بواسطة $hashed_password لذلك كنت مجبر على تغير صفحة تسجيل الدخول اعلاه الى الشكل التالي:

 

<?php
include 'connt.php';
$json = file_get_contents('php://input');
$obj = json_decode($json,true);

$phone = '1';

$sql = "select * from user where phone =?"; 
$stmt = $con->prepare($sql); 
$stmt->bind_param("s", $phone);
$stmt->execute();
$result = $stmt->get_result(); 
$user = $result->fetch_assoc(); 


 if($user){
  $password ='1';
 if (password_verify($password, $user['password'])) {
 $check['result'] = 'Login Matched';
         $SuccessMSG = json_encode($check);
         echo $SuccessMSG ; 


  } else {
   $InvalidMSG= array("result"=>"Invalid Username or Password Please Try Again");
        $InvalidMSGJSon = json_encode($InvalidMSG);
         echo $InvalidMSGJSon ;
  }

}else{
  echo "0000000";

}

mysqli_close($con);
?>

بعد التغير النتيجة التي احصل عليها كالتالي:

 

{"result":"Login Matched"}

هنا تكمن المشكله طبعا الكود شغال وصار بامكاني قراءة الباسورد المشفر ولكني احتاج الى استدعاء البيانات ايضا الخاصة ب اليوزر الذي قام بتسجيل الدخول كما حدث مع اول مثال حصلت على مصفوفة كامله بالاضافة الى Login Matched انا احتاج الى تلك البيانات في التطبيق حتى استعلام على سبيل المثال عن id حسب ما موضح في كود فلاتر اعلاه.

 

هل يعلم احد طريقة حل هذا المشكلة ؟

Recommended Posts

  • 1
نشر
بتاريخ 5 دقائق مضت قال Marwan800:

هنا تكمن المشكله طبعا الكود شغال وصار بامكاني قراءة الباسورد المشفر ولكني احتاج الى استدعاء البيانات ايضا الخاصة ب اليوزر الذي قام بتسجيل الدخول كما حدث مع اول مثال حصلت على مصفوفة كامله بالاضافة الى Login Matched انا احتاج الى تلك البيانات في التطبيق حتى استعلام على سبيل المثال عن id حسب ما موضح في كود فلاتر اعلاه.

 

هل يعلم احد طريقة حل هذا المشكلة ؟

السلام عليكم @Marwan800

المشكلة بسيطة وهي أنك يجب أن تضيف المستخدم لل response :

// الكود الناقص
$check['result'] = 'Login Matched';
$SuccessMSG = json_encode($check);
echo $SuccessMSG ;


// الكود الكامل 
$check['result'] = 'Login Matched';
$check['user'] = $user;
$SuccessMSG = json_encode($check);
echo $SuccessMSG ;

 

تحياتي.

  • 1
نشر
بتاريخ 5 دقائق مضت قال Marwan800:

هذا المشكله تجعل كودي في فلاتر لا يستقبل الاستعلام بشكل الصحيح 

هل توجد طريقة لدمجهم في مصفوفة واحده مثل السابق حتى تعمل؟

أهلاً أخي @Marwan800

تعديل بسيط على الكود يتحقق ذلك :

// الكود القيدم 
$check['result'] = 'Login Matched';
$check['user'] = $user;
$SuccessMSG = json_encode($check);
echo $SuccessMSG ;

//استبدله بالكود التالي

$user['result'] = 'Login Matched';
$SuccessMSG = json_encode($user);
echo $SuccessMSG ;

 

  • 0
نشر
بتاريخ 31 دقائق مضت قال محمد وسيم الحبش:

السلام عليكم @Marwan800

المشكلة بسيطة وهي أنك يجب أن تضيف المستخدم لل response :


// الكود الناقص
$check['result'] = 'Login Matched';
$SuccessMSG = json_encode($check);
echo $SuccessMSG ;


// الكود الكامل 
$check['result'] = 'Login Matched';
$check['user'] = $user;
$SuccessMSG = json_encode($check);
echo $SuccessMSG ;

 

تحياتي.

مرحبا اخي @محمد وسيم الحبش

شكرا لك على ردك في البدايه

توجد مشكله اخي الامر شغال نعم ولكن النتيجة كالتالي:

{result: Login Matched, user: {id: 169, name: 1, phone: 1,  extradata: null, state: 1, Joindate: null}}

اما النتيجة المطلوبه كالتالي:

{"0":"81","id":"81","1":"9","name":"9","2":"9","phone":"9","3":"9","password":"","4":,"5":"v":"result":"Login Matched"}

 

 

اذا ممكن تلاحظ النتتيجة التي توجد بها مشكله المشكله هيا انه اعطاني النتيجة ولكن مصفوفة داخل مصفوفة او مصفوفة خارج التي هيا result: Login Matched وبعدها يسحب التفاصيل المتبقيه اما الكود الثاني كل البيانات في مصفوفة واحده مع result: Login Matched   لتوضيح اكثر اقصد بكلامي الاقواس { }

 

هذا المشكله تجعل كودي في فلاتر لا يستقبل الاستعلام بشكل الصحيح 

هل توجد طريقة لدمجهم في مصفوفة واحده مثل السابق حتى تعمل؟

  • 0
نشر (معدل)
بتاريخ 1 ساعة قال محمد وسيم الحبش:

أهلاً أخي @Marwan800

تعديل بسيط على الكود يتحقق ذلك :


// الكود القيدم 
$check['result'] = 'Login Matched';
$check['user'] = $user;
$SuccessMSG = json_encode($check);
echo $SuccessMSG ;

//استبدله بالكود التالي

$user['result'] = 'Login Matched';
$SuccessMSG = json_encode($user);
echo $SuccessMSG ;

 

ربي يبارك لك في علمك ورزقك وزاردك الله من واسع فضله @محمد وسيم الحبش

تم التعديل في بواسطة Marwan800

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...