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

    Gestione Iscrizione On_line e Cron Job

    Ciao a tutti.
    Espongo un quesito abbastanza complesso.

    Devo creare una sezione di un sito che gestisca l'iscrizione ad alcuni corsi. Premettendo che intendo affrontare la gestione dei corsi separatamente, quindi creando una tabella per ogni corso ho alcune caratteristiche da rispettare:
    • L'utente deve essere considerato iscritto al pagamento del corso e non all'iscrizione
    • L'utente ha 15 giorni per confermare l'iscrizione
    • Nel passare di quei 15 giorni l'utente verrà avvisato 1 volta allo scadere del nono giorno


    I problemi per me sono quindi:
    • Creare un Cron Job che controlli ogni giorno il pagamento della quota (inserito da un operatore manualmente in una pagina specifica);
    • Contare quanti giorni sono passati dal momento dell'iscrizione


    Come potete aiutarmi???

  2. #2

  3. #3
    Nessuno sa aiutarmi? La mia fondamentale domanda riguarda il funzionamento del cron job, ossia il cron job è effettivamente un comando che esegue del codice php?

  4. #4
    Ok, ultimo up.
    Io ho capito che si può lanciare una pagina web.
    Qual'è il comando per lanciare una pagina php?

  5. #5
    Il crontab è un processo che avviene sul server per schedulare dei comandi.
    La serie di comandi lanciati da crontab è un cronjob.

    Per configurare il crontab devi quindi avere accesso alla macchina come amministratore.
    Una routine che puoi configurare con crontab è anche l'apertura di una pagina php, il cui script esegue la funzione mail() per i destinatari interessati, ma ci sono soluzione più appropriate che permettono di usare il sendmail di Linux stesso anziché php come tramite per l'invio di mail.
    Ma se usi un DB non so se questo possa convenirti.

    Altra soluzione, meno stabile ma comunque diffusa, è quella di crare una pagina html che ogni tot secondi abbia un refresh, con un parametro GET che si autoincrementa ad ogni refresh per l'operazione seguente (ad esempio la successiva lista di destinatari per l'invio della mail).
    Puoi lanciare il refresh con un metatag o con un codice Javascript.

    Ovviamente una mancata risposta HTTP del server, oppure una discontinuità della linea ADSL bloccherebbero il processo. Potresti allora affidarti ad Ajax, in cui puoi anche verificare il responso HTTP delle chiamate asincrone, e rinviare la richiesta in caso di errori come il 404, oppure stabilire un timeout entro il quale se non si riceve un responso la richiesta venga annullata e ne venga lanciata una nuova.

    Altre possibili soluzioni lato client sono di affidare il refresh ad un browser; se in questo caso si avesse un mancato caricamento nel refresh della pagina, il client lancierebbe ugualmente un'altra chiamata http che continuerebbe il job.

    Cambiando ancora campo potresti studiare (o farti produrre) una soluzione di un'applicazione dedicata lato client, come per esempio Visual Basic, che può gestire le chiamate http in modo abbastanza completo, e schedularle ogni determinato timeout.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  6. #6
    Io pensavo ad una cosa decisamente più semplice e più alla mia portata. Ossia una pagina php che svolge la funzione di controllo in database ogni giorno per esempio alle 12.00 e se lutente Mario Rossi non ha pagato e sono passati 10 giorni invia una mail e registra sul database che gli ha inviato la mail e che l'esito è ok. Tu dici che è una cosa non sicura?

    Il mio server mi permette di gestire i cron job e mi semplifica il tutto dicendo inserisci il comando e il quando lo vuoi esguire. Il problema è che non so come dirgli di lanciarmi una pagina php...

  7. #7
    Questo è come vedo io una soluzione lato client, il cui refrsh avviene ogni 24 ore.
    Se trasformi questa chiamata che avviene in modo sincrono attraverso il metatag di refresh in chiamata asincrona tramite ajax hai un'applicazione stabile lato client.

    Codice PHP:
    <html>
    <head>
    <title>Job di invio mail di sollecito</title>

    <meta http-equiv="refresh" content="86400; url=">
    </head>
    <body>
    <?php
    // Creazione dell'array mailing_list, contenente gli array degli indirizzi mail, il nome e l'ID degli utenti che non hanno pagato:
    $mailing_list = array(array(), array(), array());

    // ...Connessione al DB
    //  Query di selezione degli utenti che non hanno pagato (ipotetico campo "payment" che memorizza l'avvenuto pagamento):
    $query "SELECT mail_address FROM utenti WHERE payment='0'";
    if (
    mysql_query($query$db)) {
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_assoc($result))
    {
    $mail_address $row['mail_address'];
    $user_name $row['user_name'];
    $user_id $row['user_id'];
    // aggiunta dell'indirizzo email, del nome e dell'ID dell'utente che non ha pagato all'array mailing list:
    array_push($mailing_list[0], $mail_address);
    array_push($mailing_list[1], $user_name);
    array_push($mailing_list[2], $user_id);
    }
    } else { echo 
    "Errore nella query di estrazione della mailing list."; }

    // Creazione dell'header delle email da inviare alla mailing list:
    $header "From: 'Verifica pagamenti sito.com' <pagamenti@sito.com>;\n";
    $header .= "CC: 'qualcuno in cc' <qualcuno@indirizzo.com>;\n";

    // Se il testo della mail è uguale per tutti, il corpo del messaggio è unico e metti tutti in Bcc:
    for ($i 0$i count($mailing_list[0]); $i++) {
    $header .= "BCC: '".$mailing_list[1][$i]."' <".$mailing_list[0][$i].">;\n";
    }

    $header .= "Priority: 1\n";
    $header .= "X-Mailer: PHP sendmail\n\n";

    $subject "Sollecito di pagamento causale x...";
    $message "Le ricordiamo che ha dimenticato di pagare la scadenza X...";

    if (@
    mail($to$subject$message$header))
    {
    echo 
    "Mail di sollecito inviata correttamente.";
    $subquery "";
    for (
    $i 0$i count($mailing_list[0]); $i++) {
    $subquery .= " user_id='".$mailing_list[2][$i]."'";
    if (
    $i count($mailing_list[0] - 1)) { $subquery .= " OR"; }
    }
    }

    // Query di aggiornamento dell'invio dei solleciti agli utenti selezionati:
    $query "UPDATE utenti SET payment='1' WHERE".$subquery;
    if (
    mysql_query($query$db)) { echo "Aggiornamento del DB avenuto correttamente."; }
    else { echo 
    "Errore nella query di aggiornamento del DB."; }

    ?>
    </body>
    </html>
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  8. #8
    Originariamente inviato da lorenzos
    ...
    Il mio server mi permette di gestire i cron job e mi semplifica il tutto dicendo inserisci il comando e il quando lo vuoi esguire. Il problema è che non so come dirgli di lanciarmi una pagina php...
    Prova a postare questa richiesta nel forum Lato server > Server > Apache.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  9. #9
    Ok...

    Anche perchè una pagina che si aggiorna presuppone un computer sempre acceso...

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.