• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Daemonarch

problemas em passar variaveis atraves da session

12 mensagens neste tópico

Boas

sou novo no fórum e tenho aqui um pequeno GRANDE problema.

estou a implementar um sistema de envio de imagens através da web, a base do projecto é o flex

a quando do login o flex faz a chamada ao php para validar o nome e pass se aceite passa para o painel de upload que é efectuado através do php.

as pastas dos clientes é gerada assim que eles se logam, a variável da directoria criada é passada através da session para o upload.php que deposita as imagens nas pastas correspondentes, o problema é esse mesmo é que a session não é passada para o upload.php.

resultado a pasta dos clientes é criada mas sem nada lá dentro.

antes de dizerem para por o start_session() no inicio dos php, vou já adiantado serviço...eles estão lá!

se alguém teve ou tem um problema parecido avise

claro quem souber o porquê disso...também pode ajudar

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso mesmo troquei a ordem eheheh

se quiserem ver o código....é capaz de ajudar não?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, pode ajudar, mas dá alguma mensagem de erro ou assim? é colocado o cookie com a sessão?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não tem cookie, porque senão qualquer utilizador que tivesse acesso ao pc poderia entrar.

esqueci-me de mensionar que sou iniciante nisto do php, tenho aprendido com exemplos práticos e trabalhos que faço lá no trabalho.

aqui vai o código.

login.php

<?php
session_start();
//ligar á Base de dados

$con = mysql_connect("localhost","nome","passs");
//seleciona a base de dados
mysql_select_db("xxxxxxx", $con) or print(mysql_error());


//apanha a informação passada do flex para as variáveis

$usuario = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);

//Query á base de dados para verificar se combinação é válida.

$sql = "SELECT * FROM `membros` WHERE username = '$usuario' AND password = '$password'";

$result = mysql_fetch_array(mysql_query($sql))or print(mysql_error());

$verif=mysql_query("SELECT count(*) AS username FROM `membros` WHERE username='$usuario'")or die(mysql_error());
if(mysql_result($verif,0,'username')){
$_SESSION['pasta_usu']=$usuario;
$_SESSION['username'] = $usuario;
}else{
echo 'Usuário inexistente.';
unset($_SESSION['pasta_usu']);
unset($_SESSION['username']);
}
(!file_exists('users')) ? (mkdir('users',0755)) : '';
if(isset($_SESSION['pasta_usu'])){
$pasta=$_SESSION['pasta_usu'];
$dir=(!file_exists("users/$pasta/")) ? (mkdir("users/$pasta/",0755)) : '';
($dir) ? (print('Pasta com o nome'.$_SESSION['pasta_usu'].'Criada com sucesso.')) : print 'Erro ao criar a pasta.';
}else{
echo 'Não foi atribuido o nome da pasta.';
}


//começa o outputting para o  XML

$output = "<loginsuccess>";

//se a query retornar true, o output <loginsuccess>yes</loginsuccess> else output <loginsuccess>no</loginsuccess>

if(!$result)

{

$output .= "no";		

}else{

$output .= "yes";	

}

$output .= "</loginsuccess>";

//output todo o XML

print ($output);

?>

upload.php

<?php
session_start();
if(isset($_SESSION['username']) and isset($_SESSION['pasta_usu'])){
$pasta2=$_SESSION['pasta_usu'];
$upload_dir="users/$pasta2/";
$temp_name = $_FILES['Filedata']['tmp_name'];
$file_name = $_FILES['Filedata']['name'];
$file_name = str_replace("\\","",$file_name);
$file_name = str_replace("'","",$file_name);
$file_path = $upload_dir.$file_name;
$result = move_uploaded_file($temp_name, $file_path);
}else{
echo 'Sem sessões.';
}
//envio de mail caso seja feito upload
/*
if ($upload_dir) {
$to = "xxx@xxxx.com";
$subject = "Upload efectuado";
$email = "site imagem multimedia" ;
$message = "o cliente xxxx efectuou um upload" ;
$headers = "From: $email";
$sent = mail($to, $subject, $message, $headers) ;

*/
?> 

penso que os php estejam correctos, pelo menos o login está pq já fiz um pequeno html e retorna tudo bem

não dá erro nenhum.

very wierd

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se o primeiro está bem, também nao me pareceu ver qualquer erro...

O segundo, podes confirmar se o nome do campo onde é feito o upload de ficheiro, tem o nome Filedata, que é o que está no upload.php (case sensitive)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim está correcto

o Filedata é por definição o que o flex manda para fora e eu não mexi nisso.

juro não percebo pq isto está a acontecer

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por baixo de onde recebes o ficheiro (no upload.php, antes das linhas $_FILES[...]), tenta ver o conteudo dos arrays, com a instrução

print_r($_FILES);

Deve-te aparecer algumas infromações uteis, e deve aparecer os caminhos do ficheiro, temporários, etc... Caso a chave 'error' tenha algo diferente de 0, vê a página de erros de upload de ficheiros do php.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

suponho que seja isto

if(isset($_SESSION['username']) and isset($_SESSION['pasta_usu'])){

$pasta2=$_SESSION['pasta_usu'];

$upload_dir="users/$pasta2/";

print_r($_FILES);

$temp_name = $_FILES['Filedata']['tmp_name'];

$file_name = $_FILES['Filedata']['name'];

isso irá dar-me algum ficheiro no servidor ou é no flex que me irá aparecer a informação?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Array ( [Filedata] => Array ( [name] => zecarioca.jpg [type] => image/jpeg [tmp_name] => /tmp/phpaCBMF3 [error] => 0 => 8561 ) )

ok, agora é que isto ficou confuso (pelo menos para mim)

vou passar a explicar.

como o flex não retornava nada resolvi criar um pequeno html para fazer o upload.

ora como é através do flex que as pastas são criadas, fiz o login para ele criar a pasta do cliente

o qual o fez sem qualquer problema, depois disto foi fazer o upload com o html e como se pode ver pelo resultado ele fez o upload sem problemas, na pasta correcta.

Pelos vistos ele está a gravar sem problema a session, pelo que entendi.

quando apago a pasta do cliente e mando  fazer o upload dá isto

Array ( [Filedata] => Array ( [name] => zecarioca.jpg [type] => image/jpeg [tmp_name] => /tmp/phpMIEIi0 [error] => 0 => 8561 ) )

Warning: move_uploaded_file(users/joao/zecarioca.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/imagemm/public_html/php/upload2.php on line 14

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpMIEIi0' to 'users/joao/zecarioca.jpg' in /home/imagemm/public_html/php/upload2.php on line 14

o que tb me parece correcto pq a pasta não existe.

o que dizes disto?

desde já Obrigado pela paciencia

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenta por o caminho absoluto para o directorio de destino, ou seja

$upload_dir="/home/imagemm/public_html/users/$pasta2/";

Acerta o caminho conforme no teu servidor, pressupus que fosse esse :D e se necessário, dá as respectivas permissões

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas

depois de um fim de semana fora cá voltei  :wallbash:

Nada feito continua com o mesmo problema.

depois de passar a manhã a investigar acho que o problema está no flex...em como passar a variavel nome de um componente para outro componente.

penso que seja isso.

Já agora alguem sabe alguma coisa sobre isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora