<?php
// salvar_redirect.php

// Define o tipo de conteúdo da resposta como JSON
header('Content-Type: application/json; charset=utf-8');

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

// Resposta padrão
$response = ['status' => 'error', 'message' => 'Requisição inválida.'];

// Permitir apenas o método POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = json_decode(file_get_contents("php://input"), true);

    if (json_last_error() !== JSON_ERROR_NONE) {
        $response['message'] = 'Dados JSON inválidos recebidos.';
    } elseif (isset($data['url']) && is_string($data['url'])) {
        $url_para_salvar = trim($data['url']);

        // Validação básica da URL (FILTER_VALIDATE_URL pode ser muito restritivo para caminhos relativos)
        // O mais importante é a validação no script que efetivamente FAZ o redirect.
        // Aqui, podemos apenas garantir que não é algo completamente malformado ou excessivamente longo.
        if (!empty($url_para_salvar) && strlen($url_para_salvar) < 2048) { // Limite de comprimento razoável
            
            // Opcional: Validação mais estrita (descomente e ajuste se necessário)
            /*
            if (filter_var($url_para_salvar, FILTER_VALIDATE_URL) === false) {
                // Se for um caminho relativo (ex: /minha-pagina.php), FILTER_VALIDATE_URL falhará.
                // Precisamos verificar se é um caminho relativo válido para o próprio site.
                if (!preg_match('/^(\/[a-zA-Z0-9_.\-\/?=&%#+]*)$/', $url_para_salvar)) {
                    $response['message'] = 'URL fornecida não parece ser válida.';
                    echo json_encode($response);
                    exit;
                }
            }
            */

            $_SESSION['redirect_after_login'] = $url_para_salvar;
            $response = ['status' => 'success', 'message' => 'URL de redirecionamento salva.'];
        } else {
            $response['message'] = 'URL não fornecida ou inválida.';
        }
    } else {
        $response['message'] = 'Nenhuma URL fornecida nos dados.';
    }
} else {
    $response['message'] = 'Método de requisição não permitido.';
    http_response_code(405); // Method Not Allowed
}

echo json_encode($response);
exit();
?>