Вызов API с использованием angular 7 не читает переменные сеанса PHP - PullRequest
0 голосов
/ 16 декабря 2018

Мне нужно создать простой логин с угловыми и использовать сессии.для этого у меня есть два php-файла и угловые файлы.

Это PHP-файл 1

session_start();
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');


$postdata = file_get_contents("php://input");

if(isset($postdata) && !empty($postdata)) {

    $request = json_decode($postdata);
    $username=trim($request->username);
    $password=trim($request->password);

  if($username == 'admin' && $password == 'admin') {
    $_SESSION['user'] = 'admin';
    ?>
{
  "success": true,
  "secret": "This is the secret no one knows but the admin"
}
    <?php
  } else {
    ?>
{
  "success": false,
  "message": "Invalid credentials"
}
    <?php
  }
} else {
  //var_dump($_POST)
  ?>
{
  "success": false,
  "message": "Only POST access accepted"
}
  <?php


}

?>

Это PHP-файл 2

    <?php
    session_start();
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

    $user = $_SESSION['user'];

             echo '{
                "message": "'.$user.'",
                 "success": true   
             }';


        ?>

В одном из моихКомпонент ngOnInit (), я вызвал оба этих API (я знаю, что первый должен быть вызван кнопкой входа в систему, но для целей тестирования я использовал оба под одним).Я даже использовал функцию settimeout для отсрочки второго вызова

 ngOnInit() {


    this.auth.getUserDetails('admin','admin')
    .subscribe(
      data => {
        console.log('success',data);
        if(data.success){

        }
        else{
          window.alert("invalid");
        }

    },
      error=> {
        console.log('failed',error);


      }
  ) 
  var _this=this;
  setTimeout(function(){


    _this.user.getSomeData().subscribe(data=>{

      console.log(data);

    })

    }, 3000);


  }

Но сеанс пользователя все еще недоступен. Мне нужна помощь, чтобы понять причину.Пожалуйста, проверьте изображение.Для первого поста запрос является успешным, но второй запрос на получение не прошел.Он говорит, что переменная сеанса, которую я использовал (пользователь), недоступна.
Но эта переменная была установлена ​​предыдущим запросом.

Это ошибка, которую я получаю

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...