• Moderatore

    Un numero prestabilito di richieste

    Ciao a tutti.
    Non ho trovato nulla in rete, ne sul forum, forse perché non so quali parole cercare... 😄

    Ho una tabella in MySql da cui vorrei far estrarre agli utenti solo un certo numero di risultati.
    Mi spiego con un esempio: ci sono 30 risultati possibili, ma vorrei che gli utenti possano fare 3 richieste e vedere i 3 risultati voluti.
    Alla quarta richiesta che venisse un messaggio tipo "Hai superato le richieste che potevi fare, per conoscere le altre etc. etc..." o qualcosa del genere.
    Naturalmente se esce e rientra nel sito deve vedere i soliti risultati e non fare altre richieste.

    Esiste uno script già pronto da cui possa iniziare?
    Se ho un punto di partenza magari riesco a fare le modifiche che mi servono, ma da zero non so proprio cosa fare. :arrabbiato:


  • User Attivo

    Beh, devi salvare gli ip sul database, per forza.
    A meno che non salvi tutto su un cookie (rischioso se capiscono il trucco e cancellano il cookie, ma poi nemmeno tanto) e ad ogni richiesta di quell'utente aumenti il valore del cookie di 1. Se il cookie è a 3, allora visualizzi il messaggio.
    Chiaramente dai validità un giorno (immagino il metodo sia quello) o una settimana, dopodiché il cookie scade e possono ripetere la ricerca.
    Rapidissimo e assolutamente indolore.
    Altrimenti ti tocca salvarti l'ip dell'utente, aggiornare il campo "richieste" di uno ad ogni richiesta e quando arriva a tre allora viene visualizzato un messaggio.
    Così però devi creare una query iniziale per calcolare, in base all'ip, le richieste effettuate (se presenti).


  • Moderatore

    Gli utenti che vedono quella specifica pagina sono gli iscritti al mio e-commerce. Quindi non ho problemi per salvare gli IP 😉 .
    Ma come realizzo materialmente questa cosa?


  • User Attivo

    Se sono registrari allora dell'ip non ne hai bisogno.
    Devi crearti una tabella apposita (consiglio per essere più ordinato, anche se in realtà puoi aggiungere 2 campi alla tabella utenti e vai molto più lisci).

    Se aggiungi 2 campi è più facile:
    richieste
    time
    quando un utente loggato entra nella pagina X, una query aumenterà, nel record dell'utente loggato, il campo richieste di 1, salvandone il timestamp ( time() )nel campo apposito.
    Quando l'utente visualizzerà altre 2 volte la pagina X, se il campo richieste è minore di 3, riuscirà senza problemi, mentre la stessa query di prima aumenta di 2 il campo richieste e aggiornerà il timestamp.

    Arrivati alla terza volta, la condizione che controlla il campo richieste noterà che il valore è 3 (quindi 3 richieste effettuate) e boccerà la richiesta di visualizzazione, facendo uscire a video un messaggio:
    echo "Troppe richieste per oggi";

    Ho tralasciato un punto apposta: il timestamp.
    Prima della condizione di controllo richieste dovrai farti un controllo sul tempo. Il ragionamento è semplice:
    SE il timestamp è maggiore di 86400 (1 giorno) allora modifica il campo Richieste con il valore 0.

    In questo modo, partendo dall'inizio:

    Quando l'utente visualizza la pagina viene controllato il tempo dall'ultima visita.
    SE il timestamp è maggiore di 86400 viene resettato il campo richieste.
    SE le richieste non sono uguali a 3 allora visualizza il contenuto
    e viene salvano il timestamp e aumentato di 1 il campo richieste ALTRIMENTI scrivi a video un messaggio di errore.

    Preferisco spiegare il procedimento che scrivere il codice. Credo sia il metodo migliore di insegnamento 😉


  • Moderatore

    Per la tabella MySQL non ho problemi.
    Il fatto è che mi servirebbe proprio sapere come fare il codice PHP... 😄


  • User Attivo

    mmm... non ne sai molto di php e mysql, vero? :microsoft:


  • Moderatore

    Non sono un programmatore ma qualcosa riesco a fare. 😉
    Riesco a fare le modifiche che voglio su script già esistenti ma a crearli da zero trovo qualche difficoltà...


  • User Attivo

    Guarda, credo di aver scritto passo passo quello che devi fare per ottenere il risultato che vuoi.
    Prova a creare uno script partendo da quello che ti ho scritto passo passo e posta il codice qui.
    Sarò contento di aiutarti.
    E' semplice da realizzare, quindi con un paio di googolate te la cavi assai.