Visualizzazione risultati 1 fino 11 di 11

Discussione: Tempo d'attesa dopo pubblicazione

  1. #1
    Guest

    Exclamation Tempo d'attesa dopo pubblicazione

    Salve, non so se come titolo vada bene anche perché è difficile spiegare ciò che mi potrebbe servire.

    Praticamente ho un form dove premendo il bottone di invio stampa un articolo nella home. Siccome come antispam mi scoccia mettere il captcha vorrei che le pubblicazioni siano dopo un tempo d'attesa.

    Per esempio, dopo che io pubblico l'articolo, per pubblicarne un'altro devo aspettare 5 minuti.

    Si può fare qualcosa del genere? Se si come? Grazie.

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

    Predefinito

    Se stai usando un tuo script, certamente: basta guardare l'ultima data di publicazione e impedirlo se è inferiore a 5 minuti. Se invece stai usando un CMS, bisogna vedere se lo permette...

    Ciao!

  3. #3
    Guest

    Predefinito

    Si si lo script è mio. Mi potresti portare sulla retta via?


    Il problema è che in questo script non c'è bisogno di una registrazione quindi bisognerebbe lavorare con l'ip della persona che scrive nel form. Non so se ci siano altre "soluzioni". Grazie per la risposta
    Ultima modifica di atzendei : 10-07-2014 alle ore 22.17.23 Motivo: Aggiunta informazioni

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

    Predefinito

    Cambiare l'ip è molto facile, e gli spambot solitamente utilizzano IP differenti.

    Io semplicemente prima di pubblicare un nuovo articolo controllerei la data dell'ultimo articolo pubblicato. La salvi in qualche parte? Se è troppo presto, negherei la pubblicazione dicendo di aspettare 5 minuti.

    Ciao!

  5. #5
    Guest

    Predefinito

    Si la data di ogni pubblicazione viene salvata nel database insieme alle varie informazioni dell'articolo per esempio nel mio caso ci sono: Sesso
    Età
    Testo
    Id articolo
    Data

    non sono esperto di php e non saprei come creare una funzione che controlli la data dell'ultima pubblicazione e poi bloccarne se è troppo presto

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

    Predefinito

    Potresti recuperare da quanto è stato scritto l'ultimo articolo con una query del tipo:
    Codice:
    SELECT (NOW() - data) as sec_ultimo_art FROM `articoli` ORDER BY data DESC LIMIT 1
    Quindi controlli se "sec_ultimo_art" è maggiore di 60*5 (sempre che "data" sia in formato timestamp o comunque che contenga anche l'orario).

    Ciao!

  7. #7
    Guest

    Predefinito

    Aiuto non ne caverò mai piede :\

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

    Predefinito

    Perché? Cosa non capisci?

    Quella è una semplice query, come ad esempio hai sicuramente fatto per leggere i dati dal database (con la select, ed è proprio lo stesso comando). Quella query dovrebbe ritornarti un campo chiamato "sec_ultimo_art" (ovviamente puoi rinominarlo come vuoi) che dovrebbe contenere i secondi passati dalla pubblicazione dell'ultimo articolo.

    Ciao!

  9. #9
    Guest

    Predefinito

    La mia query ora è così:

    Codice PHP:
    SELECT * FROM articoli ORDER BY art_data DESC
    Dovrei aggiungere questo
    Codice PHP:
    (NOW() - data) as sec_ultimo_art
    Più il limit

    Codice PHP:
    LIMIT 1

    Questo cosa vuol dire? Che in quel momento (in quei secondi) ci può stare solo un articolo?

    Poi, tu mi hai scritto
    Quindi controlli se "sec_ultimo_art" è maggiore di 60*5
    io ti chiedevo come lo controllo? E' quello che non riesco a fare.

    Grazie, ciao

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

    Predefinito

    Dalla tua query, immagino che invece di "data" devi mettere "art_data" (sperando che sia di tipo TIMESTAMP).

    LIMIT 1 è per avere soltanto l'ultimo articolo immesso: devi guardare solo l'ultimo in questo caso, in quanto gli altri non ti interessano perché saranno sicuramente più "vecchi".

    Per leggere "sec_ultimo_art":
    Quando leggi i dati dal database, immagino che fai una cosa del genere:
    Codice PHP:
    $result = $mysqli->query('SELECT ...');
    while (
    $row = $result->fetch_assoc()) {
    echo
    'valore: '.$row['Name'];
    }
    Invece di "Name", devi mettere "sec_ultimo_art".

    Ciao!
    Ultima modifica di alemoppo : 11-07-2014 alle ore 14.21.58

  11. #11
    Guest

    Predefinito

    Più tardi come ho il pc fisso libero ci provo e ti dirò, per ora grazie delle risposte

Regole di scrittura

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