[PHP] Perdita della sessione con fopen? (Problema complicato inside)
Salve a tutti.
Ho un problemino un po' complicato da spiegare, cercherò di essere il più chiaro e rapido possibile.
Io ho una pagina di amministrazione che prima di ogni altra cosa ha questo codice:
Citazione:
Quote:
session_start();
if (($_POST['login']=='autorizzato') && ($_POST['password']=='password')) $_SESSION[accesso]=true;
if ($_SESSION[accesso]) {
$_SESSION[accesso]=true;
...
In questo modo tutte le form al loro interno hanno come target _self e ogni volta viene ricaricata correttamente.
In una form do la possibilità di creare o cancellare un file, utilizzo i comandi fopen, fclose e unlink.
Succede sempre che la prima modifica che faccio, sia essa creare o cancellare un file, me la concede. Al secondo submit però mi ricarica la pagina dandomi il messaggio di errore scritto da me come se il secondo if fosse falso (quindi io ipotizzo che sia caduta la sessione).
Codice di creazione:
Citazione:
Quote:
$accesso=fopen($indirizzo, 'w') or die("Impossibile aprire il file");
fwrite($accesso, $stringa1);
fclose($accesso);
Codice di cancellazione:
Citazione:
Quote:
$accesso = fopen($elemento[url], 'w') or die("Impossibile aprire il file");
fclose($accesso);
unlink($elemento[url]);
Avete delle idee sul perchè questo accada e come risolvere?
Tutto funzionava prima dell'inserimento di questi script e le variabili che utilizzo sono tutte settate.
Grazie a tutti quelli che hanno avuto la voglia di leggere fino qui http://forumtgmonline.futuregamer.it...icon_smile.gif
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)
non conosco php, ma se funziona come jsp il problema potrebbe essere il post.
Vediamo se riesco a spiegarmi:
nella pagina di amministrazione avrai i tag:
<input type.....name="login" >
<input..........name="password">
quando passi alla seconda pagina, questa correttamente di legge le request passate
$_POST['login'] e
$_POST['password']
con i "value" 'autorizzato' e 'password'
Ne segue che il tuo codice funziona
Citazione:
Quote:
if (($_POST['login']=='autorizzato') && ($_POST['password']=='password')) $_SESSION[accesso]=true;
quando la seconda pagina ricarica sè stessa, se non ha i tag:
<input type.....name="login" >
<input..........name="password">
la request da risultato null e il programma si inchioda.
la soluzione potrebbe essere quella di inserire i valori di login e password in parametri di sessione e poi controllare questi.
dovresti fare una cosa del tipo (non so se è corretto)
Citazione:
Quote:
if (($_SESSION[login] is null) or ($_POST['login'] is not null) ){
$_SESSION[login]=$_POST['login'];
}
e poi controllare le session:
Citazione:
Quote:
if (($_SESSION['login']=='autorizzato') && ($_SESSION['password']=='password')) $_SESSION[accesso]=true;
spero di essere stato chiaro
nota:
ti ho proposto di lavorare con le session perchè i tag (anche se hidden) sono visibili leggendo il source
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)
Il problema così non si risolve perchè se noti uso già la sessione, il secondo if è fuori dal primo! Quindi quando ricarica se stessa è vero che mi da false al primo if, ma poi cerca la seconda che è true perchè la variabile di sessione è inizializzata a true già da prima e non viene cambiata da nient'altro. Grazie comunque! http://forumtgmonline.futuregamer.it.../icon_wink.gif
Il problema poi l'ho risolto. Facevano conflitto le variabili $_SESSION[accesso] e $accesso che viene chiamato nel fopen e fclose. Ho cambiato il nome in $fileacc e funziona tutto http://forumtgmonline.futuregamer.it...icon_smile.gif
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)
Ho un altro problema con questa funzione, quindi non sto ad ammorbare il forum con un altro topic e ripesco questo.
In pratica fopen viene chiamata dando il nome di un file inesistente per crearlo. Sul mio localhost tutto funziona, mentre sullo spazio che ho su aruba no. Mi dice che è impossibile accedere al file.
Quindi io mi chiedo: 1) Perchè accade ciò? 2) Esiste un metodo alternativo per creare un file con php?
Ri-Edit: Trovato come abilitare la scrittura... Nella cartella contenitore i permessi sono settati "755" e il file che deve scrivere (admin.php) è "644". Bisognerebbe sapere: basta settare "755" anche su admin.php? E perchè mi dà questo messaggio?
Citazione:
Quote:
SITE chmod 755 admin.php
500 Unknown command.
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)
Citazione:
Mikk ha scritto lun, 06 marzo 2006 alle 20:26
Ho un altro problema con questa funzione, quindi non sto ad ammorbare il forum con un altro topic e ripesco questo.
In pratica fopen viene chiamata dando il nome di un file inesistente per crearlo. Sul mio localhost tutto funziona, mentre sullo spazio che ho su aruba no. Mi dice che è impossibile accedere al file.
Quindi io mi chiedo: 1) Perchè accade ciò? 2) Esiste un metodo alternativo per creare un file con php?
Ri-Edit: Trovato come abilitare la scrittura... Nella cartella contenitore i permessi sono settati "755" e il file che deve scrivere (admin.php) è "644". Bisognerebbe sapere: basta settare "755" anche su admin.php? E perchè mi dà questo messaggio?
Citazione:
Quote:
SITE chmod 755 admin.php
500 Unknown command.
se è come unix/linux 777
i codici sono:
1=esecuzione
2=scrittura
4=lettura
così 755 vuol dire:
io posso fare quello che voglio, il mio gruppo e gli altri possono eseguire i file e leggerli (1+4)
edit: dimenticavo la cosa piùimportante.
Se setti 777 al file admin.php, non vuol dire che il codice inserito nel file può fare tutto, ma che qualunque persona che entra nella cartella può eseguire/leggere/modificare il file in questione.
I permessi non li dai al file, ma agli utenti.
edit2 http://forumtgmonline.futuregamer.it..._icons/asd.gif
teoricamente i processi web vengono assegnati all'utente system.
dovresti quindi dare i permessi a questo utente.
Se nessuno sa darti info più dettagliate, chiedi a qualche sistemista (magari nel forum sicurezza)
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)
Alla fine ho optato per una risoluzione diversa... Tutte le modifiche provo a farle passare per il database, dato che lì ho possibilità di scrittura senza dover settare permessi pericolosi agli utenti/a chiunque...
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)
...io dovrei fare una cosa simile, ho delle pagine che vengono aperte dopo aver inserito user e password, ma ovviamente non devono essere accessibili inserendo l'indirizzo assoluto nella barra, da quello che ho visto dovrei farlo con php ma non so praticamente nulla di questo linguaggio e vorrei evitare di leggere guide e manuali vari http://forumtgmonline.futuregamer.it...n_rolleyes.gif (tra parentesi php richiede l'installazione di qualche framework o roba del genere??). http://forumtgmonline.futuregamer.it...lookaround.gif
Qualcuno potrebbe spiegarmi passo passo cosa dovrei aggiungere al codice html?
Ovvio se conoscete qualche sito che spiega come farlo va benissimo anche quello! http://forumtgmonline.futuregamer.it...on_biggrin.gif http://forumtgmonline.futuregamer.it...n_rolleyes.gif
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)
La question con php è abbastanza semplice (sì, richiede moduli aggiuntivi ma questi sono presenti quasi ovunque quindi non è un grosso problema). In pratica ti fai una form coi tuoi input di tipo "text" (gli dai come name "login" e "password") e il tuo submit e gli dici che l'azione la porta a una pagina di admin .php, con metodo "post".
A questo punto fai un semplice if: se le variabili $_POST['login'] e $_POST['password'] sono giuste metti che si visualizza quello che vuoi, altrimenti gli fai stampare un messaggio d'errore. In questo modo chi prova ad accedere alla pagina senza inserire la password ma scrivendo l'url sull barra non può accedere alle informazioni.
Non è certo il massimo della sicurezza, ma è abbastanza affidabile (tieni conto che gli utenti il codice php non lo vedranno mai, quindi non possono spaire quali sono login e password esatte).
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)
Citazione:
Mikk ha scritto mer, 19 aprile 2006 alle 10:27
La question con php è abbastanza semplice (sì, richiede moduli aggiuntivi ma questi sono presenti quasi ovunque quindi non è un grosso problema). In pratica ti fai una form coi tuoi input di tipo "text" (gli dai come name "login" e "password") e il tuo submit e gli dici che l'azione la porta a una pagina di admin .php, con metodo "post".
A questo punto fai un semplice if: se le variabili $_POST['login'] e $_POST['password'] sono giuste metti che si visualizza quello che vuoi, altrimenti gli fai stampare un messaggio d'errore. In questo modo chi prova ad accedere alla pagina senza inserire la password ma scrivendo l'url sull barra non può accedere alle informazioni.
Non è certo il massimo della sicurezza, ma è abbastanza affidabile (tieni conto che gli utenti il codice php non lo vedranno mai, quindi non possono spaire quali sono login e password esatte).
grazie della risposta http://forumtgmonline.futuregamer.it...s/icon_nod.gif
ma quindi dovrei utilizzare le session anch'io o posso farlo senza http://forumtgmonline.futuregamer.it..._surprised.gif http://forumtgmonline.futuregamer.it...n_question.gif
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)
Citazione:
thexman ha scritto mer, 19 aprile 2006 alle 11:23
Citazione:
Mikk ha scritto mer, 19 aprile 2006 alle 10:27
La question con php è abbastanza semplice (sì, richiede moduli aggiuntivi ma questi sono presenti quasi ovunque quindi non è un grosso problema). In pratica ti fai una form coi tuoi input di tipo "text" (gli dai come name "login" e "password") e il tuo submit e gli dici che l'azione la porta a una pagina di admin .php, con metodo "post".
A questo punto fai un semplice if: se le variabili $_POST['login'] e $_POST['password'] sono giuste metti che si visualizza quello che vuoi, altrimenti gli fai stampare un messaggio d'errore. In questo modo chi prova ad accedere alla pagina senza inserire la password ma scrivendo l'url sull barra non può accedere alle informazioni.
Non è certo il massimo della sicurezza, ma è abbastanza affidabile (tieni conto che gli utenti il codice php non lo vedranno mai, quindi non possono spaire quali sono login e password esatte).
grazie della risposta
http://forumtgmonline.futuregamer.it...s/icon_nod.gif
ma quindi dovrei utilizzare le session anch'io o posso farlo senza
http://forumtgmonline.futuregamer.it..._surprised.gif http://forumtgmonline.futuregamer.it...n_question.gif
Puoi anche fare senza, certo dipende anche da quante e quali cose dovrai far fare in quella pagina. Diciamo che se ti serve un refresh o più di una pagina allora dovrai usare le sessioni.
Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)