Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Não venda e por isso não envia o email.

Olá pessoal, na hora que vou fazer a compra, coloca a data que executo a compra, esta me direcionando a home e avisando que preciso estar logado mesmo eu estando logado. Alguém com o mesmo problema ?

Vendas.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Vendas extends CI_Controller{
    public function nova(){
        $usuario = autoriza();


        $this->load->model(array("vendas_model", "produtos_model", "usuarios_model"));
        $venda = array(
            "produto_id" => $this->input->post("produto_id"),
            "comprador_id" => $usuario["id"],
            "data_de_entrega" => 
            dataPtBrParaMysql($this->input->post("data_de_entrega"))
            );
        $this->vendas_model->salva($venda);

        $this->load->library("email");
        $config["protocol"] = "smtp";
        $config["smtp_host"] = "ssl://smtp.gmail.com";
        $config["smtp_user"] = "rogeriosfa@gmail.com";
        $config["smtp_pass"] = "minhasenha";
        $config["charset"] = "utf-8";
        $config["mailtype"] = "html";
        $config["newline"] = "\r\n";
        $config["smtp_port"] = '465';
        $this->email->inicialize($config);

        $produto = $this->produtos_model->busca($venda["produto_id"]);
        $vendedor = $this->usuarios_model->busca($produto["usuario_id"]);

        $this->email->from("rogeriosfa@gmail.com", "Mercado");
        $this->email->to(array($vendedor["email"]));
        $this->email->subject("Seu produto {$produto['nome']} foi vendido");
        $this->email->message("seu produto <b>{$produto['nome']}</b> foi vendido!");
        $this->email->send();


        $this->session->set_flashdata("success", "Pedido de compra efetuado com sucesso");
        redirect("/");

    }
    public function index(){
        $usuario = autoriza();
        $this->load->model("produtos_model");
        $produtosVendidos = $this->produtos_model->buscaVendidos($usuario);
        $dados = array("produtosVendidos" => $produtosVendidos);
        $this->load->view("vendas/index", $dados);
    }
}

usuarios_model.php

<?php
class Usuarios_model extends CI_Model {
    public function salva($usuario){
        $this->db->insert("usuarios", $usuario);
    }

    public function buscaPorEmailESenha($email, $senha){
        $this->db->where("email", $email);
        $this->db->where("senha", $senha);
        $usuario = $this->db->get("usuarios")->row_array();
        return $usuario;
    }
    public function busca($id){
        $this->db->where("id", $id);
        return $this->db->get("usuarios")->row_array();
    }
}

auth_helper.php

<?php
    function autoriza(){
        $ci = get_instance();
            $usuarioLogado = $ci->session->userdata("usuario_Logado");
            if(!$usuarioLogado){
                $ci->session->set_flashdata("danger", "voce precisa estar logado");
                redirect("/");
            }
            return $usuarioLogado;
}
5 respostas

Também não deixa ir a pagina de novo produto porque diz que preciso estar logado mesmo eu estando logado!

Oi Rogério,

Tenta imprimir o conteudo da variavel usuarioLogado ao inves de redirecionar. Veja se o resultado dela aparece na saida. Assim voce consegue descobrir onde esta se perdendo a informacao de login

Abraço

Guilherme, você diz para imprimir pelo auth_helper.php ?

solução!

Encontrei o erro, eu estava armazenando a session no usuario_Logado, com L maiúsculo:

$usuarioLogado = $ci->session->userdata("usuario_Logado");

Correto:

$usuarioLogado = $ci->session->userdata("usuario_logado");

Perfeito! Use bastante a técnica de debug ou de logar a informação para verificar o que está acontecendo no meio da aplicação.

Abraço!