6
respostas

A função mostraAlerta não funciona e não sei mais o que fazer!!!

Pessoal não sei o que está acontecendo. Fiz tudo que eu podia e não consegui resolver o problema, é o seguinte...

Essa é a função mostra alerta:

<?php
session_start();

function mostraAlerta($tipo){
    if (isset($_SESSION[$tipo])){
?>        
        <p class="alert-<?=$tipo?>"><? $_SESSION[$tipo] ?></p>
<?php 
    unset($_SESSION[$tipo]);
    }
}

O caso é que as mensagens "Você não tem acesso a essa funcionalidade", "Usuário ou senha invalido","Produto removido com sucesso" e "Logado com sucesso!" não funcionam quando utilizo essa função. o script funciona sem erros mas não aparece as mensagens.

Preciso de uma luz para seguir em frente com o assunto.

6 respostas

Bom dia Olavo,

Caso você esteja usando o Chrome, verifique o que é retornado no isset($_SESSION[$tipo]), antes do if para verificar se o valor retornado é um dos esperados. Pode ser que a condição não é verdadeira para o if. O comando para escrever no console do Chrome é console.log (isset($_SESSION[$tipo]));. Para visualizar o log, basta somente apertar a tecla f12 e clicar em console.

<?php session_start(); function mostraAlerta($tipo) { if(isset($_SESSION[$tipo])){ ?>

<?= $_SESSION[$tipo]?>

<?php unset($_SESSION[$tipo]); } }

?>

cabeçalho.php <?php error_reporting(E_ALL ^ E_NOTICE); include("mostra-alerta.php"); mostraAlerta("success"); mostraAlerta("danger"); ?> ta chamando isto?

Bom dia, Olavo

Verifica se o $_SESSION esta sendo criado como informado pelo Rafael, checa também os códigos dos seguintes arquivos:

--> logica-usuario.php <--

<?php session_start(); function usuarioEstaLogado(){ return isset($_SESSION["usuario_logado"]); }

function usuarioLogado() { return $_SESSION["usuario_logado"]; }

function verificaUsuario(){ if(!usuarioEstaLogado()){ $_SESSION["danger"] = "Você não tem acesso a esta funcionalidade."; header("Location: index.php"); die(); } }

function logaUsuario($email){ $_SESSION["usuario_logado"] = $email; }

function logout(){ session_destroy(); session_start(); }

--> index.php <--

<?php include("cabecalho.php"); include("logica-usuario.php"); ?> ...resto do código...

--> cabecalho.php <--

<?php error_reporting(E_ALL ^ E_NOTICE); include("mostra-alerta.php"); ?> .... código... <?php mostraAlerta("success"); mostraAlerta("danger"); ?>

--> produto-lista.php <--

<?php include("cabecalho.php"); include("conecta.php"); include("banco-produto.php"); ?>

Pode ser que tenha algo de errado em alguma dessas paginas,pois o código do mostra-alerta.php esta correto:

<?php session_start(); function mostraAlerta($tipo){ if (isset($_SESSION[$tipo])){ ?>

<?=$_SESSION[$tipo]?>

<?php unset($_SESSION[$tipo]); } }

Espero ter ajudado!

Oi Olavo

A sua dúvida foi resolvida?

Olavo, foi fácil resolver. Olhei o código fonte e vi que aparecia assim:

<? $_SESSION[$tipo] ?>

Isto significa que não está "traduzindo" o [$tipo]

Para resolver troque para :

<? $_SESSION['{$tipo}'] ?>

Simples mesmo. E sua função é super legal!

Falei besteira!!!! faltou apenas o =!!! fica assim:

function mostraAlerta($tipo){
    if (isset($_SESSION[$tipo])){
?>        
        <p class="alert-<?=$tipo?>"><?=$_SESSION[$tipo] ?> </p>
<?php 
    unset($_SESSION[$tipo]);
    }
}