Olá
Estou desenvolvendo um projeto pessoal usando os conhecimentos dos cursos realizados na Alura e deste curso sobre requisições assincronas.
Atualmente na parte do projeto que estou desenvolvendo estou buscando a aplicação dos conteúdos de requisições assíncronas com Java Script integrando com PHP que tenho já desenvolvido para tratar dos acessos ao banco de dados.
Estou enfrentando um problema que não consegui ainda encontrar algum material que me esclareça a dúvida.
Vou postar os códigos JS para caso alguém possa me auxiliar a entender o que está acontecendo com uma classe que uso para manipular os dados de sessão que utilizo.
Estou usando uma função assíncrona para enviar dados para uma classe php através de POST, que é um dos métodos que aprendemos no curso.
Esta classe PHP recebe os dados por POST para tratar, porém antes de realizar a transação no PHP quero validar se o usuário está logado e se é admin, então para estas validações no PHP tenho usado uma SESSION.
Acontece que ao enviar os dados por post na requisição assíncrona a sessão os métodos que uso para recuperar dados da sessão estão retornando dados vazios.
Meu objetivo é validar se o usuário está logado. Optei por validar no PHP pois posso no futuro precisar usar eta mesma classe para outra função e então garanto que sempre será validado, não sei se esta minha abordagem está correta.
Preciso de auxílio para entender melhor as requisições POST, pois estou lendo alguns conteúdos e já percebi que como é uma requisição assíncrona faz com que a sessão não seja lida e precisareia enviara os dados de credenciais na requisição e etc.
Se possível me auxiliarem a melhorar meu entendimento nestas funções pois como mencionei, inclusive em outros posts de dúvidas meus que estou com um projeto pessoal em andamento a cada curso que faço tenho melhorado o projeto aplicando os aprendizados.
Meu projeto usa o PHP para intregração com o banco de dados e estes dados tenho manipulado nas páginas usando o java script fazendo estas requisições para as classes PHP.
Os dados que envio por POST estão sendo traados no PHP, da sequinte maneira, sendo que o código será executado somente se o usuário da sessão estiver logado, então recupero os dados da sessão com uma classe que tenho que faz isso e que já funciona em outras partes do projeto, porém até então somente com manipulações PHP pois agora que estou integrando o Java Script.
$json = file_get_contents('php://input');
$data = json_decode($json, true);
$destino = $data['destino'];
$assunto = $data['assunto'];
$mensagem = $data['mensagem'];
Desde já agradeço.
Segue o código da minha requisição:
async function enviaEmail(destino, assunto, mensagem){
try{
const api = await fetch("https://viverespirita.com.br/artigo-compartilha", {
method: "POST",
credentials: 'include',
headers: {
"Content-type": "application/json"
},
body: JSON.stringify({
destino: destino,
assunto: assunto,
mensagem: mensagem
})
});
const apiConvertida = await api.json();
if (apiConvertida[0]){
console.log(apiConvertida);
window.alert("Artigo compartilhado com sucesso.");
}else{
window.alert("Artigo não compartilhado.Verifique com o administrador.");
}
//return apiConvertida;
}catch (e) {
console.log(`Erro na função JS enviaEmail: ${e}.`);
}
}