Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Come si scrive questa frase in PHP?!?

    Ciao a tutti,

    scusate ma... come cavolo si fa a scrivere questo in PHP:

    if $ora_primo_messaggio >= $ora_primo_messaggio - 2 minuti echo "Errore! puoi inviare messaggi solo ogni 2 minuti!";

    Non riesco ad effettuare un confronto tra gli orari...!

    La situazione è questa:

    • L'utente con l'IP 1.2.3 invia un messaggio sul mio forum.
    • All'atto dell'invio io registro in un database il messaggio più la data, l'ora, e l'indirizzo IP.
    • Dopo due secondi (per errore o per intenti spammosi) l'utente preme di nuovo su "invia".

    Ora: come faccio a confrontare gli orari?... Ciò che vorrei far io è un controllo sugli IP e poi il controllo sugli orari che ho scritto sopra!

    graaaazie!!!

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    per operare sugli orari e date la funzione è date()

    http://it2.php.net/manual/it/function.date.php


    date("i") per esempio restituisce i minuti

    se ciò che devi ottenere dal confronto riesce a stare in un' unica riga

    if ($a > $b)
    echo "$a è maggiore di $b";

    se invece devi fare diverse operazioni

    if ($a > $b)
    {
    echo "$a è maggiore di $b";
    die("Ho vinto io!!");
    }
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Grazie per la risposta. Mi spiego meglio.

    Le date sono salvate nel database con il formato: date("H:i") (e cioè, ad es, 14:45)
    Io posso tranquillamente fare un explode() per avere $ora e $minuti.
    Il problema, però, è che fare un confronto tra minuti ed ore non basta, perché se cambia l'ora o il giorno rimango fregato!...

    Diciamo che è un problema di logica, ma sto impazzendo!!

    grazie,

  4. #4
    secondo me dovresti prima ottenere un timestamp del messaggio tramite questa funzione:
    http://se2.php.net/manual/it/function.mktime.php
    e poi confrontare i due timestamp, se la differenza è troppo bassa (l'unità di misura è in secondi) ignori il post, altrimenti lo accetti.
    "Una volta che si saranno esaurite senza successo tutte le possibilita', ci sara' una soluzione, semplice e ovvia, che saltera' immediatamente all'occhio di chiunque altro."

    Guardate: Il Miracolo delle Noci!!

  5. #5
    Ti conviene fare con i timestamp.

    Non ho capito se le date nel tuo database sono memorizzate direttamente col timestamp o se sono memorizzate come stringhe nel formato "hh:mm".

    Nel caso in cui fossero memorizzate come stringhe, ti basta usare la funzione

    int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst] )

    per ricavare il timestamp.
    Una volta ricavato, basta togliere 120 secondi per tornare indietro di due minuti ed effettuare il confronto.

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