Newsgroup: it.comp.os.linux.development
Titolo: array associativi aiuto

Avendo un vecchio libro ed essendo rimasto alla variabili globali non so
come snocciolare un arrary di elementi passati dal form.
L'array, non è $_POST o $_GET?
Dunque non va bene il segunete codice?
foreach ($_POST as $value){
echo "Valore: $value";
}
Inoltre mi stavo chiedendo, riguardo all'upload di un file per fare un
esempio, anche in questo caso, come diamine si elaborano gli elementi quali
$upload_file, $upload_file_name, $upolad_file_size ecc... nel senso, come
accaparrarmi i loro valori?
Prima, per visualizzarli, ad esempio davo:
echo "$upload_file";
echo "$upload_file_name";
e adesso?
ciao
bull

Posto il codice del file html e del file php:
FILE HTML:
<html>
<body>
<form method="post" action="uploadit.php" enctype="multipart/form-data">
<h3> Invia un file al server</h3>
<input type = "file" name = "upload"><br>
<input type ="submit" value= "invia">
</form>
</body>
</html>
FILE PHP:
<html>
<body>
<?php
echo "<pre>";
# ATTENZIONE: prendo gli elementi passati dal form, ma NON sono sicuro che
questo sia il codice corretto
$uploadfile = $_POST["upload"];
$uploadfile_name = $_POST["upload_name"];
$uploadfile_size = $_POST["upload_size"];
$uploadfile_type = $_POST["upload_type"];
#Fine del codice che assegna i valori passati dal form alle variabili:
#$uploadfile,$uploadfile_name,$uploadfile_size,$uploadfile_type
echo "</pre>";
if ($uploadfile == "none" ) {
echo"Non è stato inviato alcun file<br>";
echo "Ritorna al <a href =\"upload.html\">form</a>";
exit;
}
if ($uploadfile_size < 3072) {
#lo copia in una nuova posizione
if (copy($uploadfile, "G:\PHP\cartella\$uploadfile_name")) {
echo "Invio del file riuscito!";
#cancella il file temporaneo
unlink ($uploadfile);
} else {
echo "$PHP_SELF: Errore, impossibile copiare il file";
}
} else {
echo "Spiacente, il file da inviare non deve superare le dimensioni di
3KB<br>";
}
?>
</body>
</html>
PROBLEMA RISCONTRATO:
Warning: Unable to open '' for reading: Permission denied in
g:\php\uploadit.php on line 18
: Errore, impossibile copiare il file
CONSIDERAZIONI:
La cartella penso di averla condivisa con i permessi giusti, infatti ho
testato il seguente file.php che funge e mi scrive nella cartella:
<?php
if (!$cartella = opendir ("G:\PHP\cartella")){
echo "Spiacente, non riesco ad aprire la cartella";
} else {
echo "la cartella è stata aperta";
}
if (!$p_file = fopen("G:/PHP/cartella/test.txt", "w+")){
echo "Spiacente, non riesco ad aprire il file test.txt";
exit;
}
fputs($p_file,"ciao");
fclose($p_file);
?>
Potete spiegarmi dove sbaglio?
ciao
bull

 e adesso?
ed adesso c'e' l'array apposta che si chiama $_POST_FILE o roba simile non
mi ricordo sono 3 mesi che non vedo piu' php e incomincio a dimenticarmi le
cose ... cmq se leggi online la guida di php c'e' scritto tutto ma proprio
tutto tutto con esempi degli utenti ecc ... quindi dovresti incominciare a
cercare meno la pappa pronta e rimboccarti le maniche e studiare sto manuale
di php.
ciao

 di php.
Ascolta, è già un  po' che insisti con questa pappa pronta, IO la pappa
pronta non la cerco, infaftti dispongo di due bei libri sul php che studio
quotidianamente, ma evidentemente non mi sono chiari certi concetti:
-Pagine Web Dinamiche con php e Mysql di David Tansley Editore
Addison_wesley
-Programmare in php di Rasmus Lerdorf & Kevin Tatroe Editore Hops O'Reilly
pubblicato il 20 ottobre 2002
Se vuoi rispondermi rispondi, altrimenti sei pregato vivamente di astenerti
dal fare commenti stupidi
bull

 di php.
Ascolta, è già un  po' che insisti con questa pappa pronta, IO la pappa
pronta non la cerco, infaftti dispongo di due bei libri sul php che studio
quotidianamente, ma evidentemente non mi sono chiari certi concetti:
-Pagine Web Dinamiche con php e Mysql di David Tansley Editore
Addison_wesley
-Programmare in php di Rasmus Lerdorf & Kevin Tatroe Editore Hops O'Reilly
pubblicato il 20 ottobre 2002
Se vuoi rispondermi rispondi, altrimenti sei pregato vivamente di astenerti
dal fare commenti stupidi
bull
ps: Ho speso 92 ? proprio per evitare di leggermi guide oceaniche in lingua
inglese quali quelle che si trovano su internet. Non ho tanto tempo da
perdere, ho quasi 30anni e spero di trovarmi al più presto un lavoro, è
finito il tempo di fare lo studentello a perditempo!!!!

 finito il tempo di fare lo studentello a perditempo!!!!
Non si finisce mai di imparare.
-- 
P.S. E il lavoro si mantiene solo se si continua a studiare, mantenendo un 
differenziale di competenza tra te e chi ti da lavoro.
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.

 Dunque non va bene il segunete codice?
Di sicuro questo post non va bene su questo NG, sei OT.
Spostati su it.comp.www.php
Ciao.
-- 
***  Per E-mail rimuovi ModE dall'indirizzo  ***
  *** Linux user # 198661 --- ICQ 33500725 ***
*** homepage 
http://web.tiscalinet.it/kailed
 ***
            *** Powered by Linux ***

 dal fare commenti stupidi
non sono commenti stupidi ... sono 4 volte che ti indirizzo sulla
documentazione online di php ... io lo ho studiato soprattutto la' ... ed il
sito gestionale che mi avevano commissionato e' uscito stupendo.
ora se non vuoi andare a cercare _POST e FILE sulla documentazione fatti
tuoi che non saprai mai come usarli.
spero che ora il commento ti sia piu' utile ciao

 Spostati su it.comp.www.php
Ci sono andato, come potrai verificare, dopo circa 3h che avevo postato su
questo NG, ma nessuno ancora mi ha risposto...
ciao
bull

 finito il tempo di fare lo studentello a perditempo!!!!
ci teli ha consigliati quei libri ??? sull'indice non ci stava
"configurazione di php" o "ricevere un file in post" ?
o se erano scritti per la versione vecchia non puoi certo astenerti di
aggiornarti su quella recente ...
seno' trovati un posto che ti da' il php 3 e programma solo con quello, che
ti devo dire, ma quando poi dovrai fare porting da codice scritto
completamente in versione 3 su un server che monta solo la 4 recente o la 5
che e' quasi uscita in cui per motivi di sicurezza hanno una certa
configurazione, ed il tuo codice non funziona che fai, visto che i tuoi
manuali non ti hanno indotrinato sul da farsi ti siedi per terra e cerchi
l'angelo custode che via newsgroup ti scrive un libro da 1000 pagine per
darti una nuova dottrina e cosi' farti tornare in carreggiata, o preferisci
magari leggerti una guida in inglese (che si puo' pure downlodare) e piano
piano leggerti le parti dove trovi errori ed incongruenze.
ti posso solo dire che la documentazione online di php ha scritto per filo e
per segno perche' alcune cose sono deprecate e da non usare, o perche' certi
modi vecchi di fare ora non funzionano piu' e su come convertire il codice
per farle tornare a funzionare.
cmq se hai speso 90 e passa euro per della documentazione che non ti ha dato
nulla non e' certo colpa ne mia ne del gruppo ...
ciao

 tuoi che non saprai mai come usarli.
Ho trovato la soluzione da
http://php3.de/manual/it/print/features.file-upload.php
"
Il contentuto dell'array $HTTP_POST_FILES è riportato di seguito. Si noti
che che questo ipotizza l'uso del nome del file caricato 'userfile'...:
$HTTP_POST_FILES['userfile']['name']
Il nome originale del file sulla macchina dell'utente.
$HTTP_POST_FILES['userfile']['type']
Il mime-type del file, se il browser fornisce questa informazione. Un
esempio potrebbe essere "image/gif".
$HTTP_POST_FILES['userfile']['size']
La dimensione, in bytes, del file caricato.
$HTTP_POST_FILES['userfile']['tmp_name']
"
E funziona! anche se ho sempre un problema di questo tipo:
Warning: unlink() failed (Permission denied) in g:\php\upload_file.php on
line 31

 differenziale di competenza tra te e chi ti da lavoro.
Questo è parzialmente vero
PS: chiudiamola qui comunque
ciao
bull

 line 31
la funzione unlink gestisce la cancellazione del file ... e ti sta dicendo
che non hai i permessi per cancellare tale file ... cosa stavi tentando di
cancellare ??? il file temporaneo ???
ciao

* bull [2003-08-03 00:39]:

Innanzittutto: i newsgroup non sono un helpdesk. Se qualcuno conosce la
risposta, risponderà; non essendo pagato per farlo, risponderà quando e
come più gli aggrada.
Secondariamente: si cerca sempre *prima* su Google.
Terzo e ultimo punto: si chiede aiuto prima sul gruppo con il manifesto
più attinente. Dato che It.Comp.WWW.PHP esiste, avresti dovuto chiedere
là *subito*, e non qui.
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://digilander.libero.it/ebassi/
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 nulla non e' certo colpa ne mia ne del gruppo ...
Ci mancherebbe, non voglio dire questo, però un NG non è luogo per scambiare
idee su un determinato argomento e magari darsi anche una mano? Non mille
pagine, ma come già detto, due righe di codice che possono risolvere ore ed
ore perse a cercare invano...
Cmq, mi puoi dire in definitiva l'indirizzo dove trovare tutto il manuale
on-line? :-)
ciao
bull

  Emmanuele.
Ciao
bull

 cancellare ??? il file temporaneo ???
Esattamente, comunque per dirla tutta il codice dovrebbe anche aver scritto
sulla cartella ma non ci trovo assolutamente nulla dentro.
Posto il codice che puoi testare, se vuoi:
upload.html:
<html>
<body>
<h3>Invia un file al server: G:\PHP\Cartella</h3>
<form method=post action=upload_file.php enctype="multipart/form-data">
<input type=file name=file><br>
<input type=submit value="invia file">
</form>
</body>
</html>
upload_file.php:
<html>
<body>
<?php
#uploadit.php
$tmp_file = $HTTP_POST_FILES['file']['tmp_name'];
$name_file = $HTTP_POST_FILES['file']['name'];
$size_file = $HTTP_POST_FILES['file']['size'];
$type_file = $HTTP_POST_FILES['file']['type'];
echo "<pre>";
echo "Nome del file locale creato dopo l'invio: $tmp_file\n";
echo "Nome originale del file remoto: $name_file\n";
echo "Dimensione del file inviato: $size_file\n";
echo "Tipo di file: $type_file\n";
echo "</pre>";
echo "<hr>";
#abbiamo veramente un file?
if ( $tmp_file == "none" ) {
echo "Non è stato inviato alcun file<br>";
echo "Ritorna al <a href=\"upload.html\">form</a>";
exit;
}
#controlla innanzitutto le dimensioni del file se è meno di 3KB
if ( $size_file < 3072 ) {
#Lo copia in una nuova posizione
if (copy($tmp_file, "G:\PHP\Cartella\$name_file")) {
echo "Invio del file riuscito";
#cancella file temporaneo
unlink($temp_file);
} else {
echo "Invio del file fallito";
}
} else {
echo "Spiacente, il file da inviare non deve superare le dimensioni di 3
KB<br>";
}
?>
<br>
Ritorna al <a href="upload.html">form</a> per inviare i file
</body>
Questo programma mi visualizza, anche se non ha uploadato nessun file la
seguente dicitura:
Nome del file locale creato dopo l'invio: G:\PHP\Cartella\php21E.tmp
Nome originale del file remoto: test.txt
Dimensione del file inviato: 4
Tipo di file: text/plain
----------------------------------------------------------------------------
----
Invio del file riuscito
Warning: unlink() failed (Permission denied) in g:\php\upload_file.php on
line 31
Ritorna al form per inviare i file
Ma...

 on-line? :-)
http://www.php.net/manual/en/
 versione inglese consultabile online
http://www.php.net/manual/it/
 versione italiana consultabile online
download italiano singolo file html:
http://www.php.net/distributions/manual/php_manual_it.html.bz2
download italiano multi html:
http://www.php.net/distributions/manual/php_manual_it.tar.bz2
versione inglese pdf:
http://www.php.net/distributions/manual/php_manual_en.pdf.bz2
inglese html singolo:
http://www.php.net/distributions/manual/php_manual_en.html.bz2
inglese html multiplo:
http://www.php.net/distributions/manual/php_manual_en.tar.bz2
se non sai come decomprimere i file bz2 o tar gz puoi fornirti di winrar che
fa tutti questi compiti via grafica o scaricarti dal sito della gnu le
applicazioni eseguibili dos da usare da riga di comando.(questo sotto
windows che mi pare che tu stai lavorando da li | sotto linux ci sono gia'
tutti nella distribuzione, almeno dovrebbero esserci tutti semmai vai di rpm
ecc ...)
ciao

 Posto il codice che puoi testare, se vuoi:
prossima volta posta il numero di linea dove e' l'errore, cmq non ho
possibilita' di provare il codice, ma siccome ci sono cascato anche io le
prime volte ti segnalo un problemino della conf di php standard, e cioe' che
e' bindato con la cartella temp *nix (quindi /tmp) cerca quella voce e
ribinda tale cartella in un percorso temporaneo giusto.
es: c:/windows/temp
e poi ricordati di pulirla ogni tanto perche' quando inizierai con le
sessioni file ecc, molto prob si riempira' di file temporanei che ogni tanto
devi pulire a mano.
altro consiglio non cancellare il file temporaneo che si crea php ma
limitati a copiarlo usarlo nello script lascia che selo cancelli lui alla
fine dello script (se proprio vedi che non lo cancella lui in automatico
gestiscitelo tu ma solo in quell'occasione)
ciao

 PS: chiudiamola qui comunque
In bocca al lupo.
-- 


 on-line? :-)
http://it.php.org


 
http://it.php.org
http://it.php.net
, ovviamente. Accidenti all'uso indiscriminato dei domini! 
:)


 gestiscitelo tu ma solo in quell'occasione)
Ok, anche qui parli di esperienza, perchè sul mio bellissimo libro trovo il
codice per dare una passatina col dito, tanto per togliere i residui.
ciao
bull

 cosě come ho fatto?
si ma se non mi sbaglio c'e' anche una definizione di directory temporanea
generale ... cerca un po' in conf tutte le dir temporanee e configurale con
il path che usi tu per i temporanei ...
ciao

  Bindato?? Che significa bindato? 
brrrr.... Mai sentito parlare di ambiente e nomi?
V.
-- 
Ho dato al mio dolore la forma di parole abusate
che mi prometto di non pronunciare mai più
[CSI]

 pensavo ci fosse maggiore attività,come pare che sia :-)
Non ha importanza la quantità di attività in un newsgroup. Altrimenti
prova a postare su it.comp.lang.visualbasic, là c'è un traffico della
madonna. Come ha detto il sig. Bassi, i newsgroup non sono degli
helpdesk, ma spazi comuni per riflessioni su certi temi.
Ciao,
-- 
+--------+ ASCII ribbon campaign ( )
|  kral  |  - against HTML email  X 
+--------+              & vCards / \

Non ha importanza la quantità di attività in un newsgroup. Altrimenti
prova a postare su it.comp.lang.visualbasic, là c'è un traffico della
madonna. Come ha detto il sig. Bassi, i newsgroup non sono degli
helpdesk, ma spazi comuni per riflessioni su certi temi.
Si può essere più ipocriti.
Leggi gli argomenti, fai una statistica di quanti interventi sono a favore
di un aiuto e quanti per fare riflessioni comuni(forse metafisiche?) e poi
leggiti i dati in percentuale...troverai di avere detto una gran fesseria,
ma soprattutto, mostrerai quanto sei ipocrita.
Pensa prima di scrivere, e cerca di essere cerebralmente più flessibile,
perchè un conto sono le regole base un conto è la prassi comunque. Sveglia!!

> brrrr.... Mai sentito parlare di ambiente e nomi?
brrrr? E' un altro vocabolo che mi sfugge oppure hai freddo?

prassi comunque. Sveglia!!
volevo dire prassi comune, naturalmente

 ha scritto nel messaggio
news:bghk8g$s91$1...@news.ngi.it...


thx!
ciao
bull

  brrrr? E' un altro vocabolo che mi sfugge oppure hai freddo?
Mi vengono i brividi quando penso al futuro dell'informatica in mano
alla generazione attuale di programmatori, alla loro cultura di base ed
alla loro preparazione specifica.
V.

 comunque. Sveglia!!
Questa è una ca**ata. Un ng ha delle regole, se tutti seguissimo queste
benedette regole penso si vivrebbe meglio. C'è un ng su php? Sì. Allora
usa quello. Leggiamo le FAQ del newsgroup prima di postare. Leggiamo il
suo manifesto e vediamo se ciò che chiediamo corrisponde con la
sua filosofia (e filosofia non vuol dire solo discussioni metafisiche).
Impariamo a pensare che non tutto ci è dovuto.
Ciao,
(Non risponderò cmq ad altre provocazioni)
-- 
+--------+ ASCII ribbon campaign ( )
|  kral  |  - against HTML email  X 
+--------+              & vCards / \
--
[1]
bull> if (!$cartella = opendir ("G:\PHP\cartella")){
			         ^^^^^^^^^^^^^^^
	Questa a casa mia si chiama path di Windows.

 alla loro preparazione specifica.
Per quanto riguarda la cultura di base sono laureato in giurisprudenza a
Pisa, e per quanto riguarda la preparazione specifica non sono un
programmatore, semmai ho frequentato un corso della provincia come Web
Designer della durata di 700h con stage finale in azienda che sviluppa siti
web professionali, a fianco del costruttore del motore di ricerca arianna.
E' invece di dominio pubblico la consapevolezza che gli utenti Linux, vuoi
perchč studiano informatica, vuoi perchč Linux non ha la setssa immediatezza
di Windows, si sentono facenti parte di una categoria superiore.
A me pare che tu rappresenti invece il prototipo di persona gonfiata e che
si da le arie perchč, forse, ha qualche conoscenza in piů in merito al
proprio campo...e ci mancherebbe altro!!!

Il problema di riuscire a copiare il file temporaneo sulla directory scelta
l'ho risolto, purtroppo però non trovo alcun file dentro la directory dei
file temporanei:
upload_tmp_dir = "G:\PHP\Temporary"
DOMANDA:
Mi sai dare qualche dritta a tal proposito?
E' lo stesso se come valore di upload_tmp_dir metto un percorso con il
backslash piuttosto che con lo slash?Lo chiedo perchè non riuscivo a copiare
il file per un semplice motivo di \e/ e l'ho trovato strano, dato che sul
percorso da esplora risorse ho un \ ed invece il codice vuole
necessariamente un /
codice:
<?php
$uploadfile = $HTTP_POST_FILES['file']['name'];
$tmp_file = $HTTP_POST_FILES['file']['tmp_name'];
if (is_uploaded_file($tmp_file)) {
echo "File caricato, adesso cerco di copiarlo...<br>";
} else {
    echo "Possibile attacco nell'upload del file: filename '$userfile'.";
}
# NOTA: Ho dovuto mettere lo slash seppure sul mio pc i percorsi siano
separati da un backslash
if (copy($tmp_file, "G:/PHP/Cartella/$uploadfile")){
echo "File copiato nella cartella G:/PHP/Cartella/$uploadfile";
}
?>

 di Windows, si sentono facenti parte di una categoria superiore.
E il problema, quello vero, e` che *preoccupantemente* spesso  e` davvero
cosi`...
Spesso e volentieri per (de)meriti altrui, pero`.
^K
-- 
 Francesco Romani - Ikitt  | Describe your vision, the meaning is missing |
*** mailserver: 
freemail.it
| Won't anybody listen?                        |

Posso solo dirti bravo. Complimenti vivissimi. Sei uno dei pochi esseri
che riesce a vivere senza cervello
L'importante per me č non avere un cervello chiuso ed inflessibile come il
tuo, essere di basso intelletto
Questa č una ca**ata. Un ng ha delle regole, se tutti seguissimo queste
benedette regole penso si vivrebbe meglio. C'č un ng su php? Sě. Allora
usa quello. Leggiamo le FAQ del newsgroup prima di postare. Leggiamo il
suo manifesto e vediamo se ciň che chiediamo corrisponde con la
sua filosofia (e filosofia non vuol dire solo discussioni metafisiche).
Impariamo a pensare che non tutto ci č dovuto.
Ma per favore, sei solo un numero e con i numeri preferisco non confondermi.
Adios

  altro!!!
Bah. Non è vero, semplicemente non mi sembra normale che uno che non ha
mai sentito parlare di "ambiente" e "binding" lavori nel campo della
programmazione; eppure so benissimo che non sei l'unico, non voglio
colpevolizzare te, solo che è una cosa sbagliata. Girala come vuoi, ma
non mi convincerai che è una cosa giusta. Cmq è OT come tutto il thread.
V.

 Spesso e volentieri per (de)meriti altrui, pero`.
Hai appena confermato ciň che sostengo. Se non ti rendi conto di ciň che hai
scritto sei veramente ridicolo.Poverino!

 necessariamente un /
Probabilmente e' una strafaq. Trovi dei riferimenti a windows nelle FAQ di
mod_php. In ogni caso fai un paio di test di apertura file con / e \ e vedi
qual'e' quello che funziona. Ti ricordo comunque che essendo un NG dedicato
a Linux qui a nessuno importa una sega di come bisogna specificare il path
su windows. E' anzi probabile che pochi lo sappiano.
Se usi php >= 403 controlla la funzione move_uploaded_file.
Se vuoi fare alla svelta c'e' una classe per l'handling del file upload su
phpclasses.net
PS: Rivolto a te e agli altri che insistono in questa discussione, se volete
mangiarvi il muso fatelo in privato.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail** 
-<! There are 10 kind of persons: who understands binary and who doesn't. !>-