Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
carecazn

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

Recommended Posts

carecazn    10

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.

Editado por dif
Inserir o código dentro da tag CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites
DiF    2.732

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() 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
carecazn    10
  • Autor do tópico
  • 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.

     

    Editado por dif
    Sempre que for postar um código, clique no botão <> no editor. é um recurso do fórum para melhorar a leitura do código.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    DiF    2.732
    $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.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    carecazn    10
  • Autor do tópico
  • 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.   

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    DiF    2.732
    15 minutos atrás, carecazn disse:

    se isso não tiver problema para o site eu não ligo

    @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.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    carecazn    10
  • Autor do tópico
  • 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.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×