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

Problemas com sessão


D31v1d1

Pergunta

Bom dia, estou com o seguinte problema, tenho uma galeria de imagens, e estou utilizando o plugin jquery uploadfy para fazer as adições de multiplas imagens.

Tenho uma página lista.php onde tenho este código

$idsession = $_GET['id'];
session_start();
unset($_SESSION['id_album']);
$_SESSION['id_album'] = $idsession;
Que apaga a sessão id_album e ronava ela com o id do album atual onde serão adicionadas as fotos e tenho um botão que chama uma popup fotos.php onde estou utilizando o uploadfy, até ai tudo beleza. Fotos.php
<?php
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Adicionar Fotos <?php echo $_SESSION["id_album"];?></title>
<link href="/example/css/default.css" rel="stylesheet" type="text/css" />
<link href="/example/css/uploadify.css" rel="stylesheet" type="text/css" />
&lt;script type="text/javascript" src="/example/scripts/jquery-1.3.2.min.js"></script>
&lt;script type="text/javascript" src="/example/scripts/swfobject.js"></script>
&lt;script type="text/javascript" src="/example/scripts/jquery.uploadify.v2.1.0.min.js"></script>
&lt;script type="text/javascript">
$(document).ready(function() {
    $("#uploadify").uploadify({
        'uploader'       : 'scripts/uploadify.swf',
        'script'         : 'scripts/uploadify.php',
        'cancelImg'      : 'cancel.png',
        'folder'         : 'uploads',
        'queueID'        : 'fileQueue',
        'auto'           : true,
        'multi'          : true
    });
});
</script>
&lt;script language="Javascript" type="text/Javascript">
<!--
function close_window() {
    window.close();
}
//-->
</script>
<style>
/* LINKS */
a:link{color:#21282b; text-decoration:none; font: bold 10px Tahoma, Verdana, Arial, Helvetica, sans-serif;}
a:visited{color:#21282b; text-decoration:none; font: bold 10px Tahoma, Verdana, Arial, Helvetica, sans-serif;}
a:hover{color:#21282b; text-decoration:underline; font: bold 10px Tahoma, Verdana, Arial, Helvetica, sans-serif;}
</style>
</head>

<body onUnload="window.opener.location.reload()">
<div id="fileQueue"></div>
<input type="file" name="uploadify" id="uploadify" />
<p><a href="java script:jQuery('#uploadify').uploadifyClearQueue()">Cancelar Todas</a> | <a href="java script:;" onClick="close_window()">Fechar Janela
</p>
</body>
</html>
Testei a sessão nesta página e está apresentando corretamente. Mas na página uploadfy.php que é responsável em gravar no banco a sessão não funciona Segue código dela abaixo
<?php

session_start();

$conexao = mysql_connect("localhost", "root", "");
mysql_select_db("meu_banco",$conexao);

/*
Uploadify v2.1.0
Release Date: August 24, 2009

Copyright (c) 2009 Ronnie Garcia, Travis Nickels

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
    $Nome = $_FILES['Filedata']['name'];

        $consulta = "SELECT * FROM album WHERE id='".$_SESSION['id_album']."'";
        $sql = mysql_query($consulta,$conexao) or die( mysql_error());
            
        while($linha = mysql_fetch_array($sql)) {
            $idfoto = $linha[3];
        }
        
        $Destino = '../img/album/'.$idfoto.'/';
        
        if(!file_exists($Destino)){
        mkdir($Destino);
        }

        preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $Nome, $ext);
        
        $Caminho = $Destino.md5(uniqid(time())).".".$ext[1];

        move_uploaded_file($tempFile,$Caminho);
        
        $img = substr("$Caminho", 3, 512);

        $insereprodutos = "INSERT INTO fotos_a (id_a, img) VALUES ('".$_SESSION['id_album']."', '$img')";
        mysql_query($insereprodutos,$conexao);
        echo "1";
    // } else {
    //     echo 'Invalid file type.';
    // }
}
?>

Está página não é carregada através de um action, acredito que seja por isso, mas não sei o que posso fazer para que funcione.

O resultado é o seguinte, veja como está gravando no banco de dados id 1 | id_a 0 | img img/album//03deacbf0dc18ab886c583b2a44be5e5.jpg o id do album está gravando 0 e o id das fotos que é a pasta com as imagens onde deveria ser criada não está conseguindo pegar com causa desta sessão que não funciona

A idéia que estou utilizando para o código é a seguinte.

Tenho uma lista de albuns de fotos lista.php

Quando clico no album desejado eu insiro o id do album em uma sessão, e quando for adicionar as fotos eu adiciono elas com o id do album que registrei na sessão.

Algo bem simples mas não está funcionando corretamente.

alguém pode me ajudar?

Editado por D31v1d1
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Na página fotos.php ela está sendo apresentada corretamente, mas quando chamo a sessão ná página uploadfy.php que é a página responsável por mover o arquivo para a pasta correta e pela gravação no banco de dados a sessão não é apresentado nada eles está gravando o id do album como 0 e o idfoto fica vazio.

Fiz um teste, setei ao invez de $_SESSION['id_album'] coloquei o valor do id do album por exemplo 5 e funcionou mas quando tento inserir pela sessão não funciona

O id está sendo gravado 0 pois deixei como integer no banco de dados.

Link para o comentário
Compartilhar em outros sites

  • 0

Na página fotos.php está aparecendo normalmente mas na uploadfy.php não aparece nada e é exatamente nesta que preciso fazer com que apareça o id do album clicado

pelo que estou entendendo não está aparecendo porque a página não é carregada e sim chamada vi js na página fotos.php

<script type="text/javascript">
$(document).ready(function() {
    $("#uploadify").uploadify({
        'uploader'       : 'scripts/uploadify.swf',
        'script'         : 'scripts/uploadify.php',
        'cancelImg'      : 'cancel.png',
        'folder'         : 'uploads',
        'queueID'        : 'fileQueue',
        'auto'           : true,
        'multi'          : true
    });
});
</script>
se a página estivesse conseguindo achar a sessão que estou chamando resolveria meu problema pois como pode ver estou consultando o banco de dados albun pelo id do album que deveria ser pego pela sessão $_SESSION['id_album'] como mostra o código abaixo
$consulta = "SELECT * FROM album WHERE id='".$_SESSION['id_album']."'";
e teria o id das fotos
$consulta = "SELECT * FROM album WHERE id='".$_SESSION['id_album']."'";
        $sql = mysql_query($consulta,$conexao) or die( mysql_error());
            
        while($linha = mysql_fetch_array($sql)) {
            $idfoto = $linha[3];
        }
e consequentemente criaria a pasta e gravaria correto no banco
$Destino = '../img/album/'.$idfoto.'/';
        
        if(!file_exists($Destino)){
        mkdir($Destino);
        }
$insereprodutos = "INSERT INTO fotos_a (id_a, img) VALUES ('".$_SESSION['id_album']."', '$img')";
        mysql_query($insereprodutos,$conexao);

Editado por D31v1d1
Link para o comentário
Compartilhar em outros sites

  • 0

Certo, mas as vezes em uma query a session não é reconhecida, já vi isso acontecer algumas vezes, por isso falei para printar a session, para ver se realmente não está trazendo nada ou o problema está na query.

Em todo caso faça o seguinte, em vez de usar a sessão na consulta, salve a mesma em uma variavel, e use essa variavel para ver se retorna alguma coisa, só a nivel de teste mesmo, pois temos que ir afunilando o problema.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, eu até conheço esse script que você ta usando, já usei ele para uploads multiplos em um sistema de galeria de fotos que tenho, porém não encontrei erro algum.

Será que o problema não está no servidor?

Faz alguns testes, mude o nome da sessão para ver se o nome dela não esta conflitando, limpe o cache da maquina, teste em outros navegadores.

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei acessar diretamente pela página não pelo site o resultado foi o seguinte

Acessando diretamente com print_r

print_r $_SESSION['id_album'];
Apresenta: erro Parse error: parse error in C:\wamp\www\site\pg\fotos\scripts\uploadify.php on line 8 Acessando diretamente com echo
echo $_SESSION['id_album'];

Apresenta: 11

Link para o comentário
Compartilhar em outros sites

  • 0

RESOLVIDO!

Depois de muita dor de cabeça descobri o problema, como a página uploadfy.php não é acessada diretamente apenas é chamada para auxiliar a fotos.php nesta linha

'script'         : 'scripts/uploadify.php',
Joguei o id do album para ser enviado via get nesta mesma linha e ficou assim
'script'         : 'scripts/uploadify.php?id=<?php echo $idp; ?>',

Algo bem simples, mas funcionou ^_^

Obrigado a quem me ajudou

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...