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:  
Hiago Marques

Mostra os dados do usuario

Recommended Posts

Galera estou fazendo um site em php onde o usuario se cadastra e vê suas informações num perfil,só que estou tendo dificuldade de puxar essas informações do banco e coloca-lás num perfil onde o usuario possa vê lás como eu faço isso?

já conseguir montar o sistema de login com session!

Editado por Hiago Marques
melhorar a pergunta

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques Primeiramente seja bem vindo ao fórum.

 

Agora sobre o problema.. onde exatamente  está tendo dificuldade?  cadê o código feito?

Puxar os dados do banco de dados é relativamente fácil.. mas é preciso que você mostre como tentou fazer.

No aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado!!

cadastro.php

<html>
<head>
<title>Sistema de Cadastro</title>
</head>
<body>
<form name="signup" method="post" action ="cadastrando.php">
Login: <input type-"text" name="login" /><br />
Nome: <input type-"text" name="nome" /><br />
Sobrenome: <input type="text" name"sobrenome" /><br />
E-mail <input type="text" name="email" /><br />
Senha: <input type="password" name="senha" /><br />
<td class="style_texto">Imagem :</td>
<td><label for="imagem"></label>
<input type="file" name="arquivo" id="arquivo" /></td>
</tr><br>
<input type="submit" value="cadastrar" />

</body>
</html>







cadastrando.php

<?php
$host = "localhost";
$user = "root";
$pass = "";
$banco = "loginsenha";
$conexao = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($banco) or die(mysql_error());
?>
<?php
$login=$_POST['login'];
$nome=$_POST['nome'];
$sobrenome=$_POST['sobrenome'];
$email=$_POST['email'];
$senha=$_POST['senha'];
$sql = mysql_query("INSERT INTO usuarios(login, nome, sobrenome, email, senha, foto)
VALUES('$login', '$nome','$sobrenome','$email','$senha', '$foto')");
    header("Location: admin.php");    
?>
    
<html>
<head>
<title>Cadastrando...</title>
</head>head>
<body>






login.php

<?php session_start(); include 'conn.php';  ?>
<?php  include 'logar.php';  ?>
<!doctype html>
<html>
<body>
<head>
<meta charset="utf-8">
<title>logar</title>
<link rel="stylesheet" type="text/css" href="css/estilo.css">
</head>
<ul id="menu">
    <li><a href="#">Pagina Inicial</a>  </li>
    <li><a href="cadastro.php">Cadastrar</a> </li>
</ul> 
<div id="formulario">
<form name="form" method="post" enctype="multipart/form-data" id="form">
   <label>Login</label>
  <input type="text" name="login" id="login" placeholder="Nome de usuario">
  <label>Senha</label>
  <input type="password" name="senha" id="senha" placeholder="Sua senha">
  <input type="submit" name="logar" id="logar" value="Logar">  
</form>
</div>
</body>
</html>





logar.php

<?php
if(isset($_REQUEST['logar'])){
$login = $_REQUEST['login'];
$senha   = $_REQUEST['senha'];
 
$sql = "SELECT * FROM usuarios WHERE login ='$login' AND senha = '$senha' ";
$query = mysql_query($sql) or die(mysql_error());
$qtda  = mysql_num_rows($query);
if($qtda == 0){
    echo 'Erro ao logar';    
    }else{        
        $_SESSION['login'] = $login;
        $_SESSION['senha'] = $senha;        
        header("Location: admin.php");        
        }
}
?>






conn.php

<?php
$conn = mysql_connect('localhost','root','') or die(mysql_error());
$banco = mysql_select_db('loginsenha') or die(mysql_error());
?>
admin.php essa seria apagina inicial onde ele vai depois de logado
<?php session_start();  ?>
 
<?php
if(!isset($_SESSION['login']) && (!isset($_SESSION['senha']))){    
header("Location: ../login.php");    
    }
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>admin</title>
<link rel="stylesheet" type="text/css" href="cssadmin/css.css"> 
</head>
<body>
<?php
$secao_usuario = $_SESSION['login'];
$secao_senha   = $_SESSION['senha'];
?>
<div id="topo">
<h1>Ola :<?php  echo $secao_usuario;   ?></h1>
</div>
<a href="perfil.php">perfil</a>
<a href="">sair</a>
<?php
if(isset($_REQUEST['sair'])){    
    session_destroy();
    header("Location:login.php");    
    }
?>
</body>
</html>







perfil.php aqui e o perfil

<?
include "conn.php";
session_start();
$email = $_SESSION['login_usuario'];
$sql = mysql_query ("SELECT * FROM usuarios WHERE email = '$email'");
while($linha = mysql_fetch_array($sql)){
$login = $_SESSION['login']
}
?>

<html>
<head>
<title>Perfil</title>
</head>
<link rel="stylesheet" type="text/css" href="css/estilo.css">
<body>
   <div id="perfil">
   <ul id="menu2">
    <li><a href="#">Pagina Inicial</a>  </li>
    <li><a href="cadastro.php">Sair</a> </li>
</ul>
     
   </ul>
   
   
   <div id="dados">
   <p><? echo $login ?> </p>   

  </div>
   </div>
   </body>
</html

 

obs: não quero puxar só o login quero todos os dados do usuario

Editado por dif
usar a tag específica para códigos aqui no fórum

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques Se código possuí alguns erros.. além de sujo,

 

Por exemplo, no seu cadastrando.php  não é recebida a imagem do tipo file.. usada na instrução SQL de inserção na tabela.

O logout está um pouco errado também.. e a extensão usada hj não é mais mysql  mas sim  mysqli  com "i" no final.

O modo de conexão também mudou.

 

Bom mas para mostrar em tela é extremamente simples... basta incluir sua conexão, fazer a consulta no banco e colocar os dados em um loop de while.

 

por exemplo:

 

<table>
  <tr> 
  	<th>ID</th>
  	<th>Nome</th>
    <th>E-mail</th>
  </tr>   
  <?php
      include 'conexao.php'; 
      $busca = mysqli_query($conn, "SELECT * FROM usuario");
   while($dados = mysqli_fetch_object($busca)):
      
      echo "<tr>
      			<td>$dados->id</td>
                <td>$dados->nome</td>
                <th>$dados->email</th>
            </tr>";
  endwhile;
  ?>
</table>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques sim,  você cria uma pagina chamada perfil.

Mas atente-se... meu exemplo exibiria todos os dados da tabela ... como você quer um "perfil" apenas do próprio usuário...  tens que passar o ID via GET em um link.. por exemplo:

 

<a href="perfil.php?id=<?php echo $id;?>">Ver perfil

 

Obviamente, com isso tens que armazenar o ID do usuário na sessão logo no momento da validação de login,

recomendo dar uma lida neste post: 

 

Tem um exemplo de login que eu faço sempre.. 

Editado por dif
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diff como você disse seu eu utlizo esse codigo que você postou aparece todos os usuarios mas se eu utlizo esse codigo

<a href="perfil.php?id=<?php echo $id;?>">Ver perfil

 mesmo assim aparece todos os usuarios cadastrados

já li aquele topico que você mando eu ler

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques Acontece que provavelmente teve algum problema com a ID na sessão.. ou você não passou corretamente ou não foi criado corretamente!

 

O fragmento de código descrito ali em cima.. se desse um echo para imprimir em tela deveria ficar:

 

perfil.php?id=1  ( por exemplo se o usuário fosse o id 1)

 

como ele está na url, está passando o parâmetro por GET.. então no seu arquivo perfil.php

Tu precisa receber o valor do parâmetro da url..  então ficaria assim:

$id  = $_GET["id"];

 

Com o valor do parâmetro já na variável.. é só usar na instrução:

 

$busca = mysqli_query($conn, "SELECT * FROM usuarios WHERE id= $id");

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, dif disse:

perfil.php?id=1  ( por exemplo se o usuário fosse o id 1)

 

como ele está na url, está passando o parâmetro por GET.. então no seu arquivo perfil.php

Tu precisa receber o valor do parâmetro da url..  então ficaria assim:


$id  = $_GET["id"];

 

Estou explicando exatamente isto aqui

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques exatamente...  e isso é feito no momento da validação de login.. lá onde você coloca o nome  ou e-mail na sessão para dizer " bom dia fulano de tal"...  lá você coloca na sessão o id: por exemplo

 

$select = mysqli_query($conn, "SELECT id, nome, email, senha FROM usuarios WHERE email='$email' AND senha='$senha'");
$dados = mysqli_fetch_object($select);

$id = $dados->id;
$login = $dados->email;

//atribui as variáveis em variáveis de sessão
$_SESSION['id'] = $id;
$_SESSION['login'] = $login;

Claro que eu desconsiderei várias coisas ali no exemplo.. como sql injection, teste de iF se funcionou a query... e etc...

 

Basicamente quero que entendas o seguinte:

Primeiro temos que fazer a consulta ao banco de dados e pegar os dados referentes ao usuário em si.. para isso usamos um login e senha. No meu exemplo eu usei o login  em forma de email mesmo( a maioria dos sites usam assim porque é mais fácil lembrar do email do que uma palavra para login.

 

depois que fazemos a consulta, percorremos a tabela e atribuímos em variáveis os dados que precisamos por na sessão.

Veja que as variáveis $id e $login recebem o valor de cada campo destinado.

Mais em baixo, repare que a variável $id  está do lado direito do sinal de igual(=) e a variável de sessão está no lado esquerdo.  isso porque estamos atribuindo em uma variável de sessão o valor daquela variável php.

Pronto assim tens o valor do ID do usuário na sessão.  devo lembra-lo que isso é feito na validação... então isso você vai colocar no arquivo validaUser.php  que é o responsável por receber os dados do formulário e validar.

 

Vendo seu código ele está com muitos erros... por isso é melhor você refazer-los

 

seguindo a seguinte estrutura:

 

cadastrando.php(formulário de cadastro)

processaDados.php(arquivo que recebe os dados da pagina cadastrando.php)

index.php(formulário de login)

validaUsuario.php(arquivo que recebe os dados da página index.php a de login é nessa que irá fazer a sessão)

perfil.php(esta página será exibida depois de logado no sistema... onde ele terá os dados do usuário).

 

Como podes ver temos 5 arquivos que devem ser criados... claro isso é só o básico.. mas é por aí.

tente evitar requisições para mesma página.. 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, você falou que eu tenho que recomeçar do zero mas nesse meu codigo atual eu tenho alguma coisa que da pra aproveitar no novo que vou fazer?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques Sim, podes aproveitar os formulários já prontos e arrumar o que está faltando.. podes usar os estilos css.. utilizado...  e etc.. 

O que precisa mesmo mexer é na parte do php. usando a estrutura de arquivos que mostrei mais acima.

 

Cadastrando.php -> processaDados.php (para cadastrar o usuário no banco de dados)

index.php(página inicial formulario de login) -> validaUsuario.php

 

Dentro do validaUsuario.php  podes colocar um redirecionador para um arquivo chamado home.php  caso o login e senha estejam corretos.. vai ser criada a sessão e redirecionará para esta página. caso contrário o sistema deve fazer voltar para index.php tela de login.

 

Este arquivo home.php  você pode criar do jeito que quiser..  estrutura html  css.. e etc... seria uma boas vindas logo depois de logado...   lá você cria o link  "ver perfil" 

 

Ainda tem alguns detalhezinhos que ainda não mencionei.. é só um cabeçalho em php para verificação de sessão que vai ser contida em cada página php ( fora as de validações). 

Depois eu vou dar uma procurada nos meus arquivos e pego um modelo.. e posto aqui dai cabe você a alterar e adaptar para seu propósito.. isso vai servir também de estudo.  Como tu já apresentou códigos aqui... e mostrou que tem interesse em aprender, não vejo problema em disponibilizar um código para estudo! 

 

aguarde que logo atualizarei o post.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques Como prometido,  aqui está o modelo.  Basicamente é tudo o que já expliquei. Não vou postar o formulário de login porque é sempre a mesma coisa.  só tenha em mente de colocar o arquivo php validaUsuario.php que recebe os dados no action do formulário de login.

 

validaUsuario.php

<?php
//Inicia a sessão
session_start();

    //Recebe os dados do formulário
	$login = $_POST["email"];
	$senha = $_POST["senha"];

    //Testa se os campos não estão vazios.
	if (empty($login) or empty($senha)):
            echo "<script>
                     alert('Preencha todos os campos');
                     history.go(-1);
                  </script>";
            exit;    
    endif;

    //inclui a conexao.
	include 'iconexao.php';

    //Faz a busca na tabela para comparar com o login e senha digitada 
	$busca = mysqli_query($conecta,"SELECT * FROM usuario WHERE email ='$login' AND senha = '$senha' ");
	
    //armazena o número de registros encontrados
    $num = mysqli_num_rows($busca);

    //Testa se o número de registros for igual a zero, mostra mensagem de erro. 
	if ($num == 0):
		echo "<script>
				alert('Usuario ou senha Incorreta');
				history.go(-1);
			  </script>";
		exit;
	else:
        //Bloco do else. Armazena em uma variável o retorno em forma de objeto 
		$dados = mysqli_fetch_object($dados);
        
        //Armazena o valor do campo do ID em uma variável.( esse modo é orientada a objetos)
		$id = $dados->idUsuario;

        //Armazena na sessão.. o ID e o login( no caso é um e-mail)
		$_SESSION["id"] = $id;
		$_SESSION["email"] = $login;

        //redireciona para o arquivo home.php caso logado com sucesso.
		header ("Location: home.php");		
	endif;
	
?>

Agora no seu arquivo home.php, perfil.php... ou qualquer outra página de sistema que seja usado enquanto logado.. você vai colocar isso no cabeçalho acima da tag <!doctype> e <html>

<?php
    //inicia a sessão;
    session_start();

    //seta o cookie 
    setcookie("ck_authorized", "true", 0, "/");

    //testa se não houver valor da sessão... sair do sistema
    if(!isset($_SESSION["email"])):
       header("location: index.php");
    else:
       //se houver valor na sessão.. permanece logado.
       $login = $_SESSION["email"];
    endif;
?>

 

Ainda tem o logout.php

que é bem simples:

<?php
	session_start();
	
	require 'conexao.php';
    //id na sessão.
	$id = $_SESSION["id"];
	
    //joga tudo num vetor
	$_SESSION = array();

    //apaga a sessão
    session_destroy();
	
    //retorna  para o login
	header("location: index.php");
?>	

é isso..  Lembrando que este é só o modelo.. no meu projeto funciona.. porém no seu deverá ser adaptado.  outra coisa é pensar no SQL injection.  usando algumas funções do php... é interessante você mesmo criar uma função de anti-sql injection.. e usa-la no seu código.. por exemplo:

<?php
function antiSQLInjectiony($string) {
	$string = stripslashes($string);
	$string = strip_tags($string);
	$string = mysql_real_escape_string($string);
return $string;
} 
?>

Para usar seria só apenas isto:

<?php
//Recebe os dados do formulário
	$login = antiSQLInjection($_POST["email"]);
	$senha = antiSQLInjection($_POST["senha"]);

Muito simples. Antes de pensar nisso.. faça seu sistema funcionar primeiro!

 

abraço

Editado por dif
arrumar código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faltou uma linha no logout.php

 

acrescentar isto :

session_destroy();

 

abaixo de :

//joga tudo num vetor
	$_SESSION = array();

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu pela força ai

Mas uma dúvida o que seria   SQL injection?  pois pesquisei e meio que não entedi direito, só entendi que seria um tipo de proteção contra atacaques que querem expor os dados valiosos de uma tabela

Editado por Hiago Marques
melhorar a pergunta

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques SQL Injection, é um tipo de ameaça de segurança que se aproveita de falhas em sistemas que interagem com bases de dados via SQL. A injeção de SQL ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma consulta (query) através da manipulação das entradas de dados de uma aplicação.

 

Sistemas suscetíveis a esta falha.. permite que requisições externas alterem, deletem, ou copiem dados de uma tabela...

por isso devemos sempre prevenir.. usando funções do php.. não é 100% mas minimiza os efeitos.. por exemplo retirar caracteres especiais, retirar tags html , retirar espaços(função trim() )... adicionar uma contra-barra(função addslashes() )

 

você pode ler mais sobre funções que evitam códigos maliciosos no seu SQL  http://blog.thiagobelem.net/removendo-tags-html-de-textos/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampplite\htdocs\login\validaUsuario.php on line 22

Deu esse erro no meu codigo na hora de verificar se o usuario existe. eu utilize esse codigo que você postou e fiz as mundaças que precisar para rodar mas que tipo de erro é esse?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques Não sei exatamente o que está na linha 22 do seu arquivo.  Mas o erro pode ser até do xampp.  eu recomendo fortemente que não use o xampp.. ao invés disso, use o EasyPHP dev-server. Caso dê problema de dll na instalação... procure no tópico em destaque aqui no setor web um link de tópico na qual eu explico como resolver. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

ei diff conseguir fazer funcionar, mas porém fiz umas alterações do seu codigo para funcionar será que as alterações que eu fiz que estão em vermelho deixa meu código mt vuneravel?

<?php
//Inicia a sessão
session_start();
    //Recebe os dados do formulário
    $login = $_POST["login"];
    $senha = $_POST["senha"];
    //Testa se os campos não estão vazios.
    if (empty($login) or empty($senha)):
            echo "<script>
                     alert('Preencha todos os campos');
                     history.go(-1);
                  </script>";
            exit;    
    endif;
    //inclui a conexao.
    include 'iconexao.php';

    //Faz a busca na tabela para comparar com o login e senha digitada 
    $sql = "SELECT * FROM usuarios WHERE login ='$login' AND senha = '$senha' ";

 

$busca = mysqli_query($conecta,"SELECT * FROM usuario WHERE email ='$login' AND senha = '$senha' ");


    
   

 //armazena o número de registros encontrados
  $query = mysql_query($sql) or die(mysql_error());
  $qtda  = mysql_num_rows($query);

 

$num = mysqli_num_rows($busca);


   

//Testa se o número de registros for igual a zero, mostra mensagem de erro. 
    if ($qtda == 0):
        echo "<script>
                alert('Usuario ou senha Incorreta');
                history.go(-1);
              </script>";
        exit;
    else:
        //Bloco do else. Armazena em uma variável o retorno em forma de objeto 
        $dados = ($dados);
        
        //Armazena o valor do campo do ID em uma variável.( esse modo é orientada a objetos)
        $id = $dados->idUsuario;
        //Armazena na sessão.. o ID e o login( no caso é um e-mail)
        $_SESSION["id"] = $id;
        $_SESSION["login"] = $login;
        //redireciona para o arquivo home.php caso logado com sucesso.
        header ("Location: home.php");        
    endif;
    
?>

 

Editado por dif
acrescentar tag code

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hiago Marques Só uma coisa.. veja que você está usando o mysqli  mas no seu código colocou mysql_query() e mysql_num_rows()

 

outra que não entendi foi esta linha:

 $dados = ($dados);

Não precisa disso. 

eu acho que os erros que estavam dando era por que estavas usando o xampp lite... ele é famoso por ser ruim.

Tenta fazer o jeito que postei antes usando o easyphp.... esse eu tenho certeza de 100% que funciona a não ser que o código tenha problemas... 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que baixe o easyphp como faço pra usar ele, pois não faço ideia de como usar esse troço? a minha versão é 16.1

Editado por Hiago Marques
melhorar a pergunta

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

×