Ir para conteúdo

POWERED BY:

Arquivado

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

allex_carvalho

[Resolvido] Sessão é criada mais não fica gravada

Recommended Posts

Boa tarde pessoal.

 

Crio uma sessão com o último id gravado no banco só que ela não fica gravada. Sei que ela é criada porque o id é gravado no banco certinho. Só que quando redireciono a página a sessão não existe mais.

 

Vejam:

 

   session_start();
   $data = date('Y-m-d');
   $inserir = "INSERT INTO galeria VALUES (NULL, NULL, NULL, '$data', NULL)";
   mysql_query($inserir);
   $id = mysql_insert_id();
   mkdir("../../uploads/" . $id, 0777);
   $atualizarOrdem = "UPDATE galeria SET ordemGaleria='$id', pastaGaleria='$id' WHERE idGaleria=" . $id;
   mysql_query($atualizarOrdem);
   $_SESSION['galeriaId'] = $id;

// E aqui recebo a sessão e gravo em outra tabela o resultado

$idG = $_SESSION['galeriaId'];
$inserirImagem = "INSERT INTO galeria_img VALUES (NULL, '$idG', 'thumb_" . $imagem . "', '$imagem', NULL)";

 

Até ai está ok. Só que quando vou para a outra página e dou um var_dump para ver todas sessões aberta só está a do login. A recem criada não se encontra.

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o codigo da outra pagina, verifique se tem o include da sessão tbm.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

 

Quanto ao session_start se eu inserir ele no topo do arquivo me dá essa mensagem:

 

Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\painel\seguranca.php on line 34

 

O arquivo seguranca.php está incluso no arquivo cabecalho.php

 

Segue o codigo da outra pagina. O var_dump me dá todas informações das sessões do login.

 

<?php

session_start();
var_dump($_SESSION);
require_once 'cabecalho.php';
require_once 'lateralEsquerda.php';
require_once 'topo.php';
if(isset($_GET['id'])){
   $id = base64_decode($_GET['id']);
} else {
   $id = $_SESSION['galeriaId'];
}

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim você esta criando uma nova sessão. no lugar de

session_star() coloque include 'arquivo_anterior.php';

<?php

include 'arquivo_anterior.php';

var_dump($_SESSION);
require_once 'cabecalho.php';
require_once 'lateralEsquerda.php';
require_once 'topo.php';
if(isset($_GET['id'])){
   $id = base64_decode($_GET['id']);
} else {
   $id = $_SESSION['galeriaId'];
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa shini, sobre a sessão deu certo. Só que olha só o tanto de erro que deu:

 

 

Warning: mkdir() [function.mkdir]: No such file or directory in C:\xampp\htdocs\painel\php\upload-file.php on line 13

 

Notice: Undefined index: uploadfile in C:\xampp\htdocs\painel\php\upload-file.php on line 26

 

Notice: Undefined index: uploadfile in C:\xampp\htdocs\painel\php\upload-file.php on line 27

 

Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in C:\xampp\htdocs\painel\php\class.imghandler.php on line 117

 

Warning: copy() expects at least 2 parameters, 1 given in C:\xampp\htdocs\painel\php\class.imghandler.php on line 127

 

Warning: getimagesize(../../uploads/2/) [function.getimagesize]: failed to open stream: No such file or directory in C:\xampp\htdocs\painel\php\class.imghandler.php on line 185

 

Warning: getimagesize(../../uploads/2/) [function.getimagesize]: failed to open stream: No such file or directory in C:\xampp\htdocs\painel\php\class.imghandler.php on line 397

 

Warning: call_user_func() expects parameter 1 to be a valid callback, function 'imagecreatefrom' not found or invalid function name in C:\xampp\htdocs\painel\php\class.imghandler.php on line 200

 

Warning: imagecopyresampled() expects parameter 2 to be resource, null given in C:\xampp\htdocs\painel\php\class.imghandler.php on line 204

 

Warning: call_user_func() expects parameter 1 to be a valid callback, function 'image' not found or invalid function name in C:\xampp\htdocs\painel\php\class.imghandler.php on line 216

 

Warning: imagedestroy() expects parameter 1 to be resource, null given in C:\xampp\htdocs\painel\php\class.imghandler.php on line 219

 

Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\painel\seguranca.php on line 34

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho q o arquivo não foi transferido, por isso td esses erros, e essa chava index não existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem permissão de escrita nessa pasta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta passar o caminho completo aqui

mkdir("../../uploads/" . $id, 0777);

 

posta o resto do codigo tbm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava pensando aqui. Se o usuário abrir 2 abas para fazer o upload ao mesmo tempo meu sistema já não funcionará mais.

Eu teria que passar o id por get mesmo, para ser mais seguro. Só que não faço a minima idéia de como montar o sistema. Se alguém puder me colocar no caminho.

 

Codigo que chama o arquivo do upload:

       var cont = 0;
       var totalImagens = 0;
       $(function(){
           $('#swfupload-control').swfupload({
               upload_url: "php/upload-file.php",
               file_post_name: 'uploadfile',
               file_size_limit : "3072",
               file_types : "*.jpg;*.png;*.gif",
               file_types_description : "Arquivos de imagem",
               file_upload_limit : 50,
               flash_url : "swfupload/swfupload.swf",
               button_image_url : 'img/wdp_buttons_upload_114x29.png',
               button_width : 114,
               button_height : 29,
               button_placeholder : $('#button')[0],
               debug: false
           })
           .bind('fileQueued', function(event, file){
               var listitem='<li id="'+file.id+'" >'+
               'Arquivo: <em>'+file.name+'</em> ('+Math.round(file.size/1024)+' KB) <span class="progressvalue" ></span>'+
               '<div class="progressbar" ><div class="progress" ></div></div>'+
               '<p class="status" >Pendente</p>'+
               '<span class="cancel" > </span>'+
               '</li>';
               $('#log').append(listitem);
               $('li#'+file.id+' .cancel').bind('click', function(){
                   var swfu = $.swfupload.getInstance('#swfupload-control');
                   swfu.cancelUpload(file.id);
                   $('li#'+file.id).slideUp('fast');
               });
               // start the upload since it's queued
               $(this).swfupload('startUpload');
           })
           .bind('fileQueueError', function(event, file, errorCode, message){
               alert('O tamanho do arquivo '+file.name+' é maior do que o limite');
           })
           .bind('fileDialogComplete', function(event, numFilesSelected, numFilesQueued){
               $('#queuestatus').text('Arquivos selecionados: '+numFilesSelected+' / Arquivos na fila: '+numFilesQueued);
               totalImagens = numFilesSelected;
           })
           .bind('uploadStart', function(event, file){
               $('#log li#'+file.id).find('p.status').text('Enviando...');
               $('#log li#'+file.id).find('span.progressvalue').text('0%');
               $('#log li#'+file.id).find('span.cancel').hide();
           })
           .bind('uploadProgress', function(event, file, bytesLoaded){
               //Show Progress
               var percentage=Math.round((bytesLoaded/file.size)*100);
               $('#log li#'+file.id).find('div.progress').css('width', percentage+'%');
               $('#log li#'+file.id).find('span.progressvalue').text(percentage+'%');
           })
           .bind('uploadSuccess', function(event, file, serverData){
               var item=$('#log li#'+file.id);
               item.find('div.progress').css('width', '100%');
               item.find('span.progressvalue').text('100%');
               item.addClass('success').find('p.status').html('Pronto!!!');
           })
           .bind('uploadComplete', function(event, file){
               // upload has completed, try the next one in the queue
               $(this).swfupload('startUpload');
               cont = cont + 1;
               if(cont == totalImagens){
                   location.replace("galeria_editar_miniaturas.php"); // Inserir o id que foi gerado aqui para redirecionar a pagina
               }
           })
       });

 

upload-file.php

<?php

session_start();

// Conexão com banco
require_once 'mysql_connect.php';

if (!isset($_SESSION['galeria'])) {
   $data = date('Y-m-d');
   $inserir = "INSERT INTO galeria VALUES (NULL, NULL, NULL, '$data', NULL)";
   mysql_query($inserir);
   $id = mysql_insert_id();
   mkdir("../../uploads/" . $id, 0777);
   $atualizarOrdem = "UPDATE galeria SET ordemGaleria='$id', pastaGaleria='$id' WHERE idGaleria=" . $id;
   mysql_query($atualizarOrdem);
   $_SESSION["galeria"] = "galeria";
   $_SESSION['galeriaId'] = $id;  // Não gravar sessão, e sim mandar o id para o arquivo js.
}

// Funções
require_once 'class.imghandler.php';

// Recebe ID e pasta
$idG = $_SESSION['galeriaId'];

$recebeImagem = $_FILES['uploadfile'];
$size = $_FILES['uploadfile']['size'];
if ($size > 3145728) {
   echo "Arquivo maior que 3 MB";
   unlink($_FILES['uploadfile']['tmp_name']);
   exit;
}
$diretorio = "../../uploads/".$idG."/";
$img = $recebeImagem['tmp_name'];
$ImgHandler = new ImgHandler();
$ImgHandler->setPath($diretorio);
$foto = $ImgHandler->saveImg($img);
$ImgHandler->createThumb($foto);
$imagem = basename($foto);
$inserirImagem = "INSERT INTO galeria_img VALUES (NULL, '$idG', 'thumb_" . $imagem . "', '$imagem', NULL)";
if (mysql_query($inserirImagem)) {
   $idImgGaleria = mysql_insert_id();
   $inserirCapa = "INSERT INTO galeria_capa VALUES (NULL, '$idG', '$idImgGaleria', '0')";
   mysql_query($inserirCapa);

} else {
   echo "error " . $_FILES['uploadfile']['error'] . " --- " . $_FILES['uploadfile']['tmp_name'] . " %%% " . $file . "($size)";
}
?>

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Henrique...

 

Muito bom, não tenho experiência com session, valeu pelo material :)

 

Mais é como eu disse. As vezes alguém pode inventar de abrir duas abas para fazer o upload, sendo assim, não poderia dar problema em ver qual é qual e gravar as imagens em uma pasta e salvar no banco em outra referencia?

 

Se sim... Como corrigir isso?

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde pessoal...

 

Estou aqui na tentativa de melhorar o código, retirar as sessões para usar a url. Fiz uma contagem, quando enviar o primeiro arquivo vou chamar um arquivo php por .get e gravar no banco a tabela. Está funcionando normal. Agora preciso retornar o id gravado para o js.

 

Vejam o código para verem se pode me ajudar:

 

JS:

 

                       var cont = 0;
                       var totalImagens = 0;
                       <?php $id = isset($id)? $id : "" ?>
                       var id = <?php echo $id; ?>;
                       $(function(){
                           $('#swfupload-control').swfupload({
                               upload_url: "php/upload-file.php?id=" + id,
                           })

                       .bind('uploadComplete', function(event, file){
                               $(this).swfupload('startUpload');
                               cont = cont + 1;
                               if(cont == '1'){
                                   $get("php/galeria_cadastrar.php");
                               }
                               if(cont == totalImagens){
                                   location.replace("galeria_editar_miniaturas.php");
                               }
                           })

 

galeria_cadastrar.php

<?php

// Conexão com banco
   require_once 'mysql_connect.php';

   $data = date('Y-m-d');
   $inserir = "INSERT INTO galeria VALUES (NULL, NULL, NULL, '$data', NULL)";
   mysql_query($inserir);
   $id = mysql_insert_id();
   mkdir("../../uploads/" . $id, 0777);
   $atualizarOrdem = "UPDATE galeria SET ordemGaleria='$id', pastaGaleria='$id' WHERE idGaleria=" . $id;
   mysql_query($atualizarOrdem);

?>

 

É isso ai pessoal, espero que alguém possa me ajudar.

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido.

 

Estou criando a galeria ao acessar a primeira página (que seleciona as fotos), assim, tenho o id para mandar para todas as outras páginas sem problema algum.

 

Obrigado pela atenção.

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.