Problema con $_SESSION

ciao
prova in questo modo

PHP:
<?php
ftp_put($conn, ($cartella."/".$_FILES['Filedata']['name']), $tempFile, FTP_BINARY);
?>
oppure (forse meglio)
PHP:
<?php
$cartella.="/";
ftp_put($conn, ($cartella.$_FILES['Filedata']['name']), $tempFile, FTP_BINARY);
?>
 
ciao
prova in questo modo

PHP:
<?php
ftp_put($conn, ($cartella."/".$_FILES['Filedata']['name']), $tempFile, FTP_BINARY);
?>
oppure (forse meglio)
PHP:
<?php
$cartella.="/";
ftp_put($conn, ($cartella.$_FILES['Filedata']['name']), $tempFile, FTP_BINARY);
?>

Putroppo niente... al primo caso avevo pensato anche io ma senza risultato.
I file vengono sempre uploadati nella root, eppure se facico un echo della variabile mi dice paolo_3/ , quindi è corretta...
 
ciao
altro tentativo
PHP:
<?php
$cartella=$cartella."/".$_FILES['Filedata']['name'];
ftp_put($conn, $cartella, $tempFile, FTP_BINARY);
?>
se non funzia questo tentativo chiedo auxilim al SOMMO
 
ciao
altro tentativo
PHP:
<?php
$cartella=$cartella."/".$_FILES['Filedata']['name'];
ftp_put($conn, $cartella, $tempFile, FTP_BINARY);
?>
se non funzia questo tentativo chiedo auxilim al SOMMO

anche con questo stesso risultato, sempre nella root... anche io non riesco a capacitarmi, è tutto corretto maledizione! :D
 
ti propongo un altra soluzione, considerato che dalla root non si muove, cosa nè pensi se per ogni file caricato:

1) fà l'upload e lo mette in root
2) sposta il file in $cartella
3) elimina il primo dalla root

almeno a livello di concezione ti sembra fattibile?
 
ciao
si potrebbe con move_uploaded_file ( string $filename , string $destination ), pero sarebbe meglio riuscire a capire perche non funzia
 
Dunque, ricominciamo da capo. Modifica così i due file:
PHP:
<?php
session_start();

$cartella = $_POST['azienda'];
$login = 'xyz';
$password = 'xyz';

$conn = ftp_connect('xx.xx.xx.xx') or die('Could not connect');
@ftp_login($conn, $login, $password);

$cartella = str_replace(' ', '_', $cartella);
@ftp_mkdir($conn, $cartella);
@ftp_chdir($conn, $cartella);

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

$cartella_up = $_SESSION['cartella'];

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);
}
?>
E vedi cosa stampano a video.
 
sia la prima che la seconda pagina stampano Array ( [cartella] => test_3 ), ovvero il nome inserito nel campo azienda.

Con il tuo metodo però non effettua nessun upload, neanche in root.
 
sia la prima che la seconda pagina stampano Array ( [cartella] => test_3 ), ovvero il nome inserito nel campo azienda.

Con il tuo metodo però non effettua nessun upload, neanche in root.

Scusa, ho scritto fesserie... non avevo cambiato nel file flash il percorso dello script upload.php

Le pagine restituiscono le stringhe Array ( [cartella] => test_3 ) e i file vengono caricati, ma sempre nella root, non nella cartella inserita!
 
stò facendo test anche con le altre istruzioni ftp_fput, fpt_nb_put ecc , l'upload funziona ma mette i file sempre nella root non nella cartella definita.

Ancora non riesco a capire come mai se specifico io la cartella funziona perfettamente e se lo prende dalla variabile non riesce...

Così funziona
PHP:
ftp_put($conn, 'test1234/'.$_FILES['Filedata']['name'], $tempFile, FTP_ASCII);
così no
PHP:
ftp_put($conn, '$cartella_up/'.$_FILES['Filedata']['name'], $tempFile, FTP_ASCII);

:incazz2::incazz2::incazz2:
 
ciao
prova ad usare direttamenta la sessione

PHP:
 ftp_put($conn, "{$_SESSION['cartella']}/{$_FILES['Filedata']['name']}", $tempFile, FTP_BINARY);

oppure prova a costruire il nome prima del put (eventualmente usa anche trim che non ci siano spazi che danno fastidio)

PHP:
$nome=trim($_SESSION['cartella'])."/".trim($_FILES['Filedata']['name']);//se trim non serve toglilo
ftp_put($conn, "{$nome}", $tempFile, FTP_BINARY);

poi un ultima cosa: usi linux? perchè se si credo che ci possono essere dei problemi con maiuscole/minuscole
cioè la cartella Test_3 è diversa dalla cartella test_3 (almeno credo)
 
ciao
prova ad usare direttamenta la sessione

PHP:
 ftp_put($conn, "{$_SESSION['cartella']}/{$_FILES['Filedata']['name']}", $tempFile, FTP_BINARY);

oppure prova a costruire il nome prima del put (eventualmente usa anche trim che non ci siano spazi che danno fastidio)

PHP:
$nome=trim($_SESSION['cartella'])."/".trim($_FILES['Filedata']['name']);//se trim non serve toglilo
ftp_put($conn, "{$nome}", $tempFile, FTP_BINARY);

poi un ultima cosa: usi linux? perchè se si credo che ci possono essere dei problemi con maiuscole/minuscole
cioè la cartella Test_3 è diversa dalla cartella test_3 (almeno credo)

Niente da fare, nè la prima nè la seconda soluzione (con e senza trim)....
si, il server monta Ubuntu, ma stò facendo test con frasi in minuscolo (test_1 , test2, prova123) quindi non penso che possa creare problema.
 
stò provando a concatenare un altra funzione, ftp_rename, in modo che una volta effetuato l'upload "rinomini" il file e lo sposti nella cartella

PHP:
	ftp_rename($conn,$_FILES['Filedata']['name'],$cartella_up.$_FILES['Filedata']['name']);

anche in questo caso, se metto $cartella_up mette i file nella root, se metto il nome della cartella li sposta perfettamente....

Ma non è che queste funzioni hanno qualche piccolo bug??? ;)
 
Il dominio da cui cerco di creare l'upload è hostato su aruba mnetre il server di arrivo è un server con ubuntu presente dal mio cliente.... mi chiedo....

Ma non è che aruba ha problemi nell'esecuzione di ftp_put e non riesce a far funzionare la parte in cui specifico la cartella di destinazione???
 
ciao
mi fai venire un dubbio: verifica i permessi di scrittura della cartella in cui vuoi uppare il file
dimenticavo: dopo la verifica potresti provare con


PHP:
move_uploaded_file ($_FILES['Filedata']['name'] , $cartella_up.$_FILES['Filedata']['name'] );
 
Ultima modifica:
per i permessi sono sicuro, perchè spostando un file con filezilla permette upload/cancellazione/rinomina.

Ora provo con il move_uploaded_file
 
ciao

non credo che c'entri, anche io carico i file con fz, ma se trimite script tento di scrivere in una cartella senza permessi non riesco a scriverci

Ho fatto 2 test, 1 con move_uploaded_file ed è risultato negativo (ho anche provato a mettere
PHP:
move_uploaded_file ($tempFile , $cartella_up.$_FILES['Filedata']['name'] );
oltre alla tua istruzione)

Ho rimesso ftp_put e per verificare se la cartella aveva i permessi ho inserito:
PHP:
if (ftp_chmod($conn, 0644, $cartella_up) !== false) {
 echo "$cartella_up chmoded successfully to 644\n";
} else {
 echo "could not chmod $cartella_up\n";
}
che mi ha anche stampato a schermo prova chmoded successfully to 644

anche in questo caso l'upload viene fatto nella root e non nella cartella... IL MISTERO SI INFITTISCE.... :dipser:
 
CARI SIGNORI CREDO DI AVER TROVATO LA SOLUZIONE

PHP:
<?php
session_start(); //riapro la sessione

$cartella_up = $_SESSION['cartella']; //memorizzo la sessione in una variabile
    $login = 'xyz'; //log ftp
    $password = 'xyz'; //pass ftp
    $conn = ftp_connect('xx.xx.xx.xx') or die('Could not connect'); //connessione ftp
    ftp_login($conn,$login,$password); //connessione ftp
	$contents = ftp_nlist($conn, "."); //creo la lista delle cartelle e la memorizzo nell'array

$key = array_search($cartella_up, $contents); //confronto l'array con la variabile
$cartella_upload = $contents[$key]."/"; //aggiungo lo slash alla variabile per il percorso
echo $cartella_upload;  //stampa per controllo

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
  ftp_put($conn, $cartella_upload.$_FILES['Filedata']['name'], $tempFile, FTP_BINARY); //upload del file
}
session_destroy(); //chiudo la sessione
ftp_close($conn);
?>

funziona, l'unico problema è che se torno alla prima pagina e memorizzo un altra sessione mi mantiene la prima...
Cercherò di risolverlo domani mattina...

YEAH :ilpirata::evil:
 

Discussioni simili