Sto cercando un codice da mettere nella home, che quando sono online la scritta "Sono online" mentre se non ci sono appare "Non ci sono".
Dove lo trovo il codice?
Sto cercando un codice da mettere nella home, che quando sono online la scritta "Sono online" mentre se non ci sono appare "Non ci sono".
Dove lo trovo il codice?
Se vuoi usare il php, puoi fare una cosa del genere:
1. Crei una tabella nel database in cui registrare anche solo questo dato:
ultima_pagina
2. In ogni pagina del sito controlli l'indirizzo ip, se è uguale al tuo aggiorni il database mettendo con un timestamp il risultato nel database (che aggiorni quindi per ogni pagina che apri)
3. Per far comparire la scritta metti come condizione if:
- se il timestamp attuale è maggiore di 5 minuti (300sec) al timestamp registrato sul database fai un echo 'Non online', mentre se il timestamp attuale è a meno di 5 min di distanza ti segni online..
Poi vedi tu dopo quanto tempo dall'ultima pagina caricata vuoi risultare online..
Ah, naturalmente le pagine in formato .php
Appunto, se la funzione che ti serve è solo questa, puoi attivare il database di classe 1 mi pare, comunque quello piu basso che è gratuito e dovrebbe andare sempre..
Se poi non vuoi utilizzare un database, anche un file di testo txt, ma qualche posto dove registrare il tuo passaggio è indispensabile..
Per il resto la logica resta la stessa se non hai un sistema di login, prendi un informazione unica (o anche piu) che corrispondono al tuo pc/linea o quello che vuoi, e lo metti tra le condizioni in ogni pagina, e registri da qualche parte data e ora dell'ultima pagina caricata.
Codice subito allora ti conviene cercare per la rete.
Puoi sfruttare lo stesso comando che usi per il guestbook allora..
Per aprire e scrivere un'altro file txt da usare per vedere se sei online.
Ora, nel guestbook ci scrive immagino le info sull'utente che ha postato e il messaggio.
In questo file invece devi inserire solo il tempo dell'ultima apertura di una pagina qualsiasi del tuo sito. Qui trovi info su come avere il dato: http://php.html.it/articoli/leggi/92...come-gestirle/
Con il time() ottieni un numero in secondi, registri solo questo nel file.
Quindi nel punto in cui vuoi far apparire la scritta, leggi il file txt (così come dov'è situato il guestbook viene letto il file relativo), piu o meno in questo modo:
il tuo ip lo ricavi da qualsiasi sito che te lo fa vedere, tipo www.mio-ip.itCodice PHP:
$tempo_attuale = time();
$differenza = $tempo_ultima_pagina - $tempo_attuale;
//300 = 300secondi = 5minuti.. puoi cambiarlo come vuoi
if($differenza > 300){echo 'Non sono online';}
else{echo 'Sono online'}
Ma è proprio necessario avere un file che stampa i dati?
Col Guestbook mi serve perchè è una procedura un pò particolare: un file.php stampa i dati sul server in message.html, un secondo file.php li prende da lì e li mette a video.
Ho già un codice che visualizza l'ip del visitatore, guarda in alto a dx nel mio sito
Ultima modifica di alemoppo : 13-07-2011 alle ore 02.23.21 Motivo: Aggiunta finale +eliminato link
Ok, quell'ip che prelevi ti è utile per auto-riconoscerti.
in ogni pagina devi mettere
Avere un file è necessario se non vuoi utilizzare il database.Codice PHP:
$tuo_ip = 'xxxx'; //lo conosci, mettilo qui
//Ora prelevi l'ip di chi sta visitando la pagina, quello che hai già
$ip_attuale = bla bla come sopra;
if($tuo_ip = $ip_attuale){
//apri il file txt dedicato a sto fatto :P
//cancelli tutto il contenuto
//scrivi dentro ciò che ottieni con time()
}
Non capisco perché però non vuoi usare il database, se è solo per questo scopo ti basta il primo livello, gratuito, e per il codice posso aiutarti poco di piu, e guadagni in sicurezza anche se non ci sono info da proteggere
Vedi tu, comunque ora la logica dovresti averla compresa, il codice in parte è qua, il resto non l'ho messo perché è sicuramente uguale a quello del guestbook, naturalmente da adattare, e devi utilizzare un'altro file..
Il mio IP è dinamico.
Ho messo questo ma a 70 cambia frase
Codice PHP:
<?php
$tempo_attuale = time();
$differenza = $ip=$_SERVER['REMOTE_ADDR'];
//300 = 300secondi = 5minuti.. puoi cambiarlo come vuoi
if($differenza > 70) {echo 'Non sono online';}
else {echo 'Sono online';}
?>
Le variabili nello script non sono impostate bene..
$tempo_attuale è ok
ma $differenza deve essere
$differenza = $tempo attuale - $tempo_ultima_pagina
dove $tempo_ultima_pagina è il valore che dovresti prelevare dal file txt..
così come l'hai postato sottrai al tempo attuale l'ip, non avrebbe senso.
Per l'ip controlla se cambia del tutto in ogni parte, o se cambiano solo le ultime cifre.. Se son solo le ultime cifre si può utilizzare..
LA sconvenienza è che se ti connetti da altrove non ti segna online.
L'alternativa sarebbe fare una pagina di accesso, dove metti una password che scegli tu, e se esatta con le sessioni ti fai riconoscere connettendoti da qualsiasi posto. Sarebbe la scelta migliore per prestazioni, il database rimane ancora l'accoppiamento migliore, perché ora c'è anche una password di mezzo, anche se tanto l'accesso di altri non porta a chissà quali danni, ma solo al funzionamento dello script per online/offline.
Vedi tu cosa scegliere..
Se ho ben capito, per essere sicuro che segna giusto anche se mi connetto altrove, devo mettere la pwd, e qui inizia a complicarsi.
Io lo terrei sul semplice, non metto niente e basta
Be, per l'utilità che può avere è sicuramente un dettaglio trascurabile, se non vuoi altri file e codice in giro togli e fai prima, in caso cambi idea siam qua :P
Quello è un altro grande passo in più.. si arriva ad AJAX, fosse già un sistema con accesso utenti potrebbe avere il suo perché, non ce non si possa fare anche per una cosa del genere, però se non è indispensabile meglio non perderci su troppo tempo.
Alla prossima!
Pensavo a quel link che mi hai dato che verifica l'ip, non capisco come faccia a sapere se una mail è giusta, esiste un database mondiale di indirizzi?
Di che link parli? Cosa centrano le email? Per la cronaca, l'IP si preleva senza servizi esterni: tramite
Comunque, personalmente, ritengo che la scelta di verificare l'ip è brutta. Molto meglio usare sessioni o cookie.Codice PHP:
$_SERVER['REMOTE_ADDR']
Ciao!
regolamento altervista_______________ regolamento forum
Era multigame, mi ha postato questo http://www.mio-ip.it/ è qui che non capisco il ciclo delle mail corrette o no.
Ancora non capisco cosa centrino le email.
---
Ritornando al tuo problema, come ho detto prima, guardare l'IP non è una cosa molto efficace. Sia perché cel'hai dinamico, sia perché se ti connetti da un'altra parte non appari online, sia perché qualsiasi altra persona (fratello, parente) che si connette con la tua connessione ti renderà online.
L'unica soluzione sensata che mi viene in mente è quella di fare un sistema login-password. Anche se con solo una password (salvata sul sorgente) le cose non si complicano molto, comunque devi in ogni caso fare il form...
Una soluzione non bella ma (credo) funzionale, sarebbe quella di fare una pagina che conosci soltanto te. Quando ti connetti a quella pagina, la pagina aggiornerà in un file di testo il timestamp corrente.
Mi spiego meglio:
Potresti fare una pagina del tipo:
L'indiirzzo di questa pagina la conosci soltanto te (non la scrivi/dici a nessuno). Quindi, se ad esempio si chiama pagina.php e la password è pippo, accedi con:Codice PHP:
<?php
session_start();
$password = 'pippo'; //è un esempio
if(isset($_GET['password']))
if($_GET['password'] == $password)
{
$_SESSION['admin'] = 1;
file_put_contents('ultima_azione.txt', time()); //aggiorni nel file il timestamp
}
header('Location: index.php'); //redirect alla home
?>
In questo modo, si setterà la sessione e il timestamp sul file.Codice:tuosito.altervista.org/pagina.php?password=pippo
Poi, in tutte le pagine, dovresti aggiornare il timestamp nel file, ovvero inserire in tutte le pagine (all'inizio), queste righe:
Per mostrare se sei online, puoi scrivere:Codice PHP:
<?php
session_start();
if(isset($_SESSION['admin']))
file_put_contents('ultima_azione.txt', time()); //aggiorni la tua ultima azione nel file il timestamp
?>
Codice PHP:
<?php
if((time() - file_get_contents('ultima_azione.txt')) > 300) //se per 300 secondi non hai fatto niente
echo 'Non ci sono';
else 'Ci sono';
?>
---
Nota: non ho provato gli script sopra e ovviamente puoi personalizzarli come vuoi; è soltanto per fare un esempio
Ciao!
Ultima modifica di alemoppo : 13-07-2011 alle ore 13.17.10
regolamento altervista_______________ regolamento forum
Nel caso utilizzi la soluzione che ti ha spiegato alemoppo, se ci aggiungi anche una pagina per fare logout quando stai chiudendo il sito sarebbe ancora meglio..
Per una pagina di logout ti basta mettere questa riga:
E volendo per facilitare il logout puoi aggiungere in un punto della pagina che tu preferisci una cosa del genere:Codice PHP:
<?php
session_destroy();
echo 'Ora non risulti online';
?>
Così da far comparire un link solo se sei loggato come amministratore, per uscire commodamente (senza mettere tu il nome della pagina, che può anche essere differente)Codice PHP:
<?php
if(isset($_SESSION['admin'])) {
echo '<a href="logout.php">Disconnessione</a>'
}
?>
Ah comunque non ho capito neanche io il fatto della mail, ti ho indicato quel sito solo perché non ero certo sapessi come avere il tuo ip.
Bye!
Ultima modifica di multigame : 13-07-2011 alle ore 16.24.01
In quel sito oltre al''ip address, geo, c'è anche la casella che tu inserisci un indirizzo mail e il sito verifica se quell'indirizzo esiste o no.
Come fa a saperlo? Esiste un DB? Se così mi farebbe comodo avere un codice del genere che verifica se i miei visitatori inseriscono mail vere