Risultati da 1 a 11 di 11
  1. #1
    Moderatore nel silenzio L'avatar di Mikk
    Data Registrazione
    17-11-01
    Località
    Van Diemen's Land
    Messaggi
    14,546

    Predefinito [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:

    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:
    Quote:

    $accesso=fopen($indirizzo, 'w') or die("Impossibile aprire il file");
    fwrite($accesso, $stringa1);
    fclose($accesso);
    Codice di cancellazione:
    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

  2. #2
    abaper
    ospite

    Predefinito 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
    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)
    Quote:

    if (($_SESSION[login] is null) or ($_POST['login'] is not null) ){
    $_SESSION[login]=$_POST['login'];
    }

    e poi controllare le session:
    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

  3. #3
    Moderatore nel silenzio L'avatar di Mikk
    Data Registrazione
    17-11-01
    Località
    Van Diemen's Land
    Messaggi
    14,546

    Predefinito 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!

    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

  4. #4
    Moderatore nel silenzio L'avatar di Mikk
    Data Registrazione
    17-11-01
    Località
    Van Diemen's Land
    Messaggi
    14,546

    Predefinito 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?
    Quote:
    SITE chmod 755 admin.php
    500 Unknown command.

  5. #5
    abaper
    ospite

    Predefinito Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)

    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?
    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
    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)

  6. #6
    Moderatore nel silenzio L'avatar di Mikk
    Data Registrazione
    17-11-01
    Località
    Van Diemen's Land
    Messaggi
    14,546

    Predefinito 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...

  7. #7
    Il Nonno L'avatar di thexman
    Data Registrazione
    25-08-02
    Località
    Solbiate Arno(VA)
    Messaggi
    4,776

    Predefinito 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 (tra parentesi php richiede l'installazione di qualche framework o roba del genere??).
    Qualcuno potrebbe spiegarmi passo passo cosa dovrei aggiungere al codice html?
    Ovvio se conoscete qualche sito che spiega come farlo va benissimo anche quello!

  8. #8
    Moderatore nel silenzio L'avatar di Mikk
    Data Registrazione
    17-11-01
    Località
    Van Diemen's Land
    Messaggi
    14,546

    Predefinito Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)

    thexman ha scritto mar, 18 aprile 2006 alle 11:54
    ...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 (tra parentesi php richiede l'installazione di qualche framework o roba del genere??).
    Qualcuno potrebbe spiegarmi passo passo cosa dovrei aggiungere al codice html?
    Ovvio se conoscete qualche sito che spiega come farlo va benissimo anche quello!
    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).

  9. #9
    Il Nonno L'avatar di thexman
    Data Registrazione
    25-08-02
    Località
    Solbiate Arno(VA)
    Messaggi
    4,776

    Predefinito Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)

    Mikk ha scritto mer, 19 aprile 2006 alle 10:27
    thexman ha scritto mar, 18 aprile 2006 alle 11:54
    ...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 (tra parentesi php richiede l'installazione di qualche framework o roba del genere??).
    Qualcuno potrebbe spiegarmi passo passo cosa dovrei aggiungere al codice html?
    Ovvio se conoscete qualche sito che spiega come farlo va benissimo anche quello!
    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
    ma quindi dovrei utilizzare le session anch'io o posso farlo senza

  10. #10
    Moderatore nel silenzio L'avatar di Mikk
    Data Registrazione
    17-11-01
    Località
    Van Diemen's Land
    Messaggi
    14,546

    Predefinito Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)

    thexman ha scritto mer, 19 aprile 2006 alle 11:23
    Mikk ha scritto mer, 19 aprile 2006 alle 10:27
    thexman ha scritto mar, 18 aprile 2006 alle 11:54
    ...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 (tra parentesi php richiede l'installazione di qualche framework o roba del genere??).
    Qualcuno potrebbe spiegarmi passo passo cosa dovrei aggiungere al codice html?
    Ovvio se conoscete qualche sito che spiega come farlo va benissimo anche quello!
    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
    ma quindi dovrei utilizzare le session anch'io o posso farlo senza
    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.

  11. #11
    Il Nonno L'avatar di thexman
    Data Registrazione
    25-08-02
    Località
    Solbiate Arno(VA)
    Messaggi
    4,776

    Predefinito Re: [PHP] Perdita della sessione con fopen? (Problema complicato inside)

    ok risolto, effettivamente non è molto difficile

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice HTML è Disattivato