Leggere File (Banale non è cosi)

Salve  volevo sapere come posso fare a scorrermi un file dopo aver fatto fread, e quindi avere il cursore

all'inizio :bye: ?

inviato 8 anni fa
EKELON77
X 0 X

per tornare all'inizio si fa così:

$fp = fopen('somefile.txt');
...
fseek($fp, 0);

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Scusa se ma credo di essermi espresso male, mi spiego meglio:

    $dir  = "\\..\\configweb\\";
    $file = $dir."ConfigDb.txt";
    $apri = fopen ($file,"a"); //E' solo lettura
    $leggi = fread($apri, filesize($file));
    fclose($apri);

, il file contiente i dati in questo formato: 'tipodb:MySQL|host:localhost|port:3307|dbname:gestportalent|dbusers:entusers|dbpassword:""' che dovrò scompattare tramite questo script http://www.phpnews.it/forum/index.php?topic=3037.0;topicseen; quindi devo andare avanti non indietro.  O0 :bye:

risposto 8 anni fa
EKELON77
X 0 X

Ma senti perché fai tutto questo?

Non ti conveniva realizzare il file semplicemente così?

tipodb:MySQL

host:localhost

port:3307

dbname:gestportalent

dbusers:entusers

dbpassword:""

poi leggi il file con File() che semplicemente ti mette ogni riga dentro l'array, in questo modo è più semplice scorrerlo :)

$datiConnessione = file('mio_file.txt');

poi in ogni riga del file hai $datiConnessione[0] eccetera e fai un explode sulla singola riga quando ti servono i dati di connessione.

risposto 8 anni fa
Marco Grazia
X 0 X

Perchè ogni file ha la sua configurazione di connessione a db e all'host , e poi non mi ritorna nessun valore dalla variabile $leggi facendo un echo come mai? O0

risposto 8 anni fa
EKELON77
modificato 8 anni fa
X 0 X

Scusa se ma credo di essermi espresso male, mi spiego meglio:

    $dir  = "\\..\\configweb\\";
    $file = $dir."ConfigDb.txt";
    $apri = fopen ($file,"a"); //E' solo lettura
    $leggi = fread($apri, filesize($file));
    fclose($apri);
, il file contiente i dati in questo formato: 'tipodb:MySQL|host:localhost|port:3307|dbname:gestportalent|dbusers:entusers|dbpassword:""' che dovrò scompattare tramite questo script http://www.phpnews.it/forum/index.php?topic=3037.0;topicseen; quindi devo andare avanti non indietro.  O0 :bye:

Scusate ma qualcuno mi sa dire se questo script è corretto?

risposto 8 anni fa
EKELON77
X 0 X

Lo script citato nell'altro post del forum dovrebbe essere corretto, ma una domanda ti faccio, tu sei sicuro di voler salvare su file di testo dati importanti come la password e l'account?

risposto 8 anni fa
Marco Grazia
X 0 X

no quello l'ho fattio in <? php ?>, ma visto devo utilizzare gli script con files massivamente per altre cose volevo sapere come mai non mi leggeva nulla ovvero non mi scriveva nulla facendo un echo, come mai?  :bye:

risposto 8 anni fa
EKELON77
X 0 X

Se fai un'echo della variabile $leggi cosa ti dice?

risposto 8 anni fa
Marco Grazia
X 0 X

Vuoto, ovvero faccio echo "Dati Lettura :".$leggi."<br/>";.  O0

risposto 8 anni fa
EKELON77
X 0 X
Vuoto, ovvero faccio
echo "Dati Lettura :".$leggi."<br/>";
.  O0

Quindi il file è vuoto o il puntatore punta ad un altro file comunque vuoto.

risposto 8 anni fa
Marco Grazia
X 0 X

Il file non è vuoto, ma per quanto riguarda il fatto che punti ad un'altro file perchè non esiste un altro file in quel percorso, oppure ad un file che non esiste questo è possibile; ma non mi darebbe errore?

risposto 8 anni fa
EKELON77
X 0 X

No, non ti riporta nessun errore perchè la direttiva 'a'ppend in fopen() crea il file se non esiste.

Questa  $dir  = "\\..\\configweb\\"; istruzione non porta a nulla scritta così!

Sul web, e quindi anche nel tuo computer se usi un server web per visualizzare le pagina, ovvio che sì se sviluppi in php, devi sempre usare le barre dritte e non rovesce, cioè / impara a usare sempre solo queste, anche se il sistema, cioè il server web, è in grado di interpretarle e "rovesciarle" per te.

C'è da dire infine che quell'indirizzo non porta a nulla, tieni presente che più indietro della cartella radice dei tuoi siti, su apache htdocs se non l'hai modificata, non puoi risalire.

Metti questa dichiarazione in cima al tuo script: error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_STRICT); così ti verranno sempre indicati gli errori che risultano dall'esecuzione dello script, se ce ne sono.

risposto 8 anni fa
Marco Grazia
X 0 X

Quindi devo fare:

$dir  = "/../configweb/";
 $file = $dir."ConfigDb.txt";
 $apri = fopen ($file,"a"); //E' solo lettura
 $leggi = fread($apri, filesize($file));
 fclose($apri);

così? O0

risposto 8 anni fa
EKELON77
X 0 X

Non so prova a vedere, quello che non capisco è quel costrutto /../ prima della cartella dove presumo ci sia il file da leggere, perché lo mandi indietro in quel modo?

Se la cartella dove hai il tuo sito mettiamo è sito e dopo c'è la configweb facendo /../configweb in pratica gli dici di leggere il file in sito e non più indietro, perché la root del sito è quella e più indietro non ci va!

A meno che non gli dai il pattern completo partendo dalla radice del disco fisso, che so: c:/www/ConfigDb.txt se è posto lì (insomma sto immaginando dove possa essere, ma tu hai capito no?).

E' un discorso un po' complesso, però...

Nei sistemi funzionanti normalmente l'imlementazione delle cartelle di un server non si fa mai in quel modo, normalmente appena installi il Webserver Apache esso va a piazzare la webroot in una determinata cartella che solitamente è htdocs, sia su MAc, che su Windows. Su Linux si mette altrove ma la sostanza non cambia.

Per dare un po' di sicurezza in più agli utenti del server si modifica tutto in modo che la webroot (cioè la cartella da dove il sito inizia, cioè quella che raggiungi con l'url www.miosito.it/ per capirci, si crei dentro un'altra cartella che di solito si chiama con il nme account di registrazione, solitamente per i sistemi Apache si realizza così: ...percorso dalla radice del disco fisso .../account/pub_html/ quella in grassetto è la cartella di webroot, crendo una directory vuota dietro di essa, account/ che è possibile sfruttare per nascondere dei file che non si dovrebbero poter raggiungere con un indirizzo digitato nella barra degli url del browser.

Ovviamente questo dipende da come viene configurato il file di configurazione del webserver e credimi non è una cosa banale.

E qui mi fermo proprio perché è una cosa molto complessa configurare un webserver, ti dico solo che quello che stai tentando di fare, se ho capito il tuo meccanismo, è molto difficile in concreto perché dipende da come il webserver è configurato e quindi non è sempre portabile su altri sistemi.

risposto 8 anni fa
Marco Grazia
X 0 X

Ti riferisci agli alias, directory e location su apache che posso essere protetti tarmite htaccess o direttive specifiche date dentro di esse nel file di conf. di apache...!!!  :bye: ;) :)

risposto 8 anni fa
EKELON77
X 0 X

Più o meno sì, in Apache, ma non solo con esso ovviamente, ogni cartella del server diventa virtuale, all'interno di essa poi crei i percorsi alle varie cartelle e dichiari una root che solitamente, ma solo per ragioni storiche, in apache è chiamata public_html o public_ftp per gli FTP.

risposto 8 anni fa
Marco Grazia
X 0 X

OK grazie.  :bye:

risposto 8 anni fa
EKELON77
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda