Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Tratar Path info sem parametro

Boa noite, fiquei com duvida sobre o path_info se eu não defino valor a ele da o erro de undefined mais se eu tento tratar com um if por exemplo se path for null eu atribuo um valor a ele mais mesmo assim ele me da um aviso na tela de undefined. Qual seria o modo certo de se tratar isso?

3 respostas

Olá, Matheus. Não entendi sua dúvida.

Consegue me explicar de outra forma? Talvez um exemplo prático ajude.

$path = $_SERVER['PATH_INFO'];

$rotas = require __DIR__ . '/../config/rotas.php';

if (!isset($rotas[$path])) {
    http_response_code(404);
    exit();
}

session_start();
if (!isset($_SESSION['logado']) && stripos($path, 'login') === false) {
    $_SESSION['tipo_mensagem'] = 'danger';
    $_SESSION['mensagem_flash'] = 'Você não está logado';
    header('Location: /login');
    exit();
}

$controllerClass = $rotas[$path];

Na hora que a pessoa recarregar a pagina mais não passar nada (por exemplo: login, listar-cursos) o $path vai ser null, mais se eu fazer um tratamento com um

$path = $_SERVER['PATH_INFO'];
if($path == null){
    $path = '/login'
}

ele ainda fica falando que o $SERVER['PATHINFO'] é indefinido. (desculpe se eu estiver falando bobeira).

solução!

Ah, acho que entendi, Matheus.

Nesses casos, teoricamente, o valor de $_SERVER['PATH_INFO'] deveria ser /, e não null.

De qualquer forma, quando você chegar nesse caso, não deve definir o valor do path, você deve redirecionar o usuário para a página desejada.

Ex.:

if ($path === '/') {
    header('Location: /login');
    exit();
}

Ao enviar o cabeçalho Location na resposta HTTP, o navegador vai redirecionar o usuário para a página desejada, entende?