1
resposta

Problemas com Sessão em PHP - Integração com Java Script

Olá

Estou desenvolvendo um projeto pessoal usando os conhecimentos dos cursos realizados na Alura.

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 PHP e 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. Esta classe que utilizo para manipular a sessão é chamada no momento que faço o usuário faz o login no sistema, armazenando o login do usuário e caso faça faça alguma requisição no sistema que exija que o usuário esteja logado eu faço o teste para ver o usuário que está logado para as devidas autorizações ou não. Até o momento as utilizações que tenho feito com PHP tenho conseguido usar a sessão normalmente, porém agora com esta integração de PHP com JS o método recuperaUserSessao() que deveria recuperar o login gravado em sessão está retornando como vazio e não consegui encontrar uma solução.

A requisição em JS chama a url e a url está programada para chamar a classe php que coloco abaixo. Eu instancio uma classe usuário passando como parâmetro o usuário da sessão. Lembrando que a minha sessão para as chamadas que faço em php tem funcionado, inclusive fiz um teste com GET direto na URL e também a sessão está retornando o dado que preciso da sessão. Só quando chamo o post pelo JS que retorna vazio. Vou continuar pesquisando mas gostaria de uma ajuda.

Seguem os códigos: async function enviaEmail(destino, assunto, mensagem){

try{
    const api = await fetch("https://meusite.com.br/compartilha", {
    method: "POST",
    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}.`);
}

}

namespace Equilibre\Controller\Artigo;

use Equilibre\Controller\Controller; use Equilibre\Controller\Mensagens; use Equilibre\Controller\SessaoController; use Equilibre\Infraestructure\ConnectionCreator; use Equilibre\Repository\UsuarioRepository; use Exception;

class ArtigoCompartilhaEmail implements Controller { public function processaRequisicao(): void {

    $msg = new Mensagens(); 
    $sessaoController = new SessaoController();

    $resposta = false
    try{

        $pdo = ConnectionCreator::createConnection();

        if (!empty($sessaoController->recuperaUserSessao())){
            $usuarioRepository = new UsuarioRepository($pdo);

            $usuario = $usuarioRepository->find($sessaoController->recuperaUserSessao());

            if((!$sessaoController->is_logado()) and (!$usuario->is_admin())){
                throw new Exception("Problemas no processamento da requisição de compartilhamento de Artigo por Email. Usuário deve estar logado e ser admin.");
            
            }    

            $json = file_get_contents('php://input');
            $data = json_decode($json, true);
            
            $destino = $data['destino'];
            $assunto = $data['assunto'];
            $mensagem = $data['mensagem'];
            
            $resposta = $msg->enviarEmail(null, $assunto, $mensagem,$destino);
 
            $respostaArray = [
                'resposta' => $resposta
            ]; 
           
            $dadosJson = json_encode($respostaArray);
            

            header('Content-Type: application/json');
            echo $dadosJson;
            exit;
        
    }catch (Exception $excessao) {
        echo $msg->msg_erro('MENSAGEN: '.$excessao->getMessage())   
    }
}

}

1 resposta

Um dia estarei apto a te ajduar por enquanto ainda estou criando jogo do POng srsrsr