Jump to content

problemas em passar variaveis atraves da session


Daemonarch
 Share

Recommended Posts

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

Link to comment
Share on other 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

Link to comment
Share on other 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)

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other 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.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other 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?

Link to comment
Share on other 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

Link to comment
Share on other 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 😄 e se necessário, dá as respectivas permissões

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.