Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    154

    [PHP] Pagina che si richiama da sola ogni giorno

    Salve a tutti,

    avrei bisogno di creare una pagina che si richiama da sola ogni giorno, o comunque ogni $tempo, e che ogni giorno controlla se in un db MySQL ci sono utenti aventi determinati parametri e, li hanno vengono eliminati dal db. Idee?
    Grazie mille
    Mess with the best die like the rest.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Esecuzioni programmate si fanno con CronTab, ma il server deve permetterti di usarlo.
    PHP da solo non può fare una cosa del genere, a meno di tenere un browser sempre aperto e puntato a quella pagina.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    154
    Allora, prendendo il problema più alla larga, sto facendo una pagina di registrazione per un sito. Nella pagina il codice registra i record su un db MySQL e tra i campi c'è anche il campo bool che indica se un account è attivato o no. Un altro campo indica la data di registrazione.
    Poi una funzione che invia un email con il codice di attivazione dell'account. Dovrei fare in modo che, se l'account non viene attivato entro un giorno, venga eliminato. Ma quella era l'unica idea che mi era venuta in mente.. Non è che per caso hai qualche altra idea?
    Mess with the best die like the rest.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    A parte che un giorno mi pare troppo poco, metti che a uno non arriva l'email di conferma immediatamente o nel giro di pochi minuti, questo esce (perché la gente non sta lì ad aspettare finché l'email non arriva), ricontrolla il giorno dopo e... sorpresa, non può completare la registrazione.

    Comunque puoi fare così: all'interno della homepage metti un richiamo ad uno script che fa il controllo che vuoi, ovviamente questo controllo lo dovrai fare una volta al giorno, quindi questo script dovrà essere del tipo
    Codice PHP:
    //in una tabella metti la data dell'ultima volta che hai eseguito lo script pe la verifica
    if($data_attuale != $data_ultima_esecuzione)
    {
        
    //qui il lavoro che vuoi far fare allo script
        //e poi aggiorni il campo data sulla tabella con la data corrente


  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Una programmazione tipo crontab può andar bene, ma nei casi in cui non c'è criticità (come il tuo) in realtà il controllo lo puoi fare al primo momento utile... in pratica ad ogni accesso al sistema (o cmq quando vuoi: per esempio ad ogni nuova registrazione di un utente) come PRIMA operazione fai la tua "pulizia" controllando se è passato più tempo del tuo limite (es.: 1 giorno) ed elimina i tuoi account, poi procedi. Se l'azione avviene in realtà dopo 2 giorni in effetti non succede nulla di grave (mi pare di capire): l'importante è che avvenga alla prima "interazione".

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    154
    Sì, giusto. Avevo pensato di metterlo anche nella home. Però bho, si appesantirebbe quindi magari nella pagina di autenticazione del login potrebbe andare forse. Che ne pensate?
    Mess with the best die like the rest.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dipende prima di cosa devi fare il controllo... devi mettere il "check" PRIMA delle operazioni che richiedono sia già stato fatto... se la "pulitura" deve avvenire prima di una nuova registrazione (come mi pare di intuire) mettila solo lì... cmq devi usare due condizioni:
    - tempo passato (almeno 1 giorno o quel che è)
    - che non sia già stata fatta (metti un campo "booleano" da qualche parte nel db)

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    154
    Nel db c'è un campo bool "attivazione". Dovrei fare un
    Codice PHP:
    if( differenza_tra_oggi_e_data_di_registrazione => && attivazione != 1
    {
    //elimina record

    E.. sopra mettere un for che fa questo per ogni record del db?
    Mess with the best die like the rest.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Direi di no esattamente... io farei:

    1) decidere PRIMA di cosa deve essere fatta l'operazione e attivarla (es. includendo uno script apposito) solo i quei casi (eventualmente anche sempre, se occorre)
    2) fare un DELETE dei record per i quali l'attivazione non è "1" e per cui è passato più di un giorno (o il tempo desiderato)... un'unica "query" dunque

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.