Visualizzazione risultati 1 fino 6 di 6

Discussione: Creare pannello di controllo utente su files di testo

  1. #1
    Guest

    Predefinito Creare pannello di controllo utente su files di testo

    Salve a tutti ragazzi,
    scrivo perchè sarei davvero contento se qualcuno di voi mi aiutasse.
    Inanzitutto dico subito che ho già provato a cercare, ma non ho trovato quello che volevo, anche perchè è una cosa un pò particolare.
    Io uso un form di registrazione e login utente in php non su database MySql (perchè non ci capisco niente) ma sul files di testo. Ecco, il form funziona alla perfezione, solo che mi piacerebbe sapere se oltre al semplice form di registrazione e login si potesse creare anche un semplice pannello di controllo (sempre basato su files di testo)
    Per esempio, dopo aver effettuato il login l'utente viene reindrizzato ad una pagina dove trova qualche input di testo dove modificare che ne so il nome l'email ecc...
    Poi le informazioni vengono salvate in un altro files di testo.
    Spero di essere stato chiaro.
    Comunque posto il codice che uso se può essere utile per aiutarmi (prelevato sempre da Altervista)

    login.php
    Codice PHP:
    <?php
    session_start
    ();
    if(@
    $_SESSION['log'] == '1') {//se l'utente ha gia effetuato il login
    header("Location: http://".$_SERVER['HTTP_HOST']."/index.php");//lo mando alla index.php
    } else {
    if(isset(
    $_POST['submit'])) {//se il form è stato submistato il form
    $username=htmlentities($_POST['username']);//raccolgo i dati inviati via post
    $password=htmlentities($_POST['password']);
    $file='utenti.txt';
    $utenti=file($file);
    $crypt_pass = md5($password);
    $log = false;
    $error = false;
    foreach(
    $utenti as $valore) {
    $valore = @substr($valore, 0, strlen($valore)-1);
    @list(
    $username_file, $password_file, $email, $codice, $attivo)=@explode(',', $valore);//listo i dati dell utente
    if($username_file == $username && $password_file == $crypt_pass) {//verifico se l'utente corisponde a quello scelto
    if($attivo != '1') {//se l'utente non attivato l'user
    $error = "active";
    } else {
    $log=true;
    $_SESSION['log'] = '1';//setto le sessioni
    $_SESSION['username'] = $username;
    $_SESSION['email'] = $email;
    }
    } else {
    $error = "usrpsw";
    }
    }
    if(
    $log == true) {
    echo
    "Login effettuato con successo..";
    } else {
    switch(
    $error) {
    case
    'active':
    echo
    "Non hai ancora confermato tramite e-mail";
    break;
    case
    'usrpsw':
    echo
    "Combinazione username e password sbagliati";
    break;
    case
    false:
    echo
    "Login fallito";
    break;
    }
    $retry = true;
    }
    }
    if(!isset(
    $_POST["submit"]) || isset($retry)) {
    ?>
    <form method="post" action="">
    <table width="273" border="0">
    <tr>
    <td width="50%">Username:</td>
    <td width="50%"><input name="username" type="text" /></td>
    </tr>
    <tr>
    <td>Password:</td>
    <td><input name="password" type="password" /></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><input type="submit" value="Invia" name="submit" /></td>
    </tr>
    </table>
    </form>
    <?php }
    }
    ?>]
    Il codice della registrazione è presente nel messaggio qui sotto.
    Grazie mille e complimenti per il vostro lavoro.
    Ultima modifica di andreafallico : 10-01-2012 alle ore 23.31.03

  2. #2
    Guest

    Predefinito

    ecco qui il codice della registrazione
    registrazione.php
    Codice PHP:
    <?php
    $error
    = false;
    $reg = false;
    function
    is_mail($mail) {
    $mail = htmlentities($mail);
    $ok[0] = "it";
    $ok[1] = "com";
    $ok[2] = "net";
    $ok[3] = "org";
    $i = true;
    foreach(
    $ok as $v) {
    if(
    $i == true) {
    $i = false;
    $stringa = $v;
    } else {
    $stringa = $stringa."|".$v;
    }
    }
    $eval = ".+@.+\.(".$stringa.")";
    if(@
    ereg($eval,$mail)) {
    return
    true;
    } else {
    return
    false;
    }
    }

    $file="utenti.txt";

    $apri=fopen($file, 'a+');

    $tyr = false;
    if(!isset(
    $_GET["step"])) {
    $_GET["step"] = "reg";
    }
    if(
    $_GET['step'] == "conf") {
    $username = htmlentities(trim($_GET['username']));
    $codice = htmlentities(trim($_GET['codice']));
    $array = file($file);
    $log="0";
    $rc = file_get_contents($file);
    foreach(
    $array as $valore) {
    $valore = @substr($valore, 0, strlen($valore)-1);
    @list(
    $username_file, $password, $email, $codice_file, $attivo)=@explode(',', $valore);
    if(
    $username_file == $username and $codice_file == $codice && $attivo == 0 && $tyr == false) {
    $log = 3;
    $old = $username_file.",".$password.",".$email.",".$codice_file.",".$attivo;
    $new = $username_file.",".$password.",".$email.",".$codice_file.",1";
    $vr = str_replace($old,$new,$rc);
    $fh = fopen($file,"w+");
    fwrite($fh,$vr);
    fclose($fh);
    $tyr = true;
    }
    }
    if(
    $tyr == true) {
    echo
    "Account confermato con successo.";
    } else {
    echo
    "Impossibile confermare l'account.";
    }
    exit;
    } else {
    if(isset(
    $_POST['submit'])) {//se il form è stato submistato il form
    $username=htmlentities($_POST['username']);//raccolgo i dati inviati via post
    $password=htmlentities($_POST['password']);
    $rip_password=htmlentities($_POST['rip_password']);
    $email=htmlentities($_POST['email']);
    if(
    $username == '' or $password == '' or $email == '') {//se uno o piu campi sono vuoti
    $errror = "empty";
    } else {
    if(
    $password != $rip_password) {//se le due password sono uguali
    $error = "pswn";
    } else {
    if(
    strpos($username, ',') !== false or strpos($password, ',') !== false or strpos($email, ',') !== false or strpos($username, ';') !== false or strpos($password, ';') !== false or strpos($email, ';') !== false) {//se i dati contengono ',' o ';'

    $error = "char";
    } else {
    if (!
    is_mail($email)) {//se la sintassi dell'email è scorretta
    $error = "email";
    } else {
    if(
    strlen($username) < 4) {//se l'username a meno di 4 caratteri
    $error = "us4";
    } else {
    if(
    strlen($password) < 4) {//se la password a meno di 4 caratteri
    $error = "ps4";
    } else {
    $file='utenti.txt';
    $array = file($file);
    foreach(
    $array as $valore) {
    $valore = @substr($valore, 0, strlen($valore)-1);
    @list(
    $username_file, $password_file, $email_file, $codice_file, $attivo_file)=@explode(',', $valore);//listo i dati dell'utente
    if($username_file == $username) {//se l'uesrname è gia stato scelto
    $error = "usnv";
    }
    if(
    $email_file == $email) {//se l'email è gia stata usata
    $error = "emnv";
    }
    }
    if(
    $error == false) {
    $reg = true;
    }
    }

    }
    }
    }
    }
    }
    }
    if(
    $reg == true) {
    $crypt_password=md5($password);//cripto la password
    $arraycodice=array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    $codice = "";
    for(
    $i=0; $i<30; $i++) {
    $randcodice=rand(0,count($arraycodice)-1);
    $codice.=$arraycodice[$randcodice];//creo il codice di conferma
    }
    $fh = fopen("utenti.txt","a+");
    fwrite($fh,"\n".$username.','.$crypt_password.','.$email.','.$codice.',0;');//scrivo sul file
    fclose($fh);//chiudo il file
    @list($sito, $inutile)=@explode('.', $_SERVER['HTTP_HOST']);//listo nome del sito e la parte inutile
    $testo="<p>Ciao ".$username."!<br> Questa &egrave; l'emai di conferma del sito <a href=http://\"".$_SERVER['HTTP_HOST']."\">".$sito."</a>.<br>Per completare la registazione clicca <a href=\"http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."?step=conf&username=".$username."&codice=".$codice."\">Qui</a>!<br><p align=right>Lo Staff</p></p>";//creo il testo dell email
    $head="MIME-Version: 1.0
    Content-Type: text/html; charset=\"iso-8859-1\""
    ;
    # mail($email, 'Conferma registrazione', $testo, $head);//invio l'email
    echo "Ti &egrave; stata spedita un email dove troverai un link per confermare il tuo indirizzo email!";
    } else {
    if(isset(
    $_POST["submit"])) {
    switch(
    $error) {
    case
    'empty':
    echo
    "Riempi tutti i campi!";
    break;
    case
    'pswn':
    echo
    "Le due password non sono uguali!";
    break;
    case
    'char':
    echo
    "Non puoi usare i caratteri '<strong>,</strong>' e '<strong>;</strong>'!";
    break;
    case
    'email':
    echo
    "La sintassi dell'email non &egrave; corretta!";
    break;
    case
    'us4':
    echo
    "Username deve avere piu di 4 caratteri!";
    break;
    case
    'ps4':
    echo
    "La password deve avere piu di 4 caratteri!";
    break;
    case
    'usnv':
    echo
    "Username gi&agrave; scelto!";
    break;
    case
    'emnv':
    echo
    "La e-mail &egrave; gi&agrave; in uso!";
    break;
    case
    false:
    echo
    "Registrazione fallita!";
    break;
    }
    $retry = true;
    }
    }
    if(!isset(
    $_POST["submit"]) || isset($retry)) {
    ?>
    <form method="post" action="">
    <table width="273" border="0">
    <tr>
    <td width="50%">Username:</td>
    <td width="50%"><input name="username" type="text" /></td>
    </tr>
    <tr>
    <td>Password:</td>
    <td><input name="password" type="password" /></td>
    </tr>
    <tr>
    <td>Ripeti Password:</td>
    <td><input name="rip_password" type="password" /></td>
    </tr>
    <tr>
    <td>Email:</td>
    <td><input name="email" type="text" /></td>
    </tr>
    <tr>
    <td align="right"><input type="reset" value="Reset" /></td>
    <td><input type="submit" value="Registrati" name="submit" /></td>
    </tr>
    </table>
    </form>
    <?php }
    }
    ?>

  3. #3
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Non fare up, edita semplicemente il messaggio.

    Non ti consiglio di fare un sistema di login e registrazione, suppongo multi-utenti, con dei semplici file di testo, se mai i file di testo li puoi utilizzare per gestire una quantità limitata di dati, ed per alcune operazione sono molto scomodi, a differenza da mysql ( o se non puoi utilizzare mysql utilizza, non so, ad esempio sqlite )

    Ti consiglio più che altro di studiarti i linguaggi che ti interessano ( mysql, e altri.. ).

    Un panello di controllo utente, certo che è possibile, con quei dati puoi fare tutto quello che vuoi, solo di consiglio di utilizzare mysql e di studiartelo, se come hai detto te non ci capisci niente.
    Ultima modifica di sevenjeak : 10-01-2012 alle ore 21.44.33

    Sevenjeak
    Software developer and much more

  4. #4
    Guest

    Predefinito

    Grazie mille, cercherò di capire qualche cosa studiandomi MySql
    Una cosa, tu giustamente mi hai consigliato di non creare un pannello multiutente con files di testo, sono d'accordo naturalmente con te, solo una cosa però. E' comunque possibile farlo con files di testo (ma sconsigliato) o proprio ad un certo punto ci vuole per forza un database senza files di testo? Perchè visto che di MySql momentaneamente non ci capisco molto vorrei comunque provare a fare con files di testo, prima di capire bene come fare con MySql.
    Solo una cosa ancora, dopo aver fatto tutto vorrei che ogni nuovo account venga reindrizzato alla sua pagina, ho già trovato un topic con questa domanda ma lì bisognava "aggiungere" a mano ogni nuovo utente come per esempio if($user == "quellochevuoi" AND $password == $password_)
    header("Location: suapagina.html");
    Ecco, proprio così vorrei che ogni nuovo profilo venga reindrizzato alla sua pagina, solo che deve essere automatico e non devo io ad ogni nuovo utente fare il procedimento php come qui sopra. Sempre se non ti disturbo potresti farmi un esempio pratico di come reindrizzare appunto ogni nuovo utente automaticamente ad una nuova pagina?
    Grazie mille e ancora complimenti.

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da talkpluginorange Visualizza messaggio
    E' comunque possibile farlo con files di testo (ma sconsigliato) o proprio ad un certo punto ci vuole per forza un database senza files di testo?
    E' possibile, ma le problematiche che possono presentarsi aumentano con l'aumentare dei dati.

    Dovresti inserire una miriade di procedure per rendere il sistema simile ad un dbms senza poter approfittare mai del suo vero punto di forza: il linguaggio SQL.

    Inoltre i files di testo presentano alcune inconvenienze, del tipo che a differenza dei dbms se ricevono due richieste di scrittura in contemporanea si spaccano, mentre mysql ad esempio ha di base una gestione sequenziale delle query.

    Inoltre, con l'aumentare delle dimensioni diventa sempre più stressante, in termini di risorse, lavorare su file di testo in quanto automaticamente bisognerà caricarlo ogni volta per intero nella ram per poterci fare le operazioni richieste sopra.

    Come già consigliato in sostanza, per gestire pochi dati possono essere utili visto che comunque hanno l'unico vantaggio di essere rapidi da processare in fase di lettura, ma per cose appena più complesse ti complicano di molto la vita.

  6. #6
    Guest

    Predefinito

    Grazie mille! Veramente mi state aiutando tantissimo.
    Allora, quindi un pò ieri sera un pò oggi mi sono studiato MySql.
    Diciamo qualcosa ho capito, ma veramente una cosa non la capisco.
    Per esempio, quando ci connettiamo al database scrivo:
    [PHP]<?

    // connettiamoci il nostro database

    $db_host = "localhost";
    $db_user = "root";
    $db_password = "pass";
    $db_name = "my_db";

    //connetto il database
    $db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
    mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');[PHP]
    Ecco, visto che io sto facendo la prova non solo su Altervista ma anche su un altro mio sito che ha l'hosting su Aruba (però uso quasi sempre Altervista), c'è, dove è scritto $db_name = "my_db"; devo mettere il nome del database o il nome della tabella che creo? Veramente solo in questo passaggio non ho le idee chiare, non solo se devo mettere il nome del database o della tabella, ma anche dove è scritto $db_password = "pass"; devo mettere la password del database o devo lasciare così come è? Grazie mille

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •