Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22

Discussione: database testuale

  1. #11
    funziona solo se l'utente è al primo rigo del database testuale (utenti.txt)... per tutti gli altri nomi (registrati o no) esce sempre "resto dello script"...

    $user è un array che contiene TUTTI gli elementi del database, non solo i nomi ma anche le password,, le email, etc etc

    $user[0] = tizio

    $user[1] = passtizio

    $user[2] = tizio@email.it

    ...

    $user[7] = caio

    $user[8] = passcaio

    etc etc

    :-(

  2. #12
    *devi* cambiare endline.

    vedrai che con un piccolo sforzo e un paio di ricerche capirai perche` $user contiene l'intero file e cosa c'e` di sbagliato nel tuo approccio.

    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  3. #13
    ti ringrazio per l'augurio...

    ma io ci rinuncio...

  4. #14
    Ma che discorso è "io ci rinuncio"?

    Ci fai le domande, ti diamo anche la risposta. E ci rinunci?
    O ci dici che hai trovato un metodo migliore, o fai almeno il piccolo sforzo di cercare di capire cosa ti diciamo, no?

    Per far funzionare quel codice, che funziona, eseguendo un solo piccolo comando, bastava leggersi il manuale (1 paginetta di testo) fino in fondo (le 'Note' non ce le mettono a caso).
    Ti dice che se hai il problema del riconoscimento delle linee significa che non fa il controllo del tipo di "ritorno a capo" gestito dal sistema operativo.

    Basta agire sulla variabile di configurazione 'to_detect_line_endings' per far fare in automatico tutto quello che ti ha suggerito 'Mutato'.

  5. #15
    Hai ragione in tutto ma era una risposta dettata dall'esasperazione di due giorni di tentativi...

    Ammetto che non sono per nulla ferrato con il php e quando provo qualcosa vado di tentativo in tentativo (migliaia e non sempre con risultati positivi).
    L'endline non sò cosa sia (o probabilmente lo chiamo diversamente).

    Il massimo che sono riuscito ad ottenere con le mie conoscenze precarie di php è stato questo

    <?php

    $nome = ballo;
    $uid = "$nome|";
    $contenuto = file_get_contents("utenti.txt");

    if (substr_count($contenuto,$uid)>1) {echo "utente già registrato";}
    else {echo "utente non registrato";}
    ?>


    Però sò benissimo che è sbagliato. Infatti se pensiamo al mio database testuale così:

    tizio|passtizio|tizio@email.it|-----nulla-----|-----nulla-----| ||no
    caio|passcaio|caio@email.it|-----nulla-----|-----nulla-----| ||no
    mario|passmario|mario@email.it|-----nulla-----|-----nulla-----| ||no
    peppe|passpeppe|peppe@email.it|-----nulla-----|-----nulla-----| ||no
    luca|passluca|luca@email.it|-----nulla-----|-----nulla-----| ||no
    giovanna|passgiovanna|giovanna@email.it|-----nulla-----|-----nulla-----| ||no


    Siccome c'è il nome "giovanna" questo sistema mi mi dirà che "anna" è un "utente già registrato"... ma nn è così...

  6. #16
    Non e` molto difficile
    http://en.wikipedia.org/wiki/Newline

    In pratica, molto terra terra, end-of-line (o newline o line break) e` quel carattere o quei caratteri che indicano al sistema che li` finisce una riga e ne inizia un'altra

    Se scrivi

    prima linea
    seconda linea

    in realta` stai scrivendo prima linea[end-of-line]seconda linea

    ora end-of-line puo` esprimersi principalmente in due modi:

    sui sistemi linux, unix, bsd come \n
    su windows come \r\n
    su mac come \r

    ne consegue che se vuoi dire al tuo PHP di spezzare il file (explode) quando incontra end-of-line DEVI indicargli qual e` end-of-line che si deve apettare.

    Oppure, puoi convertire end-of-line.

    Per esempio, se vuoi rendere sempre funzionante il codice visto sopra puoi cambiarlo come segue:

    Codice PHP:
      1 <?php
      2     $uid 
    trim($_POST['user']);
      
    3     $data str_replace(Array("\r\n","r"),"\n",file_get_contents('utenti.txt'));
      
    4     foreach(explode("\n",trim($data)) as $users){
    con la riga 3 sostituisci \r\n e \r con \n, quindi explode dovrebbe funzionare a meraviglia.

    Tutto qui.
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  7. #17
    Originariamente inviato da oly1982
    Hai ragione in tutto ma era una risposta dettata dall'esasperazione di due giorni di tentativi...
    Ti capisco. Ma beh, non spererai mica che programmare sia una cosa semplice?
    I mal di testa sono assicurati. Ma anche le grandi soddisfazioni.
    Diciamo che concomitano....
    Ammetto che non sono per nulla ferrato con il php e quando provo qualcosa vado di tentativo in tentativo (migliaia e non sempre con risultati positivi).
    Non preoccuparti. Anche io ho cominciato così.
    Avevo un sito già fatto che volevo ampliare (in ASP però, non in PHP) e mi son iniziato a leggere il codice senza avere idea di come fosse la sintassi di ASP, la logica del software, o il funzionamento del web.
    Passo passo il meccanismo è moooolto semplice:

    1) Trovi una cosa che non conosci o non capisci
    2) La cerchi su internet
    3) Te la chiarisci tramite manuali, guide, tutorial, articoli, facendo domande su forum e newsgroup

    Deve diventare sistematico. Poi pian piano ti accorgi che non hai più bisogno di cercare, o che sai già dove andare, e ti basta poco per chiarirti un dubbio.
    L'endline non sò cosa sia (o probabilmente lo chiamo diversamente).
    Altro prerequisito per programmare: sapersi districare sull'inglese, e avere un pò di intuito

    Endline = End Line = Fine Riga = Ritorno a capo (o qualcosa del genere).

    Poi con un pò di intuito ti immedesimi nella struttura del file e ti immagini un file fatto come fosse una stringa unica con dei delimitatori a decretarne l'inizio e la fine.
    Poi ti chiederai come distingue le differenti righe?
    Sapendo che tutto funziona 'a caratteri' ci sarà un carattere o un insieme di caratteri che faranno da delimitatori della riga.
    Da lì a capire che quello su cui stai ragionando ed Endline sono la stessa cosa il passo è breve

    E' noioso.... ma se non lo fosse tutti sarebbero in grado di farlo

    Il massimo che sono riuscito ad ottenere con le mie conoscenze precarie di php è stato questo

    <?php

    $nome = ballo;
    $uid = "$nome|";
    $contenuto = file_get_contents("utenti.txt");

    if (substr_count($contenuto,$uid)>1) {echo "utente già registrato";}
    else {echo "utente non registrato";}
    ?>


    Però sò benissimo che è sbagliato. Infatti se pensiamo al mio database testuale così:

    tizio|passtizio|tizio@email.it|-----nulla-----|-----nulla-----| ||no
    caio|passcaio|caio@email.it|-----nulla-----|-----nulla-----| ||no
    mario|passmario|mario@email.it|-----nulla-----|-----nulla-----| ||no
    peppe|passpeppe|peppe@email.it|-----nulla-----|-----nulla-----| ||no
    luca|passluca|luca@email.it|-----nulla-----|-----nulla-----| ||no
    giovanna|passgiovanna|giovanna@email.it|-----nulla-----|-----nulla-----| ||no

    Siccome c'è il nome "giovanna" questo sistema mi mi dirà che "anna" è un "utente già registrato"... ma nn è così...
    Beh in questo modo sì. Ma se, come avevi fatto inizialmente, fai un confonto di uguaglianza stai sicuro che ritorna True/Vero solo se sono uguali, evitando il problema sopracitato.

    La soluzione di Mutato va benissimo

  8. #18
    continuo a non riuscirci...

    cmq il mio problema di fondo con il php in generale (a quanto ho capito) è che non sò usare gli "if"/"elseif"/"else" abbinati con i cicli (while, for, foreach,...).

    In pratica mi capita che i risultati si ripetono per un numero di righi pari al numero di cicli...

  9. #19
    Originariamente inviato da oly1982
    continuo a non riuscirci...

    cmq il mio problema di fondo con il php in generale (a quanto ho capito) è che non sò usare gli "if"/"elseif"/"else" abbinati con i cicli (while, for, foreach,...).
    Non puoi sperare di programmare in PHP se non sai neanche usare un ciclo iterativo.
    Da quali basi parti? Che cosa sai di programmazione in generale?
    Un minimo di teoria o di studi ce li hai?

    O vuoi programmare "dall'oggi al domani"?

    In quest'ultimo caso puoi fare come ti ho detto io sopra.... ma non sperare di saper programmare in una settimana....
    In pratica mi capita che i risultati si ripetono per un numero di righi pari al numero di cicli...
    Ovviamente: c'è un istruzione all'interno del ciclo. E il ciclo si ripete per lo stesso numero di righe che hai nel file.
    Che cos'altro ti aspettavi?

    Cosa non ti torna?

    Comunque così non va: devi essere specifico se vuoi risolvere il problema. Non puoi essere generico. Ci vogliono elementi.
    Altrimenti non è possibile immedesimarsi in te e in quel che vuoi fare.

    PS - Hai provato il codice iniziale, con le modifiche suggerite? Posta il codice! E che cosa ti stampa?

  10. #20
    ORE :10:17 di giovedì 3 dicembre...

    ci sono riuscitooooooooooooo!!!!!!!!!!!!!!!!

    ecco a voi...

    <?php
    $uid = trim("paolo");
    $data = str_replace(Array("\r\n","r"),"\n",file_get_conten ts('utenti.txt'));
    foreach(explode("\n",trim($data)) as $users){
    $user = explode("|",$users);
    if(trim($user[0]) == $uid){
    echo 'Utente registrato'."
    "; exit();
    }}


    echo 'Resto dello script'."
    ";


    ?>


    un grazie immenso va a PICTOR e MUTATO!!!


    Sto studiado php da 15 giorni... le mie "opere" sono:
    - un guestbook : http://italialockerz.altervista.org/.../guestbook.php
    - un meccanismo di login a ancora incompleto http://italialockerz.altervista.org/...orm3/login.php

    incompleto in quanto devo ancora capire bene come risolvere il problema di protezione della pagina post-login e dei link

    Il guestbook ed altre cose che sto provando (dato che non dispongo di database mysql si basano sempre su database testuali... e per questo sto cercando di esercitarmi)

    PS: se visiti il mio sito ci sono script presi da internet... quindi nulla di mio.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.