- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto PhP caricare righe.
-
Aiuto PhP caricare righe.
Salve a tutti gli utenti. Mi servirebbe una mano per finire di configurare un sistema di invio e-mail molto simile alla news-letter. Con un sistema di registrazione a un gioco salvo delle informazioni su un file .scp.
Il file .scp, che chiameremo lista_email.scp è composto così:
(considerate che ne ho messi solo 2, ma ce ne sono 1000)[assdf] PASSWORD=dzvj80 EMAIL=email1 DATA DI REGISTRAZIONE=04/01/09 14:23 IP=89.96.108.181 [assdaaa] PASSWORD=avslm9 EMAIL=email2 DATA DI REGISTRAZIONE=04/01/09 14:25 IP=89.96.108.181
Con un file php, chiamato send.php, dovrei caricare ogni e-mail usata. Cioè se ogni [nome] racchiude una registrazione, dovrei caricare ogni e-mail di ogni registrazioni, separarle con un ";" e formarne una variabile chiamata "$mail". che dopo servità nella tag "$mail_to = $email;" nel sistema di invio.
Ho tutto ma mi manca solo questo caricamento delle e-mail. Grazie a tutti per le risposte. Posterei l'intero codice ma nn posso.
-
Ciao the_dream.
Potresti usare la funzione file(); per ottenere un array che per ogni indice abbia una riga del file (comprensivo del carattere di a capo, attenzione e poi tramite la funzione substr(); intercettare la riga che inizia per EMAIL che ti andrai ad esplodere tramite la funzione explode();
Una volta esplosa la riga, beh...immagino il resto ti venga facile.
Mi permetto di farti pero' un paio di considerazioni:
- hai detto di avere 1000 indirizzi mail, combinato così quel file dovrai verificare con lo script 6000 righe....hai idea del tempo che ci starà ? E di quanto appesantirai il server? Se proprio devi far così allora ti consiglio vivamente di creare una riga per ogni utente dove metti tutto utilizzando un separatore univoco (esempio: assdf;dzvj80;[email protected];04/01/09 14:23;000.000.000.000) così da alleggerire il codice senza dover utilizzare la funzione substr(); utilizzerai direttamente l'explode(); tirandoti fuori l'indirizzo mail
- Scontato a dirsi......la miglior soluzione per queste cose è utilizzare un Database
- Attenzione che quasi tutti i servizi di Hosting non permettono invii di n mila mail, solitamente tagliano a 100-150 invii dopo di ché dovrai stoppare il tuo script per qualche secondo per poi riprendere l'invio delle successive email.
-
Grazie mille per la tua risposta, dopo la tua risposta molto completa mi sono dato a fare alcuni test e alcune prove, ma con scarsissimi risultati, per nn dire nulli. Segue il codice completo del file send.php. Se riuscissi a integrarlo con quello che hai scritto saresti il mio dio
<?PHP // Tutti gli elementi caricabili // $mese = $_POST['mese']; $messaggio = nl2br($_POST['messaggio']); $da = "Sevenshard"; $linkweb = "link_del_web"; ////// funzione che carica la lista delle e-mail ////// // Processo di controllo in modo che ogni campo DEVE essere completo $mese e $ messaggio proviene dal form // if ($mese == null) { print "Errore: è necessario compilare il campo 'Mese'"; } else { if ($messaggio == null) { print "Errore: è necessario compilare il campo 'Messaggio'"; } else { // Email // $mail_to = $email; $mail_from = $da; $mail_subject = "News-Letter del $mese"; $mail_body = " <p><font color=#000000>$messaggio</font></p> <p><font color=#FF0000>Lo staff di $da</font></p>"; // Intestazioni HTML // $mail_in_html = "MIME-Version: 1.0\r\n"; $mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n"; $mail_in_html .= "From: <$mail_from>"; // Errori / Sucesso // if (mail($mail_to, $mail_subject, $mail_body, $mail_in_html)) { print "Email inviata con successo!"; } else { print "Errore"; } } } ?>
-
Questo dovrebbe andare, per ora eseguilo così com'è. Ti ho messo un echo alla fine per verificare che estragga quel che interessa.
Se tutto va bene elimina l'echo e la variabile $destinatari conterrà tutti gli indirizzi email.
[php]<?php
$array=file("lista_email.scp");
$i=count($array)-1;
$u=0;
$destinatari="";
while ($u<=$i)
{
if (substr($array*, 0, 5) == "EMAIL")
{
$email=explode("=", $array*);
$destinatari.=substr($email[1],0,-1).";";
}
$u=$u+1;
}
echo $destinatari;
?>[/php]
-
Ok... funziona grazie mille!!!!
-
Bene, alla prossima.