Ir ao conteúdo
  • Cadastre-se

Notice: use of undefined constant m - assumed 'm' in


Posts recomendados

Boa tarde, estou criando uma página, quando recupero as informações do bando de dados está dando uma Notice, 

 Notice: Use of undefined constant M - assumed 'M' in C:\wamp\www\nn\topo.php on line 84  

 

Segue o código.

<?php
date_default_timezone_set('America/Sao_Paulo');
if(isset($_SESSION['email']) && (isset($_SESSION['password'])) && (isset($_SESSION['nome']))){
// Saudação se estiver logado
if($_SESSION['nome']->genero == M){
$hora = date("H");
$boaMadrugada = "Boa Madrugada ";
$bomDia = "Bom Dia ";
$boaTarde = "Boa Tarde ";
$boaNoite = "Boa Noite ";
$sejaBemVindo = ", Seja Bem Vindo!";
if ($hora >= 0 and $hora < 6) {
    echo $boaMadrugada.$_SESSION['nome']->nome.$sejaBemVindo;
    }
elseif ($hora >= 6 and $hora < 12) {
    echo $bomDia.$_SESSION['nome']->nome.$sejaBemVindo;
    }
elseif ($hora >= 12 and $hora < 18) {
    echo $boaTarde.$_SESSION['nome']->nome.$sejaBemVindo;
    }
    else {
    echo $boaNoite.$_SESSION['nome']->nome.$sejaBemVindo;
}
}else    if($_SESSION['nome']->genero == F){
    
$hora = date("H");
$boaMadrugada = "Boa Madrugada ";
$bomDia = "Bom Dia ";
$boaTarde = "Boa Tarde ";
$boaNoite = "Boa Noite ";
$sejaBemVindo = ", Seja Bem Vinda!";
if ($hora >= 0 and $hora < 6) {
    echo $boaMadrugada.$_SESSION['nome']->nome.$sejaBemVindo;
    }
elseif ($hora >= 6 and $hora < 12) {
    echo $bomDia.$_SESSION['nome']->nome.$sejaBemVindo;
    }
elseif ($hora >= 12 and $hora < 18) {
    echo $boaTarde.$_SESSION['nome']->nome.$sejaBemVindo;
    }
    else {
    echo $boaNoite.$_SESSION['nome']->nome.$sejaBemVindo;
}
}
}if(!isset($_SESSION['email']) && (!isset($_SESSION['password'])) && (!isset($_SESSION['nome']))){
    
    // Saudação não logado
    $hora = date("H");
$boaMadrugada = "Boa Madrugada";
$bomDia = "Bom Dia";
$boaTarde = "Boa Tarde";
$boaNoite = "Boa Noite";
$sejaBemVindo = ", obrigado por nos visitar, fique à vontade!";
if ($hora >= 0 and $hora < 6) {
    echo $boaMadrugada.$sejaBemVindo;
    }
elseif ($hora >= 6 and $hora < 12) {
    echo $bomDia.$sejaBemVindo;
    }
elseif ($hora >= 12 and $hora < 18) {
    echo $boaTarde.$sejaBemVindo;
    }
    else {
    echo $boaNoite.$sejaBemVindo;
}
}
// Fim
 
?>

 

Não sei se esta é a melhor opção, porém esta funcionando, eu quero tirar este aviso sem fazer gambiarra, rsrsrsrsrs, escondendo o erro.

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderador

Bom, o que eu vejo de estranho ali é você usar o operador "  -> " sem estar usando a orientação a objetos.

vai ver que é isso que ele está dizendo

 

 O uso da flecha (->) é um construto da POO no PHP que permite acessar as propriedades e métodos de um dado objeto.

Este é um jeito errado de fazer. Pelo menos é o que eu considero.

 

Faça o seguinte, insira os dados que você precisa em um banco de dados, resgate eles no momento do login e compare...

é melhor do que usar o error_reporting() 

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, dif disse:

Bom, o que eu vejo de estranho ali é você usar o operador "  -> " sem estar usando a orientação a objetos.

vai ver que é isso que ele está dizendo

 

 O uso da flecha (->) é um construto da POO no PHP que permite acessar as propriedades e métodos de um dado objeto.

Este é um jeito errado de fazer. Pelo menos é o que eu considero.

 

Faça o seguinte, insira os dados que você precisa em um banco de dados, resgate eles no momento do login e compare...

é melhor do que usar o error_reporting() 

 

 

     Dif, este é o login,


 

if(isset($_POST['logar'])){
            //Recuperando os dados do formulário
            $email      = trim(strip_tags($_POST['email']));
            $password = trim(strip_tags($_POST['password']));
            
            //Selecionar os registros do banco de dados
            $sql = "SELECT * from cadastro_irmaos WHERE BINARY email=:email AND BINARY password=:password";
            try{
            $result = $connect->prepare($sql);
            $result->bindParam(':email', $email, PDO::PARAM_STR);
            $result->bindParam(':password', $password, PDO::PARAM_STR);
            $result->execute();
            $cont = $result->rowCount();
            if($cont>0){
                while($irmaos = $result->FETCH(PDO::FETCH_OBJ)){
            
            $email      = $_POST['email'];
            $password = $_POST['password'];
            
            $_SESSION['email'] = $email;
            $_SESSION['password'] = $password;
            $_SESSION['nome'] = $irmaos;
            
            echo "<script language='javascript'>window.location='index.php';</script>";
            exit;
                }}else{
                echo"<script language='javascript'>
                            alert('Erro ao logar, verifique os dados digitados!');
                            window.location='index.php';
                            </script>";
            }
            }catch(PDOException $e){
            echo 'ERROR:' .$e->getMessage();}            
            }//Fecha if isset
?>

 

da página de login eu criei a $_SESSION['nome'];

 

vem dai a->

 

quando dou um var_dump ele me trás tudo o que tem no banco de dados, então eu estou utilizando a $_SESSION['nome']->nome; pra acessar o campo nome dentro do banco de dados.

 

Bom, crie assim e funcionou, se tiver alguma forma melhor de se fazer, pode ser também.

 

Link para o comentário
Compartilhar em outros sites

  • Moderador
$genero = $irmaos->genero;

@carecazn Sim, agora você esclareceu que está usando orientação a objetos. Antes não tinha ficado claro.

O erro pode estar na linha:

 

if($_SESSION['nome']->genero == M){

Em nenhum momento do seu login você usa o dado do campo genero.

Resgate o valor do campo genero com

$genero = $irmaos->genero;

Eaí tenta por o gênero na sessão e comparar

 $_SESSION['genero'] = $genero;

 

Outra coisa que estranho um pouco é esta linha:

 $_SESSION['nome'] = $irmaos;

Você está atribuindo em uma variável de sessão,  uma variável que recebe o fetch.

Geralmente se usa a variável do fetch para referenciar um campo do banco como no caso de

 

o ID, o nome, o email e outros dados... exemplo:

$irmaos->nome;
$irmaos->id;
$irmaos->email;

e por aí vai. por isso eu acho estranho você colocar na sessão TODOS os dados, onde você quer apenas um, o gênero para comparar.

Link para o comentário
Compartilhar em outros sites

53 minutos atrás, dif disse:

$genero = $irmaos->genero;

@carecazn Sim, agora você esclareceu que está usando orientação a objetos. Antes não tinha ficado claro.

O erro pode estar na linha:

 


if($_SESSION['nome']->genero == M){

Em nenhum momento do seu login você usa o dado do campo genero.

Resgate o valor do campo genero com


$genero = $irmaos->genero;

Eaí tenta por o gênero na sessão e comparar


 $_SESSION['genero'] = $genero;

 

Outra coisa que estranho um pouco é esta linha:


 $_SESSION['nome'] = $irmaos;

Você está atribuindo em uma variável de sessão,  uma variável que recebe o fetch.

Geralmente se usa a variável do fetch para referenciar um campo do banco como no caso de

 

o ID, o nome, o email e outros dados... exemplo:


$irmaos->nome;
$irmaos->id;
$irmaos->email;

e por aí vai. por isso eu acho estranho você colocar na sessão TODOS os dados, onde você quer apenas um, o gênero para comparar.

     Rsrsrsrs, então, esta linha 

 $_SESSION['nome'] = $irmaos;

recupera o array e quando dou um var_dump ele aparece todos os campos, por este motivo não recuperei as variáveis logo no inicio para criar a $_SESSION, com a sessão nome eu tenho todos os campos e recuperando as variáveis vou ter várias sessões, se isso não tiver problema para o site eu não ligo, vou tentar recuperar as variáveis e te aviso o que deu.   

Link para o comentário
Compartilhar em outros sites

5 horas atrás, dif disse:

@carecazn certo, mas certamente isso não é indicado. afinal não se deve colocar todos os dados na sessão, só aqueles que você vai realmente usar.

     dif, não deu certo, esta dando o mesmo erro, testei ele no servidor, e no servidor não funciona, no localhost ele apresenta o aviso, porém, funciona e no servidor não funciona.

 

Caso queira olha estou testando no link abaixo.

www.organizeac.com.br/nn

 

5 horas atrás, carecazn disse:

     dif, não deu certo, esta dando o mesmo erro, testei ele no servidor, e no servidor não funciona, no localhost ele apresenta o aviso, porém, funciona e no servidor não funciona.

 

Caso queira olha estou testando no link abaixo.

www.organizeac.com.br/nn

     Dif, esta funcionando, eu me esqueci de colocar o genero na tabela do servidor, ficou da forma inicial mesmo.

     Mas os problemas não acabaram, agora, quando esta logado ele modifica o layout do site no topo e quando desloga volta ao normal, rsrsrsrsrs, vou aprender, rsrsrsrsrs, obrigado pela ajuda! E se quiser ainda me ajudar com essas divs, vou precisar.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...