Visualizzazione risultati 1 fino 22 di 22

Discussione: Creare ip logg

  1. #1
    Guest

    Question Creare ip logg

    Salve a tutti io vorrei mettere nel mio sito web un ip logg il mio sito è in php, il mio ip logg dovrà segnare l'ip dell'utente che è entrato nel sito, l'ora e la data e voglio che salva tutto nel database del mio sito cioè quello che si usa su altervista. Mi aiutate? per favore?

  2. #2
    Guest

    Predefinito

    ti impegni ad informare gli utenti di questa 'attività' in modo chiaro e comprensibile ?

  3. #3
    Guest

    Predefinito

    allora io ho questo codice che sarebbe un ip logg:

    <?php
    $host = "MY HOST";
    $user = "MIO NOME";
    $password = "MIA PASSWORD";
    $db = "MIO DB";

    $obj = new mysqli($host, $user, $password, $db);

    //CONNECTION
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    $ip = getenv("REMOTE_ADDR");
    $SQL = sprintf("INSERT INTO MIA TABELLA (ip)
    values('$ip')");
    $result = $obj->query($SQL);
    ?>
    Questo codice funziona benissimo però io vorrei aggiungere anche la data cioè che nel database mi segna oltre l'ip anche la data puoi aiutarmi?

  4. #4
    Guest

    Predefinito

    non fraintendermi . volevo ricordarti un obbligo...

    comunque per la data è semplice, salva il valore restituito da time() in un campo

    quando andrai a stamparla in formato human-friendly ti basta chiamare date()

    $time = time();
    "INSERT INTO TABELLA (ip,time) values('$ip','$time')");
    se preferisci puoi salvarla anche in h-f ma è consigliabile quanto scritto sopra

    $hf = date("d/m/Y H:i:s", $time);
    Ultima modifica di FormularioDiDrakensang : 22-07-2014 alle ore 17.44.40

  5. #5
    Guest

    Predefinito

    Puoi posizionare il codice in quello che ti ho dato prima? per favore non sono molto esperto

  6. #6
    Guest

    Predefinito

    nella tabella aggiungi un campo time

    <?php
    $host = "MY HOST";
    $user = "MIO NOME";
    $password = "MIA PASSWORD";
    $db = "MIO DB";

    $obj = new mysqli($host, $user, $password, $db);

    //CONNECTION
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    $time = time(); // salva data come epoc
    // $time = date("d/m/Y H:i:s", $time); salva data come gg/mm/aaaa hh:mm:ss
    $ip = getenv("REMOTE_ADDR");
    $SQL = sprintf("INSERT INTO MIA TABELLA (ip,time)
    values('$ip','$time')");
    $result = $obj->query($SQL);
    ?>
    comunque con cf attivo avrai qualche sorpresa
    Ultima modifica di FormularioDiDrakensang : 22-07-2014 alle ore 17.56.51

  7. #7
    Guest

    Predefinito

    Scusa ma nel database non esce la data nella stringa data vicino ad ip

  8. #8
    Guest

    Predefinito

    nella tabella aggiungi un campo time
    se l'hai chiamato data

    <?php
    $host = "MY HOST";
    $user = "MIO NOME";
    $password = "MIA PASSWORD";
    $db = "MIO DB";

    $obj = new mysqli($host, $user, $password, $db);

    //CONNECTION
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    $time = time(); // salva data come epoc
    // $time = date("d/m/Y H:i:s", $time); salva data come gg/mm/aaaa hh:mm:ss
    $ip = getenv("REMOTE_ADDR");
    $SQL = sprintf("INSERT INTO MIA TABELLA (ip,data)
    values('$ip','$data')");
    $result = $obj->query($SQL);
    ?>
    se vuoi la data in formato umano togli //
    da // $time = date("d/m/Y H:i:s", $time);

    e naturalmente anche il commento
    salva data come gg/mm/aaaa hh:mm:ss
    Ultima modifica di FormularioDiDrakensang : 22-07-2014 alle ore 18.03.45

  9. #9
    Guest

    Predefinito

    Niente continua a segnarmi ip e non data forse ho sbagliato ad inserire la stringa data? lo messa in varchar(255) e latin1_swedish_ci forse devo cambiare qualcosa? EDIT: no ora ho cambiato ho messo nella stringa datetime ma mi segna 000 000 000 000
    Ultima modifica di bossluigiinc : 22-07-2014 alle ore 18.07.14

  10. #10
    Guest

    Predefinito

    incolla il codice che stai usando pls
    e una foto del record se possibile


    ----

    la data nel db puoi anche lasciarla varchar text o quello che vuoi

    ah dimenticavo...

    mysql ha la funzione now() quindi se vuoi

    <?php
    $host = "MY HOST";
    $user = "MIO NOME";
    $password = "MIA PASSWORD";
    $db = "MIO DB";

    $obj = new mysqli($host, $user, $password, $db);

    //CONNECTION
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    $ip = getenv("REMOTE_ADDR");
    $SQL = sprintf("INSERT INTO MIA TABELLA (ip,data)
    values('$ip',now())");
    $result = $obj->query($SQL);
    ?>

    now() restituisce la data in forma 2014-07-22 18:09:35
    Ultima modifica di FormularioDiDrakensang : 22-07-2014 alle ore 18.12.49

  11. #11
    Guest

    Predefinito

    Ecco:
    <?php
    $host = "HOST";
    $user = "NOME";
    $password = "PASSWORD";
    $db = "DATABASE";

    $obj = new mysqli($host, $user, $password, $db);

    //CONNECTION
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }


    $time = date("d/m/Y H:i:s", $time);
    $ip = getenv("REMOTE_ADDR");
    $SQL = sprintf("INSERT INTO YEAHMIATABELLA (ip,data)
    values('$ip','$data')");
    $result = $obj->query($SQL);
    ?>
    poi nel database:

    http://i62.tinypic.com/28jkt91.png

  12. #12
    Guest

    Predefinito

    <?php
    $host = "HOST";
    $user = "NOME";
    $password = "PASSWORD";
    $db = "DATABASE";

    $obj = new mysqli($host, $user, $password, $db);

    //CONNECTION
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    <---- errore hai rimosso la riga $time = time();
    per quello ti da 00000000000000

    $time = date("d/m/Y H:i:s", $time);
    $ip = getenv("REMOTE_ADDR");
    $SQL = sprintf("INSERT INTO YEAHMIATABELLA (ip,data)
    values('$ip','$data')"); <--- altro errore
    $result = $obj->query($SQL);
    ?>

    se vuoi accorciare
    $time = date("d/m/Y H:i:s", $time);
    diventa
    $time = date("d/m/Y H:i:s", time());

    avendo scelto un formato personalizzato per la data, data settala al tipo varchar
    Ultima modifica di FormularioDiDrakensang : 22-07-2014 alle ore 18.28.10

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

    Predefinito

    Si può benissimo far salvare in automatico a mysqli la data senza specificarla da PHP, creando un campo di tipo "timestamp" con:
    Codice:
    DEFAULT CURRENT_TIMESTAMP
    In questo modo viene tutto automatico e la dimensione dei dati salvata è minore perché si trattano di numeri e non di caratteri, come nel caso del varchar.
    (se si vuole salvare da PHP, conviene salvare direttamente time() visto che è un intero).

    p.s: nella connessione al database, il campo "password" sarebbe bene lasciarlo vuoto.

    Dimenticavo: anche l'ip si può trasformare in un intero con la ip2long().

    Quindi, invece di salvare due stringhe, con questo modo si salvano due interi.

    Ciao!
    Ultima modifica di alemoppo : 22-07-2014 alle ore 18.35.08

  14. #14
    Guest

    Predefinito

    Grazie mille mi hai aiutato molto ho risolto :D, aspe ma come ultima cosa come resetto gli ID? cioè l'id indica ora 32 come ritorno a 0?, Grazie ale ma ho già risolto con FormularioDiDrakensang :D

    <?php
    $host = "HOST";
    $user = "NOME";
    $password = "PASSWORD";
    $db = "DATABASE";

    $obj = new mysqli($host, $user, $password, $db);

    //CONNECTION
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    <---- errore hai rimosso la riga $time = time();
    per quello ti da 00000000000000
    $time = date("d/m/Y H:i:s", $time);
    $ip = getenv("REMOTE_ADDR");
    $SQL = sprintf("INSERT INTO YEAHMIATABELLA (ip,data)
    values('$ip','$data')");
    $result = $obj->query($SQL);
    ?>

    se vuoi accorciare
    $time = date("d/m/Y H:i:s", $time);
    diventa
    $time = date("d/m/Y H:i:s", time());

    avendo scelto un formato personalizzato per la data, data settala al tipo varchar

    Ultima modifica di FormularioDiDrakensang : Oggi alle ore 18.24.29
    Ultima modifica di bossluigiinc : 22-07-2014 alle ore 18.32.04

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

    Predefinito

    Citazione Originalmente inviato da bossluigiinc Visualizza messaggio
    aspe ma come ultima cosa come resetto gli ID?
    Eseguendo:
    Codice:
    ALTER TABLE tablename AUTO_INCREMENT = 1
    E comunque non ha senso resettarlo, perché se vuoi sapere il numero di ip registrati devi fare una query con COUNT(*)


    Citazione Originalmente inviato da bossluigiinc Visualizza messaggio
    , Grazie ale ma ho già risolto con FormularioDiDrakensang :D
    Hai letto il mio messaggio? Vuoi salvare due stringhe invece di due interi? Fai come vuoi, ma non ti conviene.

    Ciao!

  16. #16
    Guest

    Predefinito

    @alemoppo , non ho capito cosa è 2 stringhe :D, comunque io nel sito ho creato un file con il codice poi ho fatto un php include in tutte le pagine del sito maa nel database solo se si va nella index segna la data e in altre pagine no perchè?

  17. #17
    Guest

    Predefinito

    "questa è una stringa"
    12345 questo un numero



    la quantita' di spazio necessaria per memorizzare queste informazioni è diversa, in termini semplici

    un esempio "106954752" pesa almeno 10 bytes
    106954752 pesa 4 dipende anche dalla bilancia

    fintanto che devi memorizzare poche migliaia di elementi no probs, miliardi beh... ecco.. forse era meglio pensarci

    poi ho fatto un php include in tutte le pagine del sito maa nel database solo se si va nella index segna la data e in altre pagine no perchè?
    aggiungi un print "<font color=red>sono arrivato a questa riga</font>" al codice che salva nel db e lo scoprirai

    io cmq preferisco require{_once]

    note:
    - nel caso ip tenendo conto degli indirizzi v6 l'uso della string è perdonabile
    - id(contatore) non serve a niente in questo contesto non ti serve come chiave, non ti serve per contare
    Ultima modifica di FormularioDiDrakensang : 23-07-2014 alle ore 10.53.47

  18. #18
    Guest

    Predefinito

    ah ok :D grazie, ehmmmmm in che parte del codice devo mettere require ec...=?

  19. #19
    Guest

    Predefinito

    require è cugino di include

    con la diff. non da poco che se ci sono errori nello script 'richiesto' l'elaborazione si ferma e ti lancia un errore
    se usi include non vedi nessun errore e pensi che sia filato tutto liscio

    print dove vuoi
    scopo: semplice se nelle altre pagine non appare una bella scritta in rosso vuol dire che lo script che logga gli ip si è fermato prima di arrivare a quella riga per non dire che non è stato caricato proprio... nel caso in cui metti print in riga 1...

    di per se converrebbe (ab)usare di assert ma è riservato a gechi (Gekkonidae )
    Ultima modifica di FormularioDiDrakensang : 23-07-2014 alle ore 13.06.13

  20. #20
    Guest

    Predefinito

    Ehm sinceramente non ho capito, ma si puo risolvere questo errore? cioè mi registra ip in tutte le pagine ma la data solo nell'index

  21. #21
    Guest

    Predefinito

    certo

    hai fatto la prova suggerita ?

    print "<font color=red>sono arrivato a questa riga</font>"
    Ultima modifica di FormularioDiDrakensang : 23-07-2014 alle ore 15.37.22

  22. #22
    Guest

    Predefinito

    lo posizionata sopra al codice che salva l'ip e la data nel database ma niente :/ anzi mi esce errore
    Ultima modifica di bossluigiinc : 23-07-2014 alle ore 17.10.16

Regole di scrittura

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