Ir para conteúdo

Arquivado

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

tupinikin

Sessão + OOP

Recommended Posts

boa tarde senhores

Estou com um problema, tenho o seguinte código do carrinho

<?php  session_start();
 
 
class Carrinho{
 
	public function Carrinho(){

	}

	public static function incluiProduto($cod, $valor, $qtd, $peso, $nome, $cor, $tamanho, $id_tamanho, $acabamento, $marca, $qtd_total, $lista, $id_lista,$nome_balada,$rg_balada,$telefone){

		if(isset($_SESSION['Carrinho']['Produto'][$cod])){
		} else {
			$_SESSION['Carrinho']['Produto'][$cod]['qtd'] = 1;
			$_SESSION['Carrinho']['Produto'][$cod]['qtd_total'] = $qtd_total;
			$_SESSION['Carrinho']['Produto'][$cod]['cor'] = $cor;
			$_SESSION['Carrinho']['Produto'][$cod]['tamanho'] = $tamanho;
			$_SESSION['Carrinho']['Produto'][$cod]['id_tamanho'] = $id_tamanho;
			$_SESSION['Carrinho']['Produto'][$cod]['acabamento'] = $acabamento;
			$_SESSION['Carrinho']['Produto'][$cod]['marca'] = $marca;			
			$_SESSION['Carrinho']['Produto'][$cod]['nome'] = $nome;
			$_SESSION['Carrinho']['Produto'][$cod]['valor'] = $valor;
			$_SESSION['Carrinho']['Produto'][$cod]['valor_total'] = bcmul($valor,$qtd,2);
			$_SESSION['Carrinho']['Produto'][$cod]['peso'] = $peso;
			$_SESSION['Carrinho']['Produto'][$cod]['peso_total'] = bcmul($peso,$qtd,3);
			$_SESSION['Carrinho']['Produto'][$cod]['lista'] = $lista;
			$_SESSION['Carrinho']['Produto'][$cod]['id_lista'] = $id_lista;
			$_SESSION['Carrinho']['Produto'][$cod]['Nomealada'] = $nome_balada;
			$_SESSION['Carrinho']['Produto'][$cod]['RGBalada'] = $rg_balada;
			$_SESSION['Carrinho']['Produto'][$cod]['telefone'] = $telefone;
		}
		
		return $_SESSION['Carrinho']['Produto'][$cod]['valor_total'];
	}

	public function getTotalQtd(){

		if(isset($_SESSION['Carrinho']['Produto'])){

			foreach($_SESSION['Carrinho']['Produto'] as $key => $value){
				$total = bcadd($total, $_SESSION['Carrinho']['Produto'][$key]['qtd'], 0);
			}

		return ceil($total);

		} else { 
			return $a = "0"; 
		}
	}


	public function listaProduto($Cartao){

		if(isset($Cartao)){
			foreach($Cartao as $key => $valor){

				$valor['codigo'] = $key;
				$lstCartao[] = $valor;
			}
		return $lstCartao;
		} else {
			return $a = 0;
		}
	}

	public function getTotalProduto($carrinho){

		if(isset($_SESSION['Carrinho']['Produto'])){

			foreach($_SESSION['Carrinho']['Produto'] as $key => $value){
				$total = bcadd($total, $_SESSION['Carrinho']['Produto'][$key]['valor_total'], 2);
			}

			if(!isset($_SESSION['Frete'])) return number_format($total, 2, ',', '.');
				else {
					$total = bcadd($total, $_SESSION['Frete'], 2);
					return number_format($total, 2, ',', '.');
				}

		} else { return $a = "0.00"; }
	}

	public function getTotalApenasProduto(){

		if(isset($_SESSION['Carrinho']['Produto'])){

			foreach($_SESSION['Carrinho']['Produto'] as $key => $value){
				$total = bcadd($total, $_SESSION['Carrinho']['Produto'][$key]['valor_total'], 2);
			}
		return $total;
		} else { return $a = "0.00"; }
	}

	public function getTotalPeso(){

		if(isset($_SESSION['Carrinho']['Produto'])){

			foreach($_SESSION['Carrinho']['Produto'] as $key => $value){
				$total = bcadd($total, $_SESSION['Carrinho']['Produto'][$key]['peso_total'], 3);
			}

		return ceil($total);

		} else { return $a = "0.000"; }
	}

	public function alteraProduto($cod, $qtd){

		if($qtd != 0){
			if( array_key_exists($cod, $_SESSION['Carrinho']['Produto']) ){

				$_SESSION['Carrinho']['Produto'][$cod]['qtd'] = $qtd;

				$_SESSION['Carrinho']['Produto'][$cod]['valor_total'] = bcmul($_SESSION['Carrinho']['Produto'][$cod]['valor'], $_SESSION['Carrinho']['Produto'][$cod]['qtd'], 2);

				$_SESSION['Carrinho']['Produto'][$cod]['peso_total'] = bcmul($_SESSION['Carrinho']['Produto'][$cod]['peso'], $_SESSION['Carrinho']['Produto'][$cod]['qtd'], 3);

				$total = $this->getTotalProduto($_SESSION['Carrinho']['Produto']);

			$totais = number_format($_SESSION['Carrinho']['Produto'][$cod]['valor_total'], 2, ',', '.')."/".number_format($total, 2, ',', '.');

			return $totais;

			} else { echo 1; }
		} else { echo $_SESSION['Carrinho']['Produto'][$cod]['valor_total']; }
	}

	public function excluiProduto($cod){

		if( array_key_exists($cod, $_SESSION['Carrinho']['Produto']) ){

			unset($_SESSION['Carrinho']['Produto'][$cod]);

				if( count($_SESSION['Carrinho']['Produto']) == 0 ){
					unset($_SESSION['Carrinho']['Produto']);
				}

		return $total = $this->getTotalProduto($_SESSION['Carrinho']['Produto']);
		} else { echo 1; }
	}
}

 
?>

E funcionava tudo certo até ter que mudar de hospedagem.

Quando chamo assim

 

$carrinho = new Carrinho();

e depois

$carrinho->getTotalQtd();

 

e trava a aplicação.

Se dou um var_dump em $_SESSION['Carrinho']['Produto'] ele retorna o conteúdo das sessões;

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por CharlieAldrin
      Estou tentando fazer o seguinte codigo, onde ele pega alguns dados e salva eles em uma tabela, porém o INSERT não está salvando os dados, tem algo errado? 
       
      <?php
      session_start();
      include('config.php');
      //  id1
      // recebe pela url
      $id_busca_ajuda = $_GET['id']; 
      // id2
      // recebe pela url
      $nick_busca_ajuda = $_GET['nick']; 
      $id_ajudante = $_SESSION['usuario'];
      // nick 2
      $database = new Database();
      $db = $database->getConnection();
      $query = $db->prepare("SELECT nick_ajudante FROM sala_ajudante WHERE id_usuario_ajudante=".$_SESSION['usuario']);
      $runAjudante = $query->execute();
      $linha = $query->fetch(PDO::FETCH_ASSOC); 
      $nick_ajudante = $linha['nick_ajudante']; 
      // linha que não estpa funcionando
       $query =  $db->prepare("INSERT INTO conversa ('nick1', 'nick2', 'id1', 'id2', 'online') VALUES ('".$nick_busca_ajuda."' , '".$nick_ajudante."' , '".$id_busca_ajuda."' , '".$id_ajudante."' , '1');"); 
      $runConv = $query->execute();

      ?>
    • Por fael97
      Olá a todos bom dia, tarde ,noite...
      bem estou com um problema meio chato, sempre que relogo a página no meu site a sessão que estava salva some.. eu preciso muito dela pois ela quem me mantem logado e navegando pelo site..
      a estrutura do meu site é assim. É uma rede social: www.onfamily.com.br.
      tenho a pagina de login que me leva para index, paginas de navegação que leva para pagina de cadastro de família caso não houver a sessão família. e caso não houver login nem senha  me leva pra pagina de login novamente.
      o problema é que quando eu logo, após ir para página de navegação mostra a sessão família la emcima, mas quando eu relogo a página a sessão some, e me leva para página de cadastro de família, sendo que a família ja foi cadastrada e validade na página de login do qual está na sessão. alguem poderia me ajudar com este bug? pra não precisar ficar fazendo várias consultas sempre quando relogo a página?
       
      meu codigo é assim:
       
      Página processa_login: 
       
      <?php 
          if((isset($_POST['email'])) and (isset($_POST['senha']))){
              //inclui arquivos de classes
              include('classes/classes.inc.php');
              //inclui arquivo de funcoes
              require_once('funcoes/conexao.func.php');
              $conn = Conn();
              if(!isset($_SESSION)) session_start();
              //recupera dados do form
              $email = $_POST['email'];
              $senha = utf8_encode($_POST['senha']);
              //instãncia novo objeto login da classe login
              $login = NEW Login("","","");
                          
              $retorno_log =  $login->autenticaUsuario("$email","$senha");                        
              if($retorno_log == 1){
                  //atribui os valores a sessão
                  $_SESSION['email'] = $email;
                  $_SESSION['senha'] = $senha;
                  $selecionar = $conn->prepare("
                      SELECT informacoes_usuario.familia FROM informacoes_usuario 
                      JOIN usuarios ON informacoes_usuario.usuario = usuarios.idusuario 
                      WHERE email = ?
                  ");
                  $selecionar->execute(array($email));
                  $registro = $selecionar->fetchAll(PDO::FETCH_ASSOC);
                  if($registro[0]['familia'] != null){
                      $_SESSION['familia'] = $registro[0]['familia'];
                      if(isset($_SESSION['url'])){
                          echo "<script>window.location.assign('$url');</script>";
                      }else{
                          echo "<script>window.location.assign('nav/index.php');</script>";
                      }                            
                  }else{
                      echo "<script>window.location.assign('cadastro/criar_familia.php');</script>";
                  }
              }else{
                  echo "usuário ou senha incorretos";
              }            
          }else{
              echo "Houve um erro interno. <a href=\"javascript:history.back()\">Voltar</a>";
          }
      ?>                
       
      trecho da página index: 
          //se não existe sessão, então inicia
          if(!isset($_SESSION)) session_start();
          
          //$_SESSION['url'] = $_SERVER['REQUEST_URI'];    
          //aqui imprime da primeira vez que faço o login, mas quando relogo a página a sessão some!, obs: a sessão email e senha continuam la
          echo $_SESSION['familia'];
          echo $_SESSION['email'];
          echo $_SESSION['senha'];
          if((!isset($_SESSION['email'])) and (!isset($_SESSION['senha'])) and (!isset($_SESSION['familia']))){
              header('location: ../index.php');
          }elseif((isset($_SESSION['email'])) and (isset($_SESSION['senha'])) and (!isset($_SESSION['familia']))){
              header('location: ../cadastro/criar_familia.php');
          }
       
      alguem da um help por favor, porque a sessão família está aparecendo somente uma vez e sumindo, e a sessão email e senha não está? 
      obs: no servidor local funciona perfeitamente, e antes estava funcionando normalmente após alterar alguns trechos que nem lembro mais oque é.
    • Por MachineMan
      com os dados já inseridos. Por favor. é só para um site de um trabalho da escola, então não precisa de MySqL, encontrei alguns, mas não funcionam, não sei o motivo.
    • Por pwdheliosander
      como faço para aparecer uma mensagem de "usuário deslogado, faça novamente o login", após um periodo de 10 minutos sem acesso na área administrativa?
    • Por Diego Sanches
      Olá, estou fazendo o prototipo de dashboard para uma plataforma que estou criando, e estou com um ploblema para iniciar a sessão no login em ajax, com o CodeIgniter.
      já tentei fazer de várias maneiras e todas não funcionam, e quando funcionam perde a persistência ao trocar de página, sem criterio....
       
      Nessa ultima tentativa, eu crio um token e faço um redirect para um controller onde recupero esse token e inicio a sessão para o usuario, porém o codeigniter sempre cria um novo registro de sessão, em vez de manter na mesma e só incluir adcionar o data na sessão já iniciada...
       
      Nesse print em anexo, tem um exemplo... o primeiro registro é de quando eu acesso a página de login... o segundo registro é a sessão que é criada na requião ajax... e o terceiro é o registro de quando eu recupero o token e inicio a sessão do usuário...
       
      Na requisão Ajax até entendo o pq ele cria um novo registro... por isso fiz o token  temporário para fazer a autenticação, mas mesmo assim na troca páginas ele sempre gera uma nova... ainda não consgui entender porque não está mantendo na mesa sessão..
       
      alguém já teve algo parecido com o CI??
       
      Agradeço e até mais!!!

×

Informação importante

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