تُرجع وظيفة تسجيل الدخول باستخدام واجهة برمجة التطبيقات دائمًا حالة نجاح تسجيل الدخول [مكررة]

0

هذا السؤال لديه بالفعل إجابة هنا:

لقد قمت بإنشاء ملفين PHP لتسجيل الدخول وواجهة برمجة التطبيقات. في الملف الأول أنشأت وظيفة للتحقق من بيانات الاعتماد المعينة مع جدول التسجيل وإذا تم التطابق ، قم بتعيين الحالة إلى 1. وفي ملف Api الذي قمت بتعيينه إذا تم تعيين هذه الحالة على 1 إرسال تسجيل الدخول بنجاح. ولكن حتى عندما أقوم بإدخال كلمة مرور خاطئة ، فإنها تُعيد تسجيل الدخول بنجاح. هل هو شيء مع الاستعلام أو الشرط؟

*** حسنًا ، لقد قمت بحل الإجابات هنا عن طريق تغيير == sI كتب هذا لتطبيق أصلي رد فعل. كان تسجيل الدخول يعمل جيدًا قبل إضافة تلك == إلى ملف واجهة برمجة التطبيقات ، ولا يعمل التسجيل الآن. ولكن عندما أحاول واجهة برمجة التطبيقات مع ساعي البريد فإنها ترجع النتائج الحقيقية. إذا أدخلت كلمة مرور خاطئة ، فإنها تُرجع 405 وإذا كانت كلمة المرور الصحيحة 200. ولكن تسجيل الدخول إلى التطبيق لا يعمل. يعمل عندما أقوم بإزالة التغييرات.

<?php

function Database()
{
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "chatapp";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    return $conn;
}

function login($connection, $phoneNo, $password){

    $newmessag  = "SELECT * FROM registration WHERE phone_number='$phoneNo' AND password ='$password'";
    $result = $connection->query( $newmessag);
    $count = $result->num_rows;


    if($count> 0)
    {
        $status =1;  

    }else

    {
        $status =0;
    }
    return $status;
}

?>

ملف API

<?php
include('new.php');

header("Content-Type:application/json");

$method = $_SERVER['REQUEST_METHOD'];
$myJson= file_get_contents('php://input');
$myData = json_decode($myJson);



if($method== 'POST')
{
    if(isset($myData))
    {
           $phoneNo = $myData->phone_number;
           $password = $myData->password;

        if(isset($phoneNo) && isset($password))
        {
            $status = login(Database(), $phoneNo, $password);

            if($status == 1)
            {
                deliver_response(200, "login sucess", $phoneNo);

            }else if ($status == 0)
            {
                deliver_response(405, "login failed", $phoneNo);
            }
        }
    }else{
        deliver_response(403, "Forbidden",$myData);
    }
}
else
{
    deliver_response(403, "Forbidden", $myData);
}


function deliver_response($status, $statusMessage, $data){
    header("HTTP/1.1 $status $statusMessage");
    header('Content-Type: application/json');

    $response['status'] = $status;
    $response['status_message'] = $statusMessage;
    $response['data'] = $data;

    $jres = json_encode($response);
    echo $jres;
}

?>

1 إجابة

1
افضل جواب

خطأ مطبعي = بدلا من == و == بدلا من = .

تحتاج إلى استخدام = لتعيين قيمة واستخدام == للمقارنة.

يحل محل if($status = 1) مع if($status == 1) و else if ($status = 0) مع else if ($status == 0) .

استبدل أيضًا $status ==1 مع $status = 1 و $status ==0 مع $status = 0 في login تعمل لنفس السبب ، حيث تحتاج هنا إلى تعيين القيم.

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام