Могут ли переменные использоваться в операторах if и в первоначальном родительском операторе

#php #if-statement #fetch

#php #if-statement #выборка

Вопрос:

Я работал над своим API, то, на что вы смотрите, является базовым вариантом для запросов на выборку, я отладил код, и проблема в том, как мне получить переменную post data, в частности $ studentnumber, в функции, используемой выше, и использовать ее в функции оператора if, которая называется процессом входа в систему. Обе функции находятся в одном классе. Вот код 🙂

 case "login":
            if($_SESSION['user_session']->userloginstatus()) {
                $studentnumber = $_POST['studentnumber'];
                $password = $_POST['password'];
                $response = $_SESSION['user_session']->login($studentnumber, $password);
                http_response_code(206);
                if ($response == true) {
                    $_SESSION['user_session']->loginprocess($studentnumber);
                    echo $_SESSION['user_session']->loginprocess();
                    http_response_code(202);
                } else {
                    http_response_code(404);
                }
            } else {
                http_response_code(401);
            }
        break;
  

Вот класс

 class gaqsession {

        public $loginid;

        public function userloginstatus() {
                if(2 > 3) {
                    return false;
                } elseif (2 > 1) {
                    return true;
                }
        }
        public function login($studentnumber, $password) {
            $conn = dbconnection();
            try {
            $stmt = $conn->prepare("SELECT loginid, fullname, studentnumber, password, accessrights FROM login WHERE studentnumber = :studentnumber");
            $stmt->bindParam(':studentnumber', $studentnumber);
            $stmt->execute();
            $row = $stmt->fetch();
            //Php password verify
            if ($password == $row['password']) {
                return true;
            } else {
                return false;
            }
            }
            catch (PDOException $ex) {
                throw $ex;
            }
        }
        public function log() {
            $conn = dbconnection();
            try {
                $conn->beginTransaction();
                $stmt = $conn->prepare("INSERT INTO LOG(loginid, ip, browser, activity) VALUES(1, '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36', 'question')");

                //$stmt->bindValue(':question', $question);
                //$stmt->bindValue(':catagories', $catagories);
                //$stmt->bindValue(':loginid', $loginid);

                $stmt->execute();
                $conn->commit();
        
                }
                catch (PDOException $ex) {
                    $conn->rollBack();
                throw $ex;
                }
        }
        public function loginprocess($studentnumber) {
            $conn = dbconnection();
            $stmt = $conn->prepare("SELECT * FROM login WHERE studentnumber = :studentnumber");
            $stmt->bindParam(':studentnumber', $studentnumber);
            $stmt->execute();
            $results = $stmt->fetchAll();
            $loginid = ($results[0][0]);
            $this->loginid = $loginid;
            echo $this->loginid;
        }
    }
  

Комментарии:

1. Не очень понятно, что вы имеете в виду. Не могли бы вы показать полный класс? по крайней мере, с помощью 2-3 методов, о которых вы говорите, отключены, чтобы мы могли лучше видеть структуру?

2. Вы не должны хранить изменяемые объекты с сохранением состояния $_SESSION .

3. Конечная цель для меня — получить переменную $studentnumber в функции loginprocess из функции login

4. @WesleySmith только что обновил код

5. вы можете использовать сеанс для хранения значения