Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

franksniper

Atualizar Session

Recommended Posts

Fala ae galera beleza? estou fazendo uma loja virtual e está surgindo algumas duvidas sobre session!

 

Seguinte, quando o usuario se loga, ele tem a opção MINHA CONTA, que ele clica e aparece o cadastro todo dele para poder alterar.

Só que quando da update no banco, nao atualiza na hora, só se destruir a sessao e iniciar denovo!

 

como faço?

segue o código!

 

 

 

<?php 
ob_start();
session_start();

include "admin/include/conexao.php"; 
require "functions.php";


if($_POST['submit']){

	$id_clientes	=	$_POST['id_clientes'];
	$nome			=	$_POST['nome'];
	$cep			=	$_POST['cep'];
	$endereco		=	$_POST['endereco'];
	$numero			=	$_POST['numero'];
	$complemento	=	$_POST['complemento'];
	$bairro			=	$_POST['bairro'];
	$estado			=	$_POST['estado'];
	$cidade			=	$_POST['cidade'];
	$telefone		=	$_POST['telefone'];
	$email2			=	$_POST['email2'];
	$senha			=	$_POST['senha'];
	$from			=	$_POST['from'];
	$titulo 		= "Alteração de Cadastro Frank Toys";

	
	$erro = 0;
	
	if (empty($nome)){
			echo"<script>alert('O campo nome não pode ficar vazio.');</script>"; 
			$erro = 1;			
	}
	
		
	if (empty($cep)){
			echo"<script>alert('O campo Cep não pode ficar vazio.');</script>"; 
			$erro = 1;			
	}

	if (empty($endereco)){
			echo"<script>alert('O campo endereco não pode ficar vazio.');</script>"; 
			$erro = 1;			
	}
		
	if (empty($numero)){
			echo"<script>alert('O campo número não pode ficar vazio.');</script>";
			$erro = 1;			
	}
	
	if (empty($bairro)){
			echo"<script>alert('O campo bairro não pode ficar vazio.');</script>"; 
			$erro = 1;			
	}
	
	if (empty($cidade)){
			echo"<script>alert('O campo cidade não pode ficar vazio.');</script>"; 
			$erro = 1;			
	}
	if (empty($estado)){
			echo"<script>alert('O campo estado não pode ficar vazio.');</script>"; 
			$erro = 1;			
	}
	
	if (empty($telefone)){
			echo"<script>alert('O campo telefone não pode ficar vazio.');</script>"; 
			$erro = 1;			
	}
	
	if (verificar_email($email2) == 0){
			echo"<script>alert('Digite o e-mail corretamente.');</script>"; 
			$erro = 1;
		}
	
	if (empty($senha)){
			echo"<script>alert('O campo senha não pode ficar vazio.');</script>";
			$erro = 1;			
	}
	
	
	if($erro == 0 )
	{
		
	$sql_cliente = mysql_query("UPDATE clientes SET nome = '$nome', cep = '$cep', endereco = '$endereco', numero = '$numero', complemento = '$complemento', bairro = '$bairro', cidade = '$cidade', estado = '$estado', telefone = '$telefone', email = '$email', senha = '$senha' WHERE id_clientes = '$id_clientes'") or die (mysql_error());
	
	echo "<script>alert('Cadastro alterado com sucesso')</script>";
			
	}
	
}

?>

<form name="form" action="cadastro_cliente.php" method="post">
                    <div id="form_cadastro">
 
                        
      <ul>
                            	<li>
                            	<label class="h2_venda" for="nome">Name*</label>
                        		<input name="nome" type="text" class="input_cadastre" size="50" value="<?php echo $_SESSION['nome']; ?>" />
                                <input type="hidden" name="id_clientes" value="<?=$row['id_clientes']; ?>" />
            </li>
                                                      
                                                                 
<li>
                                    <label class="h2_venda" for="cep">Cep*</label>
                                    <input id="cep" class="input_cadastre" type="text" name="cep" value="<?php echo $_SESSION['cep']; ?>" />
                                    <span class="h2_venda">(9999-999)</span>
                                </li>
                                
                                <li>
                                    <label class="h2_venda" for="endereco">Endereço*</label>
                                    <input name="endereco" type="text" class="input_cadastre" size="50" value="<?php echo $_SESSION['endereco']; ?>" />
                                </li>
                                
                                 <li>
                                    <label class="h2_venda" for="numero">Número*</label>
                                    <input name="numero" type="text" class="input_cadastre" size="6" value="<?php echo $_SESSION['numero']; ?>" />
                                </li>

								 <li>
                                    <label class="h2_venda" for="complemento">Complemento*</label>
                                    <input class="input_cadastre" type="text" name="complemento" value="<?php echo $_SESSION['complemento']; ?>" />
                                </li>
                                
                                 <li>
                                    <label class="h2_venda" for="bairro">Bairro*</label>
                                    <input name="bairro" type="text" class="input_cadastre" size="30" value="<?php echo $_SESSION['bairro']; ?>" />
                                </li>
                                
								<li>
                                    <label class="h2_venda" for="cidade">Cidade*</label>
                                    <input name="cidade" type="text" class="input_cadastre" size="30" value="<?php echo $_SESSION['cidade']; ?>" />
                                </li>
                                
                                 <li>
                                    <label class="h2_venda" for="bairro">Estado*</label>
                                    <input name="estado" type="text" class="input_cadastre" size="30" value="<?php echo $_SESSION['estado']; ?>" />
                                </li>
                                
								<li>
                                    <label class="h2_venda" for="telefone">Telefone*</label>
                                    <input id="telefone" name="telefone" type="text" class="input_cadastre" size="30" value="<?php echo $_SESSION['telefone']; ?>" />
                                    <span class="h2_venda">(99) 9999-9999</span>
                                </li>
                                
								<li>
                                    <label class="h2_venda" for="email">E-mail*</label>
                                    <input name="email2" type="text" class="input_cadastre" size="50" value="<?php echo $_SESSION['email']; ?>" />
                                    <input type="hidden" name="from" value="FRANK TOYS franktoys@franktoys.com.br" />
                                </li>
                                                                
								<li>
                                    <label class="h2_venda" for="senha">Senha*</label>
                                    <input name="senha" type="password" class="input_cadastre" size="30" value="<?php echo $_SESSION['senha']; ?>" />
                                    <span class="h2_venda">Mínimo 6 digitos</span>
                                </li>
                                
                                <li style="text-align:center"><input name="submit" type="submit" class="input" id="submit" value="Atualizar" /></li>
                          </ul>  
                                        
                    </div>
                    </form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque ao invés de armazenar todos esses dados na sessão você não armazena somente o ID do cliente na sessão?

<?php
$getClienteID = $_SESSION['cliente_id'];

//Faz um SELECT na tabela clientes WHERE cliente_id = 'var_de_sessao'
$sql = mysql_query("SELECT * FROM clientes WHERE clientes_id = '$getClienteID'");
$row = mysql_fetch_assoc($sql);

//E imprime os resultados da consulta no formulário.
?>
<input name="nome" type="text" class="input_cadastre" size="50" value="<?php echo $row['nome']; ?>" />

Assim você sempre terá dados atualizados dos clientes que fizerem alterações.

 

Dúvida? Pode ficar a vontade para perguntar, ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, tudo bom claudio?

deu certo kra!

 

Agora deixa eu fazer uma pergunta, nas outras paginas eu tava usando if (isset($_SESSION['logado']))

 

é bom eu usar esse session['id_cliente'] ?

 

segue o meu checar login

 

<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){

               if(isset($_POST['email']) && isset($_POST['senha'])){
               require("SQL.php");                             
               $email = anti_injection($_POST['email']);
               $senha = anti_injection($_POST['senha']);
               $query = mysql_query("SELECT * FROM clientes WHERE email = '$email' AND senha = '$senha'") or die(mysql_error());
               $rTestar = mysql_num_rows($query);
               $row = mysql_fetch_assoc($query);

                               if($rTestar > '0'){
                                         //session_start();
                                               session_register('nome');
											session_register('id_clientes');
											session_register('endereco');
											session_register('email');
                                               session_register('senha');
                                               $_SESSION['id_clientes']	= $row['id_clientes'];
											$_SESSION['nome'] 			= $row['nome'];
											$_SESSION['cep']			= $row['cep'];
											$_SESSION['endereco']		= $row['endereco'];
											$_SESSION['numero']			= $row['numero'];
											$_SESSION['complemento']	= $row['complemento'];
											$_SESSION['bairro']			= $row['bairro'];
											$_SESSION['cidade']			= $row['cidade'];
											$_SESSION['estado']			= $row['estado'];
											$_SESSION['telefone']		= $row['telefone'];
                                               $_SESSION['email'] 			= $row['email'];
                                               $_SESSION['senha'] 			= $row['senha'];
                                               $_SESSION['logado'] 		= true;
                       	    } else {

                                	echo "<script> alert('Usuário ou senha invalidos!');</script>";

                               }


               }
			echo "<script> window.location = 'index.php';</script>";

}

?>

 

Está tudo certo ou ao inves do $_SESSION['logado'] = true; eu ponho o $_SESSION['id_clientes'] = true ?

vlw ae!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aí brother, beleza?

 

Fiz algumas alterações no teu código para deixar do modo como eu te disse antes. Veja:

<?php

// O correto é iniciar a sessão aqui no começo
if (!isset($_SESSION)){
session_start();
}

if($_SERVER['REQUEST_METHOD'] == "POST") {

  if(isset($_POST['email']) && isset($_POST['senha'])) {
require("SQL.php");                             
       $email = anti_injection($_POST['email']);
       $senha = anti_injection($_POST['senha']);
       $query = mysql_query("SELECT * FROM clientes WHERE email = '$email' AND senha = '$senha'") or die(mysql_error());
       $rTestar = mysql_num_rows($query);
       $row = mysql_fetch_assoc($query);

       if($rTestar > '0') {
           // Retirei todas as session_register() pois elas só funcionam com a register_globals estiver "on"
           // E desde o PHP 4.2.0, o valor padrão para a diretiva register_globals é "off"
           // E foi completamente removida a partir do PHP 6.0.0. A comunidade do PHP desencoraja desenvolvedores
           // A confiar nesta diretiva, e encoraja o uso de outros meios, como em superglobals.

           // Armazene na sessão somente o ID e o nome do cliente logado.
           // Quando precisar usar o restante das informações, 
           // faça uma nova consulta no BD com base no valor ID que está armazenado na sessão.  

           $_SESSION['userLogado']     = $row['id_clientes'];
           $_SESSION['nomeUserLogado'] = $row['nome'];

       }else{
    echo "<script> alert('Usuário ou senha inválidos!');</script>";
       }
   }
   header("Location: index.php");
}

?>

 

Para verificar se o usuário está logado, pode fazer assim:

<?php

if (!isset($_SESSION)){
   session_start();
}

// Atenção! Isso é um exemplo simples ok?

$logado = false;

if(!isset($_SESSION['userLogado'])){
   header("Location: login.php?erro=true");
}else{
   $logado = true;
}
?>

 

Espero que isso te ajude! Qualquer dúvida é só perguntar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/thiagole/public_html/sites/frank/checar_login.php:47) in /home/thiagole/public_html/sites/frank/checar_login.php on line 51

 

Warning: Cannot modify header information - headers already sent by (output started at /home/thiagole/public_html/sites/frank/checar_login.php:47) in /home/thiagole/public_html/sites/frank/checar_login.php on line 81

 

if (!isset($_SESSION)){

LINE 51 session_start();

}

 

LINE 81

header("Location: index.php");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Frank!

Antes de qualquer coisa, gostaria de escralecer que o tipo de formato (codificação) do arquivo

influencia e pode ser isso que está causando o erro.

 

Sempre salve seus arquivos com a codificação UTF8(sem BOM). Uma maneira fácil de fazer isso é

usando o Notepad++ 5.6.4 (clique aqui) como seu editor de código.

 

Vou postar mais uns exemplos aqui. Caso você não tenha resolvido o problema, talvez isso te ajude.

 

Exemplo de uso do arquivo checa_login.php na página que será restrita à usuários logados

<?php include('checar_login.php'); //Deve ser incluido sempre no topo e antes de qualquer coisa ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
   "http-~~-//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http-~~-//www.w3.org/1999/xhtml" dir="ltr" xml:lang="pt-br" lang="pt-br">
<head>
   <title>Página Inicial</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

   <h1>Olá, você está logado como <?php echo $_SESSION['nomeUserLogado'];?>.<br />Seja bem-vindo!  :-)</h1>

</body>
</html>

 

Aqui é o checar_login.php

<?php
if(!isset($_SESSION)){
   session_start();
}

// Atenção! Isso é um exemplo simples ok?
$logado = false;

if(!isset($_SESSION['userLogado'])){
   header("Location: login.php?erro=true");
}
$logado = true;
?>

 

 

Aqui é a página login.php

<?php
// O correto é iniciar a sessão aqui no topo
if(!isset($_SESSION)) {
   session_start();
}

if($_SERVER['REQUEST_METHOD'] == "POST") {

   if(isset($_POST['email']) && isset($_POST['senha'])) {
       require("SQL.php"); 
$email = anti_injection($_POST['email']);
       $senha = anti_injection($_POST['senha']);
       $query = mysql_query("SELECT * FROM clientes WHERE email = '$email' AND senha = '$senha'") or die(mysql_error());
       $rTestar = mysql_num_rows($query);
       $row = mysql_fetch_assoc($query);

       if($rTestar > '0') {
          // Retirei todas as session_register() pois elas só funcionam com a register_globals estiver "on"
          // E desde o PHP 4.2.0, o valor padrão para a diretiva register_globals é "off"
          // E foi completamente removida a partir do PHP 6.0.0. A comunidade do PHP desencoraja desenvolvedores
          // A confiar nesta diretiva, e encoraja o uso de outros meios, como em superglobals.

          // Armazene na sessão somente o ID e o nome do cliente logado.
          // Quando precisar usar o restante das informações, 
          // faça uma nova consulta no BD com base no valor ID que está armazenado na sessão.  

          $_SESSION['userLogado']     = $row['id_clientes'];
          $_SESSION['nomeUserLogado'] = $row['nome'];
		header("Location: index.php");
       }else{
           echo "<script> alert('Usuário ou senha inválidos!');</script>";
       }
   }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http-~~-//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http-~~-//www.w3.org/1999/xhtml" dir="ltr" xml:lang="pt-br" lang="pt-br">
<head>
<title>Página de Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

   <form id="login" action="login.php" method="post">
<fieldset>
    <legend>Entre com seus dados de usuário</legend>				
	<label>
            Email:
	    <input type="text" id="email" name="email" />
	</label>				
	<label>
	    Senha:
	    <input type="password" id="senha" name="senha" />
	</label>
	    <input class="submit" type="submit" value="Enviar" />
</fieldset>
   </form>

</body>
</html>

 

Espero que isso te ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala claudio, beleza?

bom eu consegui, porém fica dando o mesmo erro no header("location index.php"); dae trokei por javascript, no caso do session start tbm deu erro, eu ocultei com o @session_start();

 

No caso do meu site, eu nao vo precisar do include, pelo fato deu verificar a session['userLogado'] que todas as paginas tem os campos login e senha, dae eu ja verifico

 

Se logado aparece dados do cliente, senão aparece o form!

 

Uma dúvida que eu queria tirar é a seguinte, no checar_login está para ir para index.php correto?

Vamos dizer, caso eu esteja no carrinho de compras, se usuario nao identificado, aparece os campos de login e senha, como faço para quando digitar login e senha ele voltar para página atual, no caso, o link que eu estiver fazer o login e senha?

 

vlwww e obrigado pela paciencia!

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você não quiser que haja redirecionamento, basta colocar o form de login

em todas as páginas e logar o usuário com ajax.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.