Visualizzazione risultati 1 fino 17 di 17

Discussione: Inserire funzione "ricorda" nel campo login.

  1. #1
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Arrow Inserire funzione "ricorda" nel campo login.

    Salve a tutti.
    Ho creato questo form e adesso vorrei inserire un campo ricorda che appunto ricorda i dati fino alle ore 24 di quel giorno.
    Grazie.

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Nel form dovresti quindi aggiungere un ceckbox per spuntare se l'utente vuole ricordare di essere loggato. Per far questo, leggi qui.

    Poi, da PHP quindi devi controllare se è stato spuntato (con un semplice if) e quindi assegnare (se è stato spuntato il ceckbox) un cookie. Per questo leggi qui.

    Quindi, ogni volta che hai un visitatore, con un if devi controllare se ha il cookie settato. Se sì gli fai il login in automatico, altrimenti gli mostri il form per il login.

    Buona lettura .

    Poi se non riesci scrivi il sorgente fin dove sei arrivato e vediamo di darti una mano.

    Ciao!
    Ultima modifica di alemoppo : 05-01-2011 alle ore 17.48.22

  3. #3
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Arrow

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Nel form dovresti quindi aggiungere un ceckbox per spuntare se l'utente vuole ricordare di essere loggato. Per far questo, leggi qui.
    Questo lo so fare anche da solo. Grazie lo stesso. Ma...

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Poi, da PHP quindi devi controllare se è stato spuntato (con un semplice if) e quindi assegnare (se è stato spuntato il ceckbox) un cookie. Per questo leggi qui.
    Non c'è un sito in italiano? Magari HTML.it, ma questo che tipo di cookie è?
    Ho provato a usare Google Translate ma lascia desiderare...

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Quindi, ogni volta che hai un visitatore, con un if devi controllare se ha il cookie settato. Se sì gli fai il login in automatico, altrimenti gli mostri il form per il login.
    Esatto.

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Poi se non riesci scrivi il sorgente fin dove sei arrivato e vediamo di darti una mano.
    Innanzitutto, grazie mille per la vostra disponibilità!
    Se non sbaglio:
    nella pagina form.html dovrei soltanto aggiungere la checkbox con scritto "Ricorda!". Nella pagina registrazione.php invece che dovrei aggiungere e dove?

    Purtroppo ho finito di leggere la guida base del PHP su HTML.it da poco e non sono in grado di creare un codice vero e proprio. Dove devo aggiungere il codice in if? La check box dovrebbe avere le seguenti caratteristiche, giusto?
    Codice HTML:
    <td><span class="Stile1">
             <label>
             <input type="checkbox" name="ricorda" value="checkbox" />
             </label>
           Ricorda per 1 settimana</span></td>
    Magari vorrei fare che viene ricordato per 1 settimana.
    Oppure che viene ricordato finché l'utente non effettua il logout.
    GRAZIE MILLE ANCORA ALEMOPPO!
    Ultima modifica di radiodelmomento : 06-01-2011 alle ore 17.37.22

  4. #4
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Unhappy

    Allora, provo a crearlo io...
    Nella pagina form.html:
    Codice HTML:
    <td><span class="Stile1">
             <label>
             <input type="checkbox" name="ricorda" value="checkbox" />
             </label>
           Ricorda per 1 settimana</span></td>
    Ma appena alla pagina registrazione.php inserisco la stringa
    Codice PHP:
    $ricorda = $_POST['ricorda'];
    mi da errore. Anche se non ho aggiunto nient'altro.
    Se tolgo la stringa tutto funziona correttamente.
    Ultima modifica di radiodelmomento : 07-01-2011 alle ore 18.58.35

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Dove l'hai messo quel comando? Puoi scrivere tutto il sorgente della pagina?

    Ciao!

  6. #6
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Exclamation

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Dove l'hai messo quel comando? Puoi scrivere tutto il sorgente della pagina?

    Ciao!
    Certo.
    Codice PHP:
    $nick = $_POST['nome'];
    $nick = str_replace("|","",$nick);
    $nick = str_replace("\\","",$nick);
    $vpass = $_POST['pass'];
    $vpass = str_replace("|","",$vpass);
    $vpass = str_replace("\\","",$vpass);
    $pass = ($vpass);
    L'ho messo tra questi, in una parte casuale. Ora l'ho tolto perché sennò non funzionava. Dove lo devo mettere?
    Comunque ecco tutta la pagina:
    Codice PHP:
    <style type="text/css">
    <!--
    body {
    background-image: url(images/content-bg.jpg);
    }
    a:link {
    color: #FFFFFF;
    }
    a:visited {
    color: #FFFFFF;
    }
    a:hover {
    color: #FFFFFF;
    }
    a:active {
    color: #FFFFFF;
    }
    body,td,th {
    color: #FFFFFF;
    }
    -->
    </style>
    <div align="center"><?php
    function controlla_presenza($nick){
    $file = file("utenti.php");
    foreach(
    $file as $rigo) {
    $ex = explode("|",$rigo);
    if(
    $ex[1] == $nick) {
    return
    "presente";
    }
    }
    }
    function
    nick_pass_ok($nick,$pass) {
    $pass = ($pass);
    $file = file("utenti.php");
    foreach(
    $file as $rigo) {
    $ex = explode("|",$rigo);
    if(
    $ex[1] == $nick && $ex[2] == $pass) { return "ok"; }
    }
    }
    $nick = $_POST['nome'];
    $nick = str_replace("|","",$nick);
    $nick = str_replace("\\","",$nick);
    $vpass = $_POST['pass'];
    $vpass = str_replace("|","",$vpass);
    $vpass = str_replace("\\","",$vpass);
    $pass = ($vpass);
    if(
    $_POST['registrati'] || $_POST['login']){
    if(
    trim($nick) == "" || trim($pass) == "") {
    header("Location:form.html");
    }
    }
    if(
    $_POST['registrati']) {
    $check = controlla_presenza($nick);
    if(
    $check == "presente") { echo "Probabilmente hai poca fantasia: il nickname esiste!<br /><a href='form.html'>Clicca qui per eseguire il login.</a>"; exit(); }
    $fp = fopen("utenti.php","a+");
    fwrite($fp,"<?|".$nick."|".$pass."|\n");
    fclose($fp);
    echo
    "$nick ti sei registrato con successo! Ecco la tua password: $vpass.<br /><a href='form.html'>Clicca qui per eseguire il login.</a>";
    }else if(
    $_POST['login']) {
    $contr = nick_pass_ok($nick,$pass);
    if(
    $contr == "ok") { echo "$nick sei loggato, adesso puoi richiedere la tua canzone <a href='../RadioDJPanel/request.php' target='_top'>cliccando qui</a>!<br />Presto avrai anche un'area riservata.";
    }else{
    echo
    "Nickname o password errati!<br /><a href='form.html'>Clicca qui per eseguire di nuovo il login o la registrazione.</a>";
    }
    }
    ?>
    </div>
    Grazie ancora.

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Dovresti metterli dopo
    Codice PHP:
    if($_POST['registrati']) {
    ...

    Infatti quando apri la pagina senza inviare nessun dato, la variabile "$_POST['pass']" e "$_POST['nome']" non sono settate.

    Ciao!

  8. #8
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Arrow

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Dovresti metterli dopo
    Codice PHP:
    if($_POST['registrati']) {
    OK, adesso funziona.
    Codice PHP:
    if($_POST['registrati'] || $_POST['login']){
    $ricorda = $_POST['ricorda'];
    if(
    trim($nick) == "" || trim($pass) == "") {
    header("Location:form.html");
    }
    Ora dovrei fare funzionare il campo ricorda.
    Cioè se (if) il campo è stato compilato (checked, credo) (else) vai direttamente a registrazione.php accedendo all'area riservata. Come?

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Ecco, qui devi guardarti i cookie in PHP. La documentazione è questa, ma su google ne trovi molte anche in italiano (attento a cercare cookie php e non cookie generico, perché potrebero venirti fuori guide su altri linguaggi (tipo javascript...)).

    Ciao!

  10. #10
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Unhappy

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Ecco, qui devi guardarti i cookie in PHP. La documentazione è questa, ma su google ne trovi molte anche in italiano (attento a cercare cookie php e non cookie generico, perché potrebero venirti fuori guide su altri linguaggi (tipo javascript...)).

    Ciao!
    Quindi per settare un cookie per un giorno dovrei fare 3600x24, e verrebbe 86400.
    Codice PHP:
    setcookie("TestCookie", $value, time()+86400);
    Ora però io non so proprio come creare un cookie.

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Con quella funzione hai creato un cookie chiamato "TestCookie" ed il suo valore è quello interno alla variabile $value....

    Ciao!

  12. #12
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Exclamation

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Con quella funzione hai creato un cookie chiamato "TestCookie" ed il suo valore è quello interno alla variabile $value....

    Ciao!
    OK, ma con tutta questa discussione io non sono ancora riuscito a creare un campo ricorda funzionante...

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    OK, ma con tutta questa discussione io non sono ancora riuscito a creare un campo ricorda funzionante...
    Lo so.. Significa che non ti sei impegnato abbastanza nella ricerca.... Qui sul forum di solito non diamo la pappa pronta, anche perché lo scopo dovrebbe essere imparare cose. Se ti diamo il sorgente già pronto non imparerai mai niente.

    Ciao!

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Dovresti metterli dopo
    Codice PHP:
    if($_POST['registrati']) {
    ...

    Infatti quando apri la pagina senza inviare nessun dato, la variabile "$_POST['pass']" e "$_POST['nome']" non sono settate.

    Ciao!
    Infatti la cosa giuta è fare questo
    Codice PHP:
    if (isset($_POST['registrati'])) ....
    Isset determina se la variabile è settata o non è nulla.
    Per HTTP se una variabile è vuota non esiste, ovvero se non spunti il checkbox quando premi invio è come se non esistesse.
    Citazione Originalmente inviato da radiodelmomento
    Quindi per settare un cookie per un giorno dovrei fare 3600x24, e verrebbe 86400.
    Codice PHP:
    setcookie("TestCookie", $value, time()+86400);
    Ora però io non so proprio come creare un cookie.
    Ma l'hai appena fatto!
    setcookie accetta 7 valori in ingresso di cui uno solo è obbligatorio, cioè il primo, ovvero il nome del cookie.
    Nel caso metti sempre il nome del tuo sito non uno a caso, servirà a riconoscerlo.
    Quindi setcookie('radiodelmomento', .... secondo parametro il valore da memorizzare, attento perché questo sarà memorizzato sul pc di chi sta loggandosi (è ciò che vuoi no?) quindi non metterci la password dato che chiunque potrebbe leggersi il cookie, copiarlo su una chiavetta usb e usarlo al posto del "tuo amico", magari per il tuo semplice caso va bene persino 'checked' come valore!
    Ma se non ci associ il valore ad un nick, poi quando il sito legge il cookie come fa ad associarlo ad un utente?
    Allora la cosa che puoi fare è metterci il nickname così da poterlo associare a qualcuno degli utenti registrati.
    (Va bè, in realtà siccome qualsiasi valore inserisci serve proprio a ricordarsi il login comunque basta copiarlo altrove per logarsi, però insomma è una discussione che porta via tempo e chiacchiere, per ora lasciamo così com'è).
    Bene ora siamo a setcookie('radiodelmomento', 'pasquale', .... manca il tempo. Se non lo inserisci il cookie è eterno!
    NEssuno vuole questo, magari è meglio un giorno o una settimana, facciamo un giorno tanto poi te lo aggiusti da solo il tempo, quindi: setcookie('readiodelmomento', 'pasquale', time()+86400); ecco fatto!
    Quindi la tua procedura di settaggio è questa:
    Codice PHP:
    if (isset($_POST['registrati'])) setcookie('readiodelmomento', 'pasquale', time()+86400);
    Ovviamente una volta inserito il giusto cookie nel pc di chi si sta logando, dopo dovrai leggerlo, voglio dire, non basta scrivercelo ma dovrai anche leggerlo dato che tutto 'sto ambaradan serve solo a far sì che la prossima volta non debba inserire nick e pass per loggarsi.
    I cookie si leggono con la variabile globale del PHP $_COOKIE, quindi constrolli per prima cosa se esiste e poi leggi il valore interno:
    Codice PHP:
    if (isset($_COOKIE['radiodelmomento'])) $nick = $_POST['radiodelmomento'];
    se il cookie esiste ne leggi il valore e associ questo ad una variabile e lo usi per il login automatico.

    Amen.

    Ovviamente la procedura esposta è semplicistica ma funzionante.
    Ultima modifica di dogato : 15-01-2011 alle ore 10.55.49

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Citazione Originalmente inviato da dogato Visualizza messaggio
    Infatti la cosa giuta è fare questo
    Codice PHP:
    if (isset($_POST['registrati'])) ....
    Isset determina se la variabile è settata o non è nulla.
    Per HTTP se una variabile è vuota non esiste, ovvero se non spunti il checkbox quando premi invio è come se non esistesse.

    Vero... se guardi le mie risposte lo metto sempre. Però come detto prima vorrei che imparasse, più che avesse tutto già fatto. Se ci sbatteva la testa e guardava gli altri script si accorgeva dell'errore (e non se ne sarebbe mai dimenticato ).

    Comunque allora una precisazione:
    Citazione Originalmente inviato da dogato Visualizza messaggio
    Se non lo inserisci il cookie è eterno!
    Citazione Originalmente inviato da php.net
    If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).
    Ciao!

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Vero... se guardi le mie risposte lo metto sempre. Però come detto prima vorrei che imparasse, più che avesse tutto già fatto. Se ci sbatteva la testa e guardava gli altri script si accorgeva dell'errore (e non se ne sarebbe mai dimenticato ).
    Il rischio di fare così è di indurre a generare script poco sicuri, già il php è un linguaggio poco sicuro per sua stessa definizione; in un altro linguaggio di programmazione quell'esempio avrebbe generato un errore per la variabile non settata qui il php prima setta la variabile da solo per fare il confronto poi ti da il risultato... sai che figata se ci mette un valore non zero? La condizione è vera e ti setta il cookie anche se tu non gliel'avevi chiesto :)
    Comunque allora una precisazione:
    Ciao!
    Touché

  17. #17
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Unhappy

    Citazione Originalmente inviato da dogato Visualizza messaggio
    Infatti la cosa giuta è fare questo
    Codice PHP:
    if (isset($_POST['registrati'])) ....
    Isset determina se la variabile è settata o non è nulla.
    Per HTTP se una variabile è vuota non esiste, ovvero se non spunti il checkbox quando premi invio è come se non esistesse.
    Se io inserisco questo non dovrebbe essere già tutto fatto... giusto?
    Citazione Originalmente inviato da dogato Visualizza messaggio
    la cosa che puoi fare è metterci il nickname così da poterlo associare a qualcuno degli utenti registrati.
    Quindi... OGNI VOLTA CHE QUALCUNO SI REGISTRA IO DEVO METTERE IL SUO NOME?????????
    Non credo che sia così "manuale" fare una cosa del genere!

    Citazione Originalmente inviato da dogato Visualizza messaggio
    Codice PHP:
    if (isset($_POST['registrati'])) setcookie('readiodelmomento', 'pasquale', time()+86400);
    Ovviamente una volta inserito il giusto cookie nel pc di chi si sta logando, dopo dovrai leggerlo, voglio dire, non basta scrivercelo ma dovrai anche leggerlo dato che tutto 'sto ambaradan serve solo a far sì che la prossima volta non debba inserire nick e pass per loggarsi.
    I cookie si leggono con la variabile globale del PHP $_COOKIE, quindi constrolli per prima cosa se esiste e poi leggi il valore interno:
    Codice PHP:
    if (isset($_COOKIE['radiodelmomento'])) $nick = $_POST['radiodelmomento'];
    se il cookie esiste ne leggi il valore e associ questo ad una variabile e lo usi per il login automatico.
    E... io cosa dovrei mettere e dove

    Citazione Originalmente inviato da dogato Visualizza messaggio
    la procedura esposta è semplicistica ma funzionante.
    Una cosa non va: il link che do io va alla pagina form.html, mentre il codice che dovrei mettere va su registrazione.php.
    Che si fa?

Regole di scrittura

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