Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá colegas!
Bem estou com um problema com sessão... Tenho um script onde o usuário entra em um determinado imóvel e lá ele tem um botão para colocar esse imóvel em seus favoritos.
Bem na página favoritos o script que eu estou usando é o seguinte:
<?
if($_POST["acao"] == "favoritos") {
require_once("config/database.php");
$id_imovel = $_POST["id_imovel"];
@session_cache_expire(60*24);
@session_start("favoritos");
if($_SESSION['nome_sessao'] == '') {
//criando a sessão
$nome_sessao = time().rand(111111, 999999);
$nome_sessao = md5($nome_sessao);
$_SESSION['nome_sessao'] = $nome_sessao;
mysql_query("insert into favoritos (id,session_id,imovei_id,created) VALUES ('','$nome_sessao','$id_imovel',NOW())");
} else {
$nome_sessao = $_SESSION['nome_sessao'];
mysql_query("insert into favoritos (id,session_id,imovei_id,created) VALUES ('','$nome_sessao','$id_imovel',NOW())");
}
}
?>Só que não está acontecendo isso... Eu adiciono um imóvel ele cadastra com um nome de sessão, se eu vou e adiciono outro imóvel, ele gera um novo nome, e não era para fazer isso, era para pegar o nome dessa sessão já criada.
Vlw... Halan!
Opa
rapah, primeiramente primeiro antes de tudo, procure não usar short tags <? ?> é melhor usar <?php ?> e
eu também não estou vendo o session_start() na primeira linha do seu codigo. Sem
isso na primeira linha seu codigo talvez não funcione corretamente.
Corrija os itens acima e avise se continua a dar erro.
abraçU
Bem eu já tinha testado usando isset, mas usar o isset ou ver se ele está vazio da no mesmo.
E o session start está no comeco do código, você pode escolher em setar primeiro o tempo que ele expira e depois dar start nele.
Mas testei invertendo a posição e continua com o mesmo problema.
Olhe:
<?
if($_POST["acao"] == "favoritos") {
require_once("config/database.php");
$id_imovel = $_POST["id_imovel"];
@session_cache_expire(60*24);
@session_start("favoritos");
if($_SESSION['nome_sessao'] == '') {
//criando a sessão
$nome_sessao = time().rand(111111, 999999);
$nome_sessao = md5($nome_sessao);
$_SESSION['nome_sessao'] = $nome_sessao;
mysql_query("insert into favoritos (id,session_id,imovei_id,created) VALUES ('','$nome_sessao','$id_imovel',NOW())");
} else {
$nome_sessao = $_SESSION['nome_sessao'];
mysql_query("insert into favoritos (id,session_id,imovei_id,created) VALUES ('','$nome_sessao','$id_imovel',NOW())");
}
}
?>
Não seria algo do tipo:
session_start();
session_name("favoritos");
echo 'A sessão atual chama-se ' , $sessao_atual = session_name();
if($sessao_atual != 'favoritos') {
Isto, não ira ter efeito algum no nome da sessão:
@session_start("favoritos");
Antes de setar um valor aleatório para o cookie, você deve verificar se ele existe, não verificar se ele está vazio. Se não me engano, se usa o isset pra isso.
<?php
//acho que é assim
if (isset($_SESSION['nome_sessao'])){
//caso exista
}else{
//caso não exista
}
?>