Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    login e sessioni (con i file di testo)

    Ciao a tutti, ho cercato un po' su internet e provando i vari script non sono riuscito comunque a capire come realizzare in qualche modo un login (innanzitutto e poi logout) con le sessioni... c'è qualcuno di così gentile da potermi dare una mano ad inserire nei posti giusti le varie righe di codice in maniera da far funzionare correttamente lo script?
    Di sotto vi riporto le pagine, HTML e PHP. (Non ci sono le sessioni)

    Grazie in anticipo per l'aiuto!

    acc_utente.html

    codice:
    <form name="accesso_utente" action="acc_utente.php" method="POST">
      
      <input name="user" maxlength="15" size="10" type="text"> Inserisci il tuo username 
    
    
      <input size="10" maxlength="15" name="pass" type="password"> Inserisci la tua password 
    
    
    
     <input value="Accedi" type="submit">
      <input value="Cancella" type="reset">
      
      </form>


    acc_utente.php

    Codice PHP:

    <?php

    $user
    =$_POST['user'];
    $pass=$_POST['pass'];

    $fp=fopen("cliente_pass.txt","r");//apertura file di testo user pass clienti

      
    $dati=file("cliente_pass.txt");//array dei clienti registrati
      
    $num_cli=count($dati);//numero dei clienti resigistrati

      
    flock($fp,2);//funzione che blocca il file in maniere che si possa scrivere senza accavallare i dati se 2 o più persone stanno usando il programma

    $trovato=false//variabile che viene portata a 1 nel caso in cui sia user che password siano corretti e l'utente può accedere

    for($i=0; !$trovato && $i<$num_cli$i++) 

      
    $stringa_div=explode("**",$dati[$i]); 
      
      
    $check_user=($stringa_div[0]==$user); 
      
    $check_pass=(trim($stringa_div[1])==trim($pass));
        
      
    $trovato=($check_user && $check_pass); 
    }

     
    flock($fp,3);//sblocca permettendo a prossimi dati di essere iscritti nel file di testo 
      
    fclose($fp);//chiusura del file di testo
      
      
    $fp=fopen("dati_cliente.txt","r");//apertura del file di testo delle generalità dei clienti
        
        
    $gen=file("dati_cliente.txt");
        
    $i--;//$i aveva concluso l'ulimo ciclo con l'indice maggiore di uno, viene quindi riportato indietro per permettere di prelevare i dati da un'altro file di testo senza l'utilizzo di un'altra variabile
        
        
    $stringa=explode("**",$gen[$i]);
        
      
    fclose($fp);
      
      
      if(
    $trovato==true)
        echo
    "Benvenuto gentile cliente $stringa[0] $stringa[1], ora pu&ograve; 
        accedere al centro acquisti del nostro e-commerce."
    ;


        
    ?>

  2. #2
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Ciao. Posso farti una domanda? Perchè salvi i dati degli utenti in un file di testo? Salvarli in un database mysql non sarebbe più comodo e molto più sicuro?

  3. #3
    Hai pienamente ragione, so che mysql sarebbe il meglio, solo che essendo un esercizio scolastico devo farlo con i file di testo... ma il problema non è tanto quello, è mysql non ho la minima idea di come si usi purtroppo... comunque il problema non riguarda il file di testo (credo e spero che con le sessioni si possano utilizzare in una maniera non impossibile) ma riguarda proprio l'utilizzo delle sessioni. riesci a darmi una mano? sono pronto a tutto!

  4. #4
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Originariamente inviato da guido_ray
    Hai pienamente ragione, so che mysql sarebbe il meglio, solo che essendo un esercizio scolastico devo farlo con i file di testo... ma il problema non è tanto quello, è mysql non ho la minima idea di come si usi purtroppo... comunque il problema non riguarda il file di testo (credo e spero che con le sessioni si possano utilizzare in una maniera non impossibile) ma riguarda proprio l'utilizzo delle sessioni. riesci a darmi una mano? sono pronto a tutto!
    Va bene, fai come preferisci tu. Però in futuro per imparare a usare mysql puoi leggere queste guide:
    - Guida MySQL: http://database.html.it/guide/leggi/87/guida-mysql/
    - Guida PHP e MySQL pratica: http://php.html.it/guide/leggi/77/gu...mysql-pratica/
    - Guida PhpMyAdmin: http://php.html.it/guide/leggi/78/guida-phpmyadmin/

    Tornando alle sessioni. Tu, una volta controllata la correttezza dei dati inseriti durante il login, registri le sessioni in questo modo:
    Codice PHP:
    session_start();
    $_SESSION = array();
    session_regenerate_id();
    $_SESSION['user'] = $user;
    $_SESSION['pass'] = $pass// prima però ti conviene criptare la password con md5() per sicurezza 
    Poi quando controlli se l'utente è loggato:
    Codice PHP:
    session_start();
    if (isset(
    $_SESSION['user']) && isset($_SESSION['pass'])) {
    // l'utente è loggato....
    }
    else {
    // l'utente non è loggato....

    Per il logout:
    Codice PHP:
    // elimini le sessioni
    session_start();
    $_SESSION = array();
    session_regenerate_id();
    session_destroy(); 

  5. #5
    Ok, grazie, ci proverò!

  6. #6
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Prego, non c'è di che. Fammi sapere poi.

  7. #7
    sono passati 20 giorni e ho potuto solo ora provarle, sono al primo passaggio e non funzione, naturalmente avrò sbagliato qualcosa ma non trovo l'errore... posto il codice...

    Codice PHP:
    <html>
      <body>
        <?php
      
      
          $user
    =$_POST['user'];
    $pass=$_POST['pass'];

    $fp=fopen("cliente_pass.txt","r");//apertura file di testo user pass clienti

      
    $dati=file("cliente_pass.txt");//array dei clienti registrati
      
    $num_cli=count($dati);//numero dei clienti resigistrati

      
    flock($fp,2);//funzione che blocca il file in maniere che si possa scrivere senza accavallare i dati se 2 o più persone stanno usando il programma

    $trovato=false//variabile che viene portata a 1 nel caso in cui sia user che password siano corretti e l'utente può accedere

    for($i=0; !$trovato && $i<$num_cli$i++) 

      
    $stringa_div=explode("**",$dati[$i]); 
      
      
    $check_user=($stringa_div[0]==$user); 
      
    $check_pass=(trim($stringa_div[1])==trim($pass));
        
      
    $trovato=($check_user && $check_pass); 
    }

     
    flock($fp,3);//sblocca permettendo a prossimi dati di essere iscritti nel file di testo 
      
    fclose($fp);//chiusura del file di testo
      
      
      
      
    if($trovato==true)
      {
        
    session_start(); 
        
    $_SESSION = array(); 
        
    session_regenerate_id(); 
        
    $_SESSION['user'] = $user
        
    $_SESSION['pass'] = $pass
      }







      
    ?>
      
      
          <form action="#" method="POST">
          <input type="text" name="user"> user 

          <input type="text" name="pass"> pass 

          <input type="submit" value="invia" name="send">
           
          </form>

      
      
      
      
      </body>
    </html>


    l'errore che mi esce:



    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\php\moroni\ppppp\login.php:3) in C:\xampp\htdocs\php\moroni\ppppp\login.php on line 36

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\php\moroni\ppppp\login.php:3) in C:\xampp\htdocs\php\moroni\ppppp\login.php on line 36

    Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent in C:\xampp\htdocs\php\moroni\ppppp\login.php on line 38

  8. #8
    session_start(); devi metterlo prima del tag HTML,.

    Se c'è un output non funziona ;-)

  9. #9
    si, così funziona, il problema è riscontra di nuovo un errore sulla funzione "session_regenerate_id(); "

    a cosa serve?

    Grazie mille per l'aiuto che mi stai fornendo!

  10. #10
    ora mettendoci un po' le mani su sono riuscito a farlo funzionare, non rimane che inserirlo nel mio sito, ma credo sia perfetto grazie ancora, se avrò ancora bisogno chiederò, un ringraziamento anche a costi31 per avermi fornito il codice, alla prossima!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.