MOOM php source code
//downloadable from http://www.heyes-computing.net/scripts/ function controlla ($mbox) { $check = imap_mailboxmsginfo($mbox); if($check) { echo "imap_mailboxmsginfo ok \n" ; } else { echo "imap_check() failed: ".imap_last_error(). "\n"; } return $check; } //--------------------------------------------- function my_odbc_result ($c1, $flc =0, $titolo='') { $nriga =0; $y=''; $ncols= odbc_num_fields($c1); if ($ncols!=0) { //echo "debug: ncols=$ncols "; while (odbc_fetch_row($c1)) { if ($nriga==0) { $y .= ''; if ($flc==1) { $y .= " n. ";} for ($i=1; $i<= $ncols; $i++) { $y.= '' .odbc_field_name($c1,$i). ''; } $y.= ""; } $nriga++; $y= $y.''; if ($flc==1) { $y.= " $nriga "; } for ($i=1; $i<= $ncols; $i++) { $y.= ''.htmlentities(odbc_result($c1,$i)).''; } $y.= "\n"; } if ($nriga>0) $y= "$titolo $y " ; } return $y; } //--------------------------------------------- function esegui_comando_sql ( $conn, $pcomando) { $y=''; $y = "".substr($pcomando,0,80); if (strlen($pcomando)> 80) $y .="..."; $y .= ""; //?? come si fa ad ottenere il messaggio d'errore ???? $c1 = @odbc_exec ($conn, $pcomando); if ($c1) { $y .= my_odbc_result ($c1); if (stristr($pcomando, 'create ')) { $c1= odbc_exec( $conn,"select * from user_errors"); $y .= my_odbc_result ($c1, 0, "errori:" ); } } else $y .= "$php_errormsg"; $y .= ""; return $y; } //--------------------------------------------- function crea_file ( $y2, $nomefile, $dir, $title ='', $mail_rit ) { $f1 = fopen( "$dir\\$nomefile.html",'w'); $y= " $titolo "; $y= $y. $y2; $y = $y. ''; fwrite ($f1, $y); fclose ($f1); echo "creato $nomefile \n"; $mail = new html_mime_mail('X-Mailer: php Mime Mail Class'); $mail->add_html($y, ''); $mail->set_charset('iso-8859-1', TRUE); $mail->build_message(); $mail->send('', $mail_rit , 'corso oracle!', 'boltthrower@libero.it', "risultato $nomefile"); } //--------------------------------------------- function esegui_script_sql ($comandi, $password, $mail_rit ) // ($comandi = mail body) { $user = str_replace (" " ,'', strtr( $mail_rit , "@.", " ")); //$user = "csp"; $conn = odbc_connect ("o_facs", $user , $password ); $am = preg_split ('/\n\//', $comandi); echo "debug: trovato num.comandi:".count($am)." \n"; while (list ($key, $pcomando) = each ($am) ) { echo "debug: eseguo comando: **$pcomando** \n"; //echo "bin2hex=".bin2hex($pcomando).""; if (trim($pcomando) !='' ) { //echo "strpos-exec=".strpos($pcomando,'exec ') .""; $y = $y. esegui_comando_sql( $conn, $pcomando ); } } odbc_close ($conn); $nomefile = substr(md5($comandi),0,15); crea_file ( $y, $nomefile , 'c:\\temp\\coracle' , '...titolo...', $mail_rit ); return $y; } //--------------------------------------------- function ciclo_su_mailbox () { $mbox = imap_open ("{pop.iol.it/pop3:110}INBOX", "boltthrower", "mypassword(not this..)"); $check = controlla ($mbox); echo "mostra tutti i messaggi nella mailbox, partendo dal primo (se presente!) \n"; if ($check) { while ( $check->Nmsgs > 0) { echo "quantità di messaggi=". $check->Nmsgs ." \n"; echo "------inizio body------ /n" ; $body = imap_body ($mbox, $check->Nmsgs ); /* $f3= fopen ("c:\\temp\\mail-body.bin",'wb'); fwrite ($f3, $body); fclose($f3); */ echo "$body "; /* chiamando imap_body con un numero di messaggio che non esiste puo' 1) dare "la connessione al server è stata reimpostata" 2) crashare il server! */ echo "------fine body------ " ; $h = imap_header ($mbox, 1 ); if ($h) { print "subject: " . $h->subject ."" ; $a = split (',',$h->subject); echo "param0= $a[0] "; //costante * corso (es. "coracle") echo "param1= $a[1] "; //utente db e ind. email a cui rispondere, es. "you@hotmail.com" -> youhotmailcom echo "param2= $a[2] "; //password echo "param3= $a[3] "; //sleep time if ($a[0] == 'coracle') echo esegui_script_sql( $body, $a[2], $a[1] ); } imap_delete ($mbox, 1 ); imap_expunge ($mbox); echo "------ fine messaggio ---"; $check= controlla ($mbox); //$check=0; } } imap_close( $mbox); return $a[3]; } //------------------------------ main ---------------------------------------------------------------------- set_time_limit(0) ; echo "____________START_____________ \n"; flush(); $tsleep =30; while (1) { $t = ciclo_su_mailbox() ; if (isset($t) and $t!=0) $tsleep = $t; else $tsleep = round($tsleep * 1.1); sleep($tsleep); echo "tsleep=$tsleep \n"; flush(); } //$tsleep = ciclo_su_mailbox() ; ?>
errori: