Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-02-2004, 08:50   #1
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
[PHP] ignore_user_abort() & register_shutdown_function() QUANDO USARLI?

Cosa fanno di preciso queste due funzioni?
Quando devono essere usate?
E' possibile intercettate l'utente che chiude la finestra del browser?

Ultima modifica di SimoneLucca : 19-02-2004 alle 08:55.
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 09:53   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Simo, ti consiglio di usare il timeout come ti avevo scritto tempo fa... Anche le sessioni usano il timeout...

register_shutdown_function serve per far sì che una funzione php venga eseguita quando l'elaborazione della pagina è stata completata (anche dopo che il buffer di output viene inviato all'utente)...

Con ignore_user_abort puoi settare se interrompere o meno l'esecuzione dello script in caso di disconnessione da parte del client (quando ad esempio il client chiude il browser oppure quando viene arrestato il caricamento)...

http://it.php.net/manual/it/features...n-handling.php
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 10:00   #3
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
ma il problema è che voglio che ci stia loggato al massimo un utente alla vosta con lo stesso nome...

lo blocco al login e lo sblocco al logout.

se l'utente non fa il logout e chiude il browser.... deve aspettare che scada la sessione.

E' ragionevole questo?

Che tempi metteresti di scadenza?
Conta che se deve scarica' un file grosso ed è con una connesione lenta, alla fine deve riconnettersi tutte le volte...

Quote:
Con ignore_user_abort puoi settare se interrompere o meno l'esecuzione dello script in caso di disconnessione da parte del client (quando ad esempio il client chiude il browser oppure quando viene arrestato il caricamento)...
e se ilcliente chiude il borwser dopo che la pagina è stata caricata tutta?
mettere ignore_user_abort(0) cosa implica?
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 10:26   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non implica niente perchè la sessione TCP è già stata chiusa... In pratica non te ne accorgi se lo chiudi dopo che è finito il download della pagina...

Per i downlaod puoi gestirteli a mano (questo può evitare anche che ti linkino i downlaod da fuori)...e così alla fine setti come data e ora dell'ultima operazione, ogni tot minuti, durante il downlaod...così eviti che scada al sessione...

Per gestirteli a mano intendo: settare il mime-type e dare in output il file richiesto leggendolo da disco a pacchetti (che so, di 10Kb)... Puoi usare fopen e fread come nel C....
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 10:30   #5
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
download a mano...
ma non potevo proteggere i file da scaricare in una cartella protetta?

sii più preciso in merito al download "a mano"...
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 10:48   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Cos'è un download ?
Quando richiedi il download l'output del server, oltre agli header standard, aggiunge il mime-type del file che si vuole scaricareè fatto così (ad esempio per uno zip):
Content-Type: application/zip

E dopo i dati binari...

Una cosa del genere dovrebbe andere bene:
Codice PHP:
header("Content-Type: application/zip");
ob_implicit_flush(); //invia l'output immediatamente al browser

$fp = fopen ("pippo.zip", "r");

if(!
$fp)
  exit(
"errore nell'apertura del file");

while(!
feof($fp)) {
   if(
$tempo_attuale >= $tempo_salvato + $20minuti)
      
aggiorna_ultima_operazione_database($tempo_attuale);
   echo 
fread($fp, 10240); //legge 10Kb alla volta e li da in output
} 
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 10:56   #7
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
ok, grazie!
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 11:05   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ho provato e c'è ancora qualcosa da rielaborare... Comunque la strada è quella...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 11:27   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ho risolto qualcosa, metti il file di prova in una directory e chiamalo index.php:
Codice PHP:
<?php
ob_implicit_flush
(); //invia l'output immediatamente al browser 

$fp = fopen ("I:/Downloads/adstudio-novm1.zip", "rb"); 

if(!
$fp) 
  exit(
"errore nell'apertura del file"); 

header("Content-Length: ".filesize("I:/Downloads/adstudio-novm1.zip")); 
header("Content-Type: application/zip"); 

while(!
feof($fp)) { 
   
sleep(1); //ho messo una pausa per simulare un canale di trasmissione
   
echo fread($fp, 10240); //legge 10Kb alla volta e li da in output 
}
?>
Il fiel che apre ora è fisso (ma per provare va benissimo)...
Apri il link in questo modo: http://127.0.0.1/dire/?pippo.zip...
In questo modo IE riceve il file con l'estensione giusta, ma il nome è sbagliato (prende quello della dir)...
Comunque credo che si possa risolvere il problema con mod_rewrite di Apache (devo ancora guardarmelo)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 12:42   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ho risolto quasi andando a caso...

Allora le mdoifiche da fare in httpd.conf sono queste:

Caricare mod_proxy e mod_rewrite (magari ho caricato anche qualche modulo in più, non ho avuto tempo di provare)...
Codice:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule rewrite_module modules/mod_rewrite.so
Impostare il prxy per accettare solametne connessioni dal localhost...
Codice:
<IfModule mod_proxy.c>
ProxyRequests On

<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>

#
# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
#
#ProxyVia On

#
# To enable the cache as well, edit and uncomment the following lines:
# (no cacheing without CacheRoot)
#
#CacheRoot "H:/Programmi/Apache Group/Apache2/proxy"
#CacheSize 5
#CacheGcInterval 4
#CacheMaxExpire 24
#CacheLastModifiedFactor 0.1
#CacheDefaultExpire 1
#NoCache a-domain.com another-domain.edu joes.garage-sale.com

</IfModule>
Impostare nel VirtualHost interessato o a livello globale questa regola del mod_rewrite:
Codice:
    RewriteEngine on
    RewriteRule   ^/pippo/(.*) /download.php?file=$1 [P]
/pippo è una directory inesistente !!!
download.php è di questo tipo:
Codice PHP:
<?php
ob_implicit_flush
(); //invia l'output immediatamente al browser 

$fp = fopen ("I:/Downloads/".$_GET["file"], "rb"); 

if(!
$fp) 
  exit(
"errore nell'apertura del file"); 

header("Content-Length: ".filesize("I:/Downloads/".$_GET["file"])); 
header("Connection: close");
header("Content-Type: application/zip"); 

while(!
feof($fp)) { 
   
sleep(1); //ho messo una pausa per simulare un canale di trasmissione
   
echo fread($fp, 10240); //legge 10Kb alla volta e li da in output 
}
?>
L'esempio ovviamente non controlla il parametro (va controllato che non venga messo alcuno / nel nome del file)

In pratica la richiesta passa tramite il proxy... Ho provato con IE e funziona... La devo verificare anche con altri browser...

L'unico problema è che se il download supera i 30 secondi si ferma (basta allungare il timout dello script, dopo guardo)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 13:00   #11
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
ma io non posso modificare http.conf del server che mi ospita....
P.S. (mandami una foto della "bimba"... la voglio vedere.... )
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 13:02   #12
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
ma non posso mettere i file sensibili in dir protette del server?
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 13:40   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ah cacchio, non ci avevo epnsato che non potevi modificarlo... Anche se credo che (a parte il md_proxy) tu possa fare tutto con un file .htaccess da mettere nello spazio web...

Comunque ormai termino dicendo: scrivendo http://server/pippo/nomefile.zip si crede di scaricare un file direttamente dal server ed invece siamo noi farlo scaricare tramite PHP
Codice PHP:
<?php
ob_implicit_flush
(); //invia l'output immediatamente al browser 

$fp = fopen ("I:/Downloads/".$_GET["file"], "rb"); 

if(!
$fp) 
  exit(
"errore nell'apertura del file"); 

header("Content-Length: ".filesize("I:/Downloads/".$_GET["file"])); 
header("Connection: close");
header("Content-Type: application/zip"); 

while(!
feof($fp) && !connection_aborted()) { 
   
set_time_limit(20);
   
sleep(1); //ho messo una pausa per simulare un canale di trasmissione
   
echo fread($fp, 10240); //legge 10Kb alla volta e li da in output 
}
?>
Mettere i file su una directory protetta ti porta comunque ad avere problemi... Il client conosce username e password del file in fase di download...quindi potenzialmente è linkabile esternamente...
Insomma, la soluzione è vicina...e probabilmente è in mod_rewrite (che credo sia solitamente attivo)... Ora bisogna scoprire come fare scaricare il file con il nome giusto...

Ultima modifica di cionci : 19-02-2004 alle 13:43.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 13:51   #14
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
sto mettendo un sito in rete sotto serverplan.
offrono dei servizi tra cui:

http://www.serverplan.com/tutorial/

1) protezione con pass di cartella (.HTACCESS)
2) abilitare protezione hotlink....

ho visto i tutorials, che ne dici?
il mio sito starà la.
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 14:03   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da SimoneLucca
sto mettendo un sito in rete sotto serverplan.
offrono dei servizi tra cui:

http://www.serverplan.com/tutorial/

1) protezione con pass di cartella (.HTACCESS)
Questo serve a poco...perchè chi accede deve comunque avere username e password...
Quote:
Originariamente inviato da SimoneLucca
2) abilitare protezione hotlink....
Anche questa serve a poco... Basta costruirsi una richiesta HTTP con un campo referer tra quelli nella lista e ti fa scaricare...
Quindi secondo me devi cercare di trovare una soluzione simile a quella sopra... Ricordati che con quella sopra puoi impedire che scada la sessione nel DB... Con questi modi non puoi impedirlo...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 14:09   #16
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
come mai dici con .HTACCESS non posso proteggere una cartella?
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 14:18   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
La puoi proteggere, ma username e password devi darli (in qualche modo) al client... E chi scarica di fatto può linkare il file in questo modo:

http://username:password@tuosito/nomedownload.zip
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 14:23   #18
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
non posso darli io da script? in questo modo l'utente che si è precedentemente autenticato non deve fare nulla... e chi non si è autenticato, non può accedere...
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 14:30   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sì...le puoi dare, ma transitano comunque da server a client e poi di nuovo da client a server...
Codice:
<?php
ob_implicit_flush(); //invia l'output immediatamente al browser 

$fp = fopen ("I:/Downloads/".$_GET["file"], "rb"); 

if(!$fp) 
  exit("errore nell'apertura del file"); 

header("Expires: Mon, 26 Jul 2001 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Cache-control: private");
header("Connection: close");
header("Content-Type: application/zip"); 

while(!feof($fp) && !connection_aborted()) { 
   set_time_limit(20);
   sleep(1); //ho messo una pausa per simulare un canale di trasmissione
   echo fread($fp, 10240); //legge 10Kb alla volta e li da in output 
}
?>
Ora basta che tu chieda se è attivo il mod rewrite e con queste due righe nel file .htaccess puoi far salvare con il nome giusto:

RewriteEngine on
RewriteRule ^/download/(.*) /download.php?file=$1 [PT]

Digitando http://tuoserver/download/pippo.zip sarà come chiamare http://tuoserver/download.php?file=pippo.zip e scarichi il file controllandolo tramite download.php
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 14:42   #20
SimoneLucca
Senior Member
 
Iscritto dal: Oct 2000
Messaggi: 381
torniamo alla base:

io ho, per ogni utente che si logga, una cartella a cui solo lui (più l'amministratore) può accedere per scaricare i files.

voglio fare in modo che i permessi per scaricare i files da quella cartella siano dati dallo script (nomeutente.php).

voglio anche evitare che lo script che contiene i dati della connessione con i database sia leggibile (da uno script malizioso che mi legge il contenuto e mi stampa).

Come posso implementare questo marchingegno?

voglio, chiaramente, evitare che uno da fuori faccia:

www.miosito.com/cartellautente/file.zip e che lo scarichi.

è fattibile?
SimoneLucca è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Eni mette un tetto ai prezzi dei carbura...
BYD Seagull (Dolphin Surf), l'elettrica ...
Multa milionaria per un data center del ...
F-Droid 2.0 si aggiorna con una nuova gr...
Microsoft ridisegna Copilot: dalla chat ...
Volkswagen porterà 20 videogiochi...
Troppa IA storpia: OpenAI licenzia in tr...
Marathon, Bungie svela i contenuti dell'...
Autunno, tempo di potature: i tagliasiep...
Meta Muse, due sviluppatori riescono a o...
Google AI Pro gratis: festa a sorpresa p...
MacSync colpisce macOS usando i calendar...
L'agente IA cancella 48 mila file in 103...
Jensen Huang avverte: l'AI può aiutare a...
Elettrico Renault in arrivo in Spagna: 6...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:09.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v