Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Una query al minuto

  1. #1

    Una query al minuto

    Scusate il titolo un po' ridicolo :->
    Sto' usando questo script il quale legge e salva su db alcune query di ricerca.
    Codice PHP:
    $querystat mysql_real_escape_string($_GET['q']);
    $datetime time();
    if( (
    $querystat != $_SESSION['prev_search']) OR ( ($datetime $_SESSION['datetime']) > 60) ) {
    $insertquery="INSERT INTO query (querycampo,datetime) VALUES ('$querystat','$datetime');";
    mysql_query($insertquery$db);
    }
    $_SESSION[’datetime’] = $datetime;
    $_SESSION[’prev_search’] = $querystat
    La riga
    Codice PHP:
    if( ($querystat != $_SESSION['prev_search']) OR ( ($datetime $_SESSION['datetime']) > 60) ) { 
    dovrebbe evitare di popolare il db se una chiave di ricerca viene effettuata piu' volte nel tempo di un minuto.

    Purtroppo questo non funziona e tutte le query vengono inserite lo stesso.
    Mi potete aiutare a fare in modo che se la stessa query viene effetuata ripetutamente nel tempo di un minuto venga registrata una sola volta?

    Spero di essermi spiegato e ringrazio anticipatamente

  2. #2
    :master: Mi sembra di capire che cerchi uno script che interrompa le possibilità di effettuare una ricerca in un DB se il tasto premi sia stato premuto più di una volta in 60 secondi, sbaglio??

    Dunque.... al momento in cui premi il tasto search, nella pagina cui punta la action, puoi andare a fare il controllo se esista o meno una variabile che contiene il timestamp del momento in cui la variabile è stata creata.

    Se la variabile di sessione esiste, significa che gà una volta il tasto submit della form di ricerca è stato premuto. Se così, fai la differenza tra l'orario della seconda ricerca e quello in sessione e decidi il da farsi in base al risultato.

    Codice PHP:
    session_start();
    if (!isset(
    $_SESSION['last_search'])) {
       
    // è la prima ricerca, e la effettuo senza problemi
       // ma salvo nella sessione l'ora attuale
       
    $_SESSION['last_search'] = time();
       
    // qui va il codice della query
    } else {
    $ora_attuale time();
          if ((
    $ora_attuale $_SESSION['last_search']) <= 60) {
            echo 
    "Spiacente, ma devi attendere almeno 60 secondi tra una ricerca e l'altra"; exit;
          } else {
              
    // salvo l'ultimo orario di ricerca nella sessione
              
    $_SESSION['last_search'] = time();
              
    // qui metti il codice della nuova ricerca
          
    }

    Non l'ho testato ma dovrebbe andare.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.