Problema con $_SESSION

paolofru

Utente Attivo
28 Ott 2009
37
0
0
Salve Ragazzi, ho un problema noioso con $_SESSION....

In sostanza ho creato una applicazione in flash/php per fare l'upload di dati verso un ftp.
Nella prima pagina lo script si occupa di creare una cartella sul server il cui nome viene inserito nella variabile $cartella, quindi nella pagina "makedir.php" ho inserito:
PHP:
session_start();
//prendo il nome della cartella da creare
$nome_cartella=$HTTP_POST_VARS['azienda'];
$cartella=$nome_cartella;
$login=xyz;
$password=xyz;
$conn = ftp_connect("xx.xx.xx.xx") or die("Could not connect");
@ftp_login($conn,$login,$password);
//creo la cartella sull'ftp
$cartella = str_replace(" ", "_", $cartella);
@ftp_mkdir($conn,$cartella);
//mi sposto nella posizione creata
//@ftp_chmod ($conn, 0777, $cartella);
@ftp_chdir($conn,$cartella);
$_SESSION['cartella'] = $cartella;

Quindi in teoria mi sono immagazzinato nella sessione il nome della cartella che è stato inserito dall'utente...

In questa pagina c'è anche un uploader in flash al momento dell'invioche si appoggia alla pagina upload.php in questo modo:
PHP:
<?php
session_start();
$cartella_up = $_SESSION['cartella'];
echo session_id();
if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];                     
$login=xyz;
$password=xyz;
$conn = ftp_connect("xx.xx.xx.xx") or die("Could not connect");
@ftp_login($conn,$login,$password);
ftp_put($conn, ("$cartella_up/".$_FILES['Filedata']['name']), $tempFile, FTP_BINARY);   
               
ftp_close($conn);
}
?>

Quindi il lavoro che "dovrebbe" fare è inserire i file in upload dentro la cartella creata.... E INVECE NO! :D
la cosa strana è che se gli specifico io il nome della cartella, funziona perfettamente (es. $cartella_up="cartella_utente") ed inoltre se chiedo alla pagina upload.php di farmi una stampa di $cartella_up mi dice esattamente il nome inserito nel form utente...

avete qualche idea???

Grazie ;)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prova a cambiare $HTTP_POST_VARS['azienda'] che è deprecato
in
$nome_cartella=$_POST['azienda'];
poi a che ti serve il passaggio
$cartella=$nome_cartella;
?
non potresti semplicemente
$cartella=$_POST['azienda'];
?
per il resto non mi sembra di vedere errori, anche se dovrei guardare meglio,quindi la sessione dovrebbe funziare
 

paolofru

Utente Attivo
28 Ott 2009
37
0
0
ciao
prova a cambiare $HTTP_POST_VARS['azienda'] che è deprecato
in
$nome_cartella=$_POST['azienda'];
poi a che ti serve il passaggio
$cartella=$nome_cartella;
?
non potresti semplicemente
$cartella=$_POST['azienda'];
?
per il resto non mi sembra di vedere errori, anche se dovrei guardare meglio,quindi la sessione dovrebbe funziare

Si vero, codice inutile....
Mi chiedo (magari stò dicendo stupidaggini), $_SESSION salva una variabile, non un array giusto? Non è che c'è incongruenza tra le variabili che ho specificato io e quella che salva $_SESSION?

Ripeto, se inserisco io il nome della cartella, funziona tutto correttamente, sembra quasi che ci siano problemi tra
PHP:
$cartella_up = $_SESSION['cartella'];
e questo
PHP:
ftp_put($conn, ("$cartella_up/".$_FILES['Filedata']['name']), $tempFile, FTP_BINARY);
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
no non c'è incongruenza, prova a mettere per verifica

PHP:
<?php
session_start();
var_dump($_SESSION['cartella']);
$cartella_up = $_SESSION['cartella'];

//.......
e posta cosa risulta
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
quindi è probabile che l'errore sia nella ricezione del post, corregi così e metti il solito var_dump

PHP:
<?php
session_start();
//prendo il nome della cartella da creare
var_dump($_POST['azienda']);
$cartella=$_POST['azienda'];
$login=xyz;
$password=xyz;
$conn = ftp_connect("xx.xx.xx.xx") or die("Could not connect");
@ftp_login($conn,$login,$password);
//creo la cartella sull'ftp
$cartella = str_replace(" ", "_", $cartella);
@ftp_mkdir($conn,$cartella);
//mi sposto nella posizione creata
//@ftp_chmod ($conn, 0777, $cartella);
@ftp_chdir($conn,$cartella);
$_SESSION['cartella'] = $cartella; 
?>
e posta il risultato

dimenticavo verifica che l'istruzione session_start(); venga prima di qualsiasi output html (prima riga della pagina)
 

paolofru

Utente Attivo
28 Ott 2009
37
0
0
Risultato della pagina string(5) "paolo"

sisi, il session_start(); si trova sempre in testa alle pagine
 

paolofru

Utente Attivo
28 Ott 2009
37
0
0
Mi viene un altro dubbio, la pagina upload.php viene richiamata al momento del click sul tasto "carica" di flash, è possibile che sia per questo che non riesca a passargli correttamente il valore?

Però in upload.php ho provato a stampare $_SESSION['cartella'] e mi restituisce "Paolo" (valore inserito nel campo)
 
Ultima modifica:

paolofru

Utente Attivo
28 Ott 2009
37
0
0
Altra notizia... ora nella pagina upload.php, dopo aver creato la sessione, mi restituisce string(6) "paolo2" al var_dump... stò cominciando a non capire... :(
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se nel file makedir.php crei la sessione, poi che tu carichi o meno flash la sessione rimane, quindi la ritrovi nel upload.php
le sessioni esistono sino a che non esci dal bw o chiudi il sito
 

paolofru

Utente Attivo
28 Ott 2009
37
0
0
ciao
se nel file makedir.php crei la sessione, poi che tu carichi o meno flash la sessione rimane, quindi la ritrovi nel upload.php
le sessioni esistono sino a che non esci dal bw o chiudi il sito

Ok, proviamo a raggirare il problema, invece che specificare la cartella di upload nella stringa
PHP:
ftp_put($conn, ("$cartella_up/".$_FILES['Filedata']['name']), $tempFile, FTP_BINARY);

cosa ne dici se la specifichiamo nei parametri di connessione?

PHP:
$conn = ftp_connect("xx.xx.xx.xx") or die("Could not connect");

Però, come lo imposto? :D
 

paolofru

Utente Attivo
28 Ott 2009
37
0
0
ho provato a riformulare la cosa in questi termini:
PHP:
<?php
session_start();
$login=xyz;
$password=xyz;
$conn = ftp_connect("xx.xx.xx.xx") or die("Could not connect");
@ftp_login($conn,$login,$password);
$cartella_up = $_SESSION['cartella'];
echo $cartella_up;
@ftp_chdir($conn,$cartella_up);
if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];                     

ftp_put($conn, ($_FILES['Filedata']['name']), $tempFile, FTP_BINARY);   
               
ftp_close($conn);
}
?>

mi fa l'upload del file, ma la mette nella cartella root, non si sposta nella cartella richiesta!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non credo che tu possa mettere la cartella in fpt_connet, comunque dai un occio a
http://it.php.net/manual/en/function.ftp-connect.php

comunque elimina il silent (le @) in modo da vedere quali e se ci sono errori (le @ si mettono eventalmente dopo quando tutto funzia)
comunque usa sempre i var_dump per vedere dove si inceppa
PHP:
<?php
session_start();
//prendo il nome della cartella da creare
$nome_cartella=$HTTP_POST_VARS['azienda'];
$cartella=$nome_cartella;
$login=xyz;
$password=xyz;
$conn = ftp_connect("xx.xx.xx.xx") or die("Could not connect");
var_dump($conn);// FALSE se non si connette
ftp_login($conn,$login,$password);
var_dump(ftp_login);// FALSE se non si logga anche se php dovrebbe darti un warning
//creo la cartella sull'ftp
$cartella = str_replace(" ", "_", $cartella);
ftp_mkdir($conn,$cartella);
//mi sposto nella posizione creata
//@ftp_chmod ($conn, 0777, $cartella);
ftp_chdir($conn,$cartella);
$_SESSION['cartella'] = $cartella;
?>
 

paolofru

Utente Attivo
28 Ott 2009
37
0
0
forse ho trovato il problema, facendo un var_dump sull'istruzione ftp_chdir mi restituisce questo errore:

Warning: ftp_chdir() [function.ftp-chdir]: Can't change directory to test_1: No such file or directory in /web/htdocs/www.fruliopaolo.it/home/upload_clienti_2/upload.php on line 23
bool(false)

come se non riesca a cambiare directory, può essere questo il problema?
 

paolofru

Utente Attivo
28 Ott 2009
37
0
0
E' tutto molto strano, ora stò utilizzando questo codice:
PHP:
<?php
session_start();
$login=xyz;
$password=xyz;
$conn = ftp_connect("xx.xx.xx.xx") or die("Could not connect");

ftp_login($conn,$login,$password);
echo "<br/>";
echo $_SESSION['cartella'];
echo "<br/>";
$cartella_up = $_SESSION['cartella'];
echo $cartella_up;
echo "<br/>";
var_dump(ftp_pwd($conn));
echo "<br/>";

var_dump(ftp_chdir($conn,$cartella_up));
echo "<br/>";

var_dump(ftp_pwd($conn));

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];                    

ftp_put($conn, ($_FILES['Filedata']['name']), $tempFile, FTP_BINARY);  
              
ftp_close($conn);
}
?>

stò facendo il dump su ogni passaggio e funziona tutto correttamente, però quando fà l'upload di un file invece di metterlo nella $cartella_up lo mette nella root...

Per togliermi lo sfizio ho provato anche a fare un upload "manuale" con le istruzioni:
PHP:
$file='readme_test.htm';
$remote_file = 'readme_test.htm';
ftp_put($conn, $remote_file, $file, FTP_ASCII);

e lo inserisce perfettamente nella cartella richiesta, non in root!

Stò cominciando ad esaurire i tentativi...
 

paolofru

Utente Attivo
28 Ott 2009
37
0
0
ciao
quindi tutto ok?

Purtroppo no, non capisco perchè ma non riesce in nessun modo a posizionare i file dentro la cartella, li mette in root...
Mi sono tolto un altro scrupolo, ho incluso lo script di upload.php direttamente dentro makedir.php, così evitavo i passaggi di sessione...
A questo punto la variabile $cartella era già lì, nessun passaggio, nessun casino... e invece niente, continua a fare l'upload nella root dell'ftp e non in $cartella!!!

Cmq grazie Borgo Italia, sei l'unico che mi dà risposte! :D
 

paolofru

Utente Attivo
28 Ott 2009
37
0
0
Sono arrivato ad una conclusione, non si riesce a passare la variabile...

Se uso
PHP:
ftp_put($conn, ("$cartella/".$_FILES['Filedata']['name']), $tempFile, FTP_BINARY);
non funziona...

se invece lo metto io manualmente
PHP:
ftp_put($conn, ("paolo_2/".$_FILES['Filedata']['name']), $tempFile, FTP_BINARY);

Funziona perfettamente....

Se con un upload semplice del tipo
PHP:
$file='README.htm';
$remote_file = 'readme.htm';
ftp_put($conn, $remote_file, $file, FTP_ASCII);

funziona tutto perfettamente, perchè nell'altro non mi legge la variabile? non capisco cosa non gli piaccia!
 
Discussioni simili
Autore Titolo Forum Risposte Data
N Problema con le SESSION PHP 6
G problema con session.gc_maxlifetime PHP 3
T problema con le session PHP 3
M problema con Session PHP 3
M Problema con l'utilizzo delle Session PHP 3
G problema con session.cookie_lifetime PHP 1
A problema con Session Classic ASP 4
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
N Problema con position absolute e overflow HTML e CSS 4
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
O problema con query PHP 4
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema con eccessiva nitidezza apertura Camera Raw Photoshop 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 5
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
Tommy03 Problema con z-index HTML e CSS 3

Discussioni simili