Ir para conteúdo
Fórum Script Brasil
  • 0

Como alterar perfil de usuário logado (PHP)


Amanda Antunes

Pergunta

Olá a todos, é minha primeira vez aqui pedindo por ajuda, e já agradeço...

o meu problema é o seguinte, estou tentando criar um CRUD, o cadastro/envio de mail de confirmação funciona corretamente e o login acho que está funcionando também, porém estou com problemas com o Update. Eu queria criar uma página de alteração de perfil de um usuário logado utilizando seu `id`  como base de identificação, mas não estou conseguindo pegar o id, espero que alguém possa me ajudar !!!

Formulário de Login:

<?php
//include ("_php/conexao.inc"); Sempre inicia a conexão com o BD e cm sesssion_start()
include ("_php/conexao.inc");
?>

<!-- acima tem informações de html disnescessária para minha dúvida então removi ;) -->  
  <!-- Formulário de login -->
	<form name="login" id="fLogin" method="post" action="_php/login.php">
        <input type="password" name="senha" id="cSenha" placeholder="Senha">
        <input type="text" name="email" id="cMail" placeholder="E-mail"/>
        <input type="submit" name="entrar" id="bEntrar" value="Entrar!"/>
    </form>

 

Configuração do Login:

 

<?php
//inicia a conexão com o BD e cm sesssion_start()
include("conexao.inc");
?>
<?php

//Pega as informações dos input
$senha = $_POST["senha"];
$email = $_POST["email"];

//Faz consulta ao bando de dados
$sql = mysqli_query($conexao, "SELECT id, email, senha FROM cadastro WHERE email = '$email' AND senha = '$senha'");
$bd = mysqli_fetch_assoc($sql);

//Verifica os Dados, se estiver Ok leva o user para o index
if (!empty($bd)) {
  /*Durante minha procura por soluções muitos criavam uma session: 
	$_SESSION['logado'] = true; Vocês recomendam criar essa ação?*/ 

    $_SESSION["nome_"]        =$bd["nome"];
    $_SESSION["senha_"]       =$bd["senha"];
    $_SESSION["email_"]       =$bd["email"];
    $_SESSION["id_"]          =$bd["id"];
    header('location:../index.php');
}
//Se não ... reconduz o user para a página de login
else{
    header('location: ../login.php');
}
?>

Página index: Neste arquivo tem um 'li' 'Perfil' que  levaria até a um link com o id do user logado, porém no link não aparece o id $_SESSION 

 

<li><a href="_php/altera_perfil.php?id= "<?php echo $_SESSION["id_"] ?>>Perfil</a></li>

 

<?php
include ("_php/conexao.inc");
?>
<?php

//Cria uma consulta ao BD
$sql = mysqli_query($conexao, "SELECT * FROM cadastro");
if(!$sql) {
    die("erro no banco");
}
//Cria uma variável para selecionar os dados
$row = mysqli_fetch_assoc($sql);

?>

            <li><a href="index.php">Home</a></li>

            <!--Aqui o li 'Perfil' levaria até ao link _php/altera_perfil.php?id= e acrescentaria o id do user via $_SESSION-->
              
            <li><a href="_php/altera_perfil.php?id= "<?php echo $_SESSION["id_"] ?>>Perfil</a></li>
            <li><a href="login.php">Login</a></li>
            <li><a href="cadastro.html">Cadastro</a></li>

Form de alteração de perfil: Aqui após fazer a consulta ao BD os input seriam preenchidos com as informações do user logado, só que acaba preenchendo com os dados do primeiro id da minha tabela do BD não com os dados do usuário logado

 

<?php
//inicia a conexão com o BD e cm sesssion_start()
include ("conexao.inc");?>
<?php
$sql = mysqli_query($conexao, "SELECT * FROM cadastro ");
if(!$sql) {
    die("erro no banco");
}
$row = mysqli_fetch_object($sql);
?>
    <form name="perfil_usu" method="post" action="confim_alt_perfil.php" id="perfil_usua">
      
        <!--Aqui após fazer a consulta ao BD os input seriam preenchidos pelas informações do user logado, só que acaba preenchendo com os dados do
        primeiro id da tabela do BD não com os dados do usuario logado-->
          
          
        <input type="text" value="<?php echo $row->$_SESSION['nome_']?>" name="alt_nome" id="alt_nome" placeholder="Nome"/>
        <input type="email" value="<?php echo $row->$_SESSION['email_'] ?>" name="alt_email" id="alt_email" placeholder="E-mail"/>
        <input type="password" value="<?php echo $row->$_SESSION['senha_'] ?>" name="alt_senha" id="alt_senha" placeholder="Senha"/>
        <input type="text" id="id" name="id" value="<?php echo $row->$_SESSION["id_"] ?>"/>
        <input type="submit" value="Alterar!" id="bAlterar" name="bAlterar"/>

Confirma a alteração de dados:

 

<?php
include ("conexao.inc");

$id = $_POST["id"];
$nome = $_POST["alt_nome"];
$senha = $_POST["alt_senha"];
$email = $_POST["alt_email"];

$sql = mysqli_query($conexao, "UPDATE cadastro SET nome = '$nome', senha = '$senha', email = '$email' WHERE id = '$_SESSION["id_"]'") OR DIE(mysqli_error());

$row = mysqli_fetch_object($sql);

if(mysqli_affected_rows($conexao) > 0) {
    echo "Sucesso: Atualizado corretamente!";
}

else {
    echo "Aviso: Não foi atualizado!";
}

 

Não sei se consegui explicar bem, seria tipo

O usuário faz o login.

Quando ele estiver logado ele será encaminhado para o index onde haverá a opção Perfil.

Na página Perfil haverá os campos com os dados do Usuário já preenchidos com as antigas informações onde poderá alterar APENAS os seus dados..

No link do Perfil constará o id do usuário ex:https://forum.imasters.com.br/forum/altera_perfil.php?id=$_SESSION["id"] ?>

Porém com o meu sistema não aparece o id no link e os campos são preenchidos com os dados do primeiro usuário da minha Tabela do Banco de Dados e quando faço a alteração altera a do primeiro usuário da minha Tabela não os dados do usuário logado ...

Eu fiz alguma coisa errada, viajei demais e fiz coisa que não existe kkk?

:D

Se alguém puder me ajudar, Obrigada!!!!                                                         

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Amigo, 

Criou a Sessão certo,

$result mysqli_query($conexao,"SELECT * FROM cadastro where id='$idSessao'")

$row mysql_fetch_row($result);
 

pega o resultado joga no input

<input type="text" value="<?php echo $row['nome']?>" name="alt_nome" id="alt_nome" placeholder="Nome"/>

lembrando que nunca usa id na url, voce manda para pagina 

_php/altera_perfil.php

ai com isso basta dar um update pelo id da sessão

update cadastro .... where id ='$idSessao'

abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...