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.
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.
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
regolamento altervista_______________ regolamento forum
Questo lo so fare anche da solo. Grazie lo stesso. Ma...
Non c'è un sito in italiano? Magari HTML.it, ma questo che tipo di cookie è?
Ho provato a usare Google Translate ma lascia desiderare...
Esatto.
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?
Magari vorrei fare che viene ricordato per 1 settimana.Codice HTML:<td><span class="Stile1"> <label> <input type="checkbox" name="ricorda" value="checkbox" /> </label> Ricorda per 1 settimana</span></td>
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
Allora, provo a crearlo io...
Nella pagina form.html:
Ma appena alla pagina registrazione.php inserisco la stringaCodice HTML:<td><span class="Stile1"> <label> <input type="checkbox" name="ricorda" value="checkbox" /> </label> Ricorda per 1 settimana</span></td>
mi da errore. Anche se non ho aggiunto nient'altro.Codice PHP:
$ricorda = $_POST['ricorda'];
Se tolgo la stringa tutto funziona correttamente.
Ultima modifica di radiodelmomento : 07-01-2011 alle ore 18.58.35
Dove l'hai messo quel comando? Puoi scrivere tutto il sorgente della pagina?
Ciao!
regolamento altervista_______________ regolamento forum
Certo.
L'ho messo tra questi, in una parte casuale. Ora l'ho tolto perché sennò non funzionava. Dove lo devo mettere?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);
Comunque ecco tutta la pagina:
Grazie ancora.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>
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!
regolamento altervista_______________ regolamento forum
OK, adesso funziona.
Ora dovrei fare funzionare il campo ricorda.Codice PHP:
if($_POST['registrati'] || $_POST['login']){
$ricorda = $_POST['ricorda'];
if(trim($nick) == "" || trim($pass) == "") {
header("Location:form.html");
}
Cioè se (if) il campo è stato compilato (checked, credo) (else) vai direttamente a registrazione.php accedendo all'area riservata. Come?
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!
regolamento altervista_______________ regolamento forum
Con quella funzione hai creato un cookie chiamato "TestCookie" ed il suo valore è quello interno alla variabile $value....
Ciao!
regolamento altervista_______________ regolamento forum
Infatti la cosa giuta è fare questo
Isset determina se la variabile è settata o non è nulla.Codice PHP:
if (isset($_POST['registrati'])) ....
Per HTTP se una variabile è vuota non esiste, ovvero se non spunti il checkbox quando premi invio è come se non esistesse.
Ma l'hai appena fatto!Originalmente inviato da radiodelmomento
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:
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.Codice PHP:
if (isset($_POST['registrati'])) setcookie('readiodelmomento', 'pasquale', time()+86400);
I cookie si leggono con la variabile globale del PHP $_COOKIE, quindi constrolli per prima cosa se esiste e poi leggi il valore interno:
se il cookie esiste ne leggi il valore e associ questo ad una variabile e lo usi per il login automatico.Codice PHP:
if (isset($_COOKIE['radiodelmomento'])) $nick = $_POST['radiodelmomento'];
Amen.
Ovviamente la procedura esposta è semplicistica ma funzionante.
Ultima modifica di dogato : 15-01-2011 alle ore 10.55.49
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:
Ciao!Originalmente inviato da php.net
regolamento altervista_______________ regolamento forum
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 :)
TouchéComunque allora una precisazione:
Ciao!
Se io inserisco questo non dovrebbe essere già tutto fatto... giusto?
Quindi... OGNI VOLTA CHE QUALCUNO SI REGISTRA IO DEVO METTERE IL SUO NOME?????????
Non credo che sia così "manuale" fare una cosa del genere!
E... io cosa dovrei mettere e dove
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?