Amento Skrevet 21. juni 2006 Del Skrevet 21. juni 2006 Jeg trenger altså et newsletter script, men klarer ikke å finne noe. Alle koster penger osv. Det jeg trenger er kun en plass hvor folk kan skrive mail'en sin og en submit knapp. Deretter sendes det til en mail med fast subject som f.eks "Ny mail registrert for newsletter" hadde vært kjempefint om noen hadde visst av et som funker PS! har ikke SQL, så kan ikke bruke script som trenger dette... Lenke til kommentar
kjey Skrevet 21. juni 2006 Del Skrevet 21. juni 2006 (endret) Lagde en liten kode her som lagrer personene i en tekstfil, og en funksjon som du bruker til å sende ut nyhetsbrevene dine: <?php function newsletter($email) { if (!eregi("[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*.[a-z]{2,3}", $email)) { Print ("The e-email is not valid!"); } elseif (empty($email)) { Print ("You need to fill out your e-mail adress!"); } else { // Writing to a file named newsletter.txt $file = fopen("newsletter.txt", "a+"); $line = $email . "***---***"; $line = str_replace("\r\n", "<br>", $line); fwrite($fp, $line); fwrite($fp, "\n"); fclose(); // Sending a mail to your mail mail("[email protected]", "New mail in your newsletter archive!", "This mail is registered: " . $email); } } function send_newsletter($subject, $message) { $array = file("newsletter.txt"); foreach ($array as $line) { $next = explode("***---***", $line); mail($next[0], $subject, $message); } Print ("The newsletter has been sent."); } ?> Endret 21. juni 2006 av kjey Lenke til kommentar
Jonhoo Skrevet 21. juni 2006 Del Skrevet 21. juni 2006 Liten typo der: fwrite($fp, $line); fwrite($fp, "\n"); skal være fwrite($file, $line); fwrite($file, "\n"); Hvis jeg ikke tar helt feil Lenke til kommentar
kjey Skrevet 21. juni 2006 Del Skrevet 21. juni 2006 Stemmer det! Takk for rettingen Lenke til kommentar
Amento Skrevet 22. juni 2006 Forfatter Del Skrevet 22. juni 2006 wow! takk! Skjønte ikke helt hva scriptet gjorde... Kan du forklare litt bedre hva det gjør? Lenke til kommentar
kjey Skrevet 22. juni 2006 Del Skrevet 22. juni 2006 (endret) Okay, den øverste funksjonen som heter "newsletter" sjekker først om emailen brukeren har skrevet inn er gyldig og om det er skrevet noe i tekstboksen i det hele tatt. Hvis alt går som det skal lagres email-adressen i en tekstfil som heter "newsletter.txt" slik at du kan sende dem mail senere. Den andre funksjonen som heter "send_newsletter" er en funksjon som brukes til å sende alle som har registrert seg et nyhetsbrev. Altså kan du skrive nyheten på nettet og trykke send, så sender den til alle mailadressene som er lagret i registeret ditt. Jeg har nå laget det litt lettere slik at du bare kan kopiere og lime inn. Legg inn denne koden i en fil som heter: newsletter_functions.php Skjult tekst: (Marker innholdet i feltet for å se teksten): <?php function newsletter($email) { if (empty($email)) { Print ("You need to fill out your e-mail adress!"); } elseif (!eregi("[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*.[a-z]{2,3}", $email)) { Print ("The e-email is not valid!"); } else { // Writing to a file named newsletter.txt $file = fopen("newsletter.txt", "a+"); $line = $email . "***---***"; $line = str_replace("\r\n", "<br>", $line); fwrite($file, $line); fwrite($file, "\n"); fclose($file); // Sending a mail to your mail mail("[email protected]", "New mail in your newsletter archive!", "This mail is registered: " . $email); Print ("You are know registered in the newsletter archive!"); } } function send_newsletter($subject, $message) { $array = file("newsletter.txt"); foreach ($array as $line) { $next = explode("***---***", $line); mail($next[0], $subject, $message); } Print ("The newsletter has been sent."); } ?> Her er koden for å formen som folk kan registrere seg på: Skjult tekst: (Marker innholdet i feltet for å se teksten): <?php require_once("newsletter_functions.php"); if (!isset($_POST['register'])) { ?> <form action="" method="post"> <input type="text" name="email" /> <input type="submit" name="register" /> </form> <?php } else { newsletter($_POST['email']); } ?> Og her er koden for formen som du kan sende nyhetsbrevene til brukerne: Skjult tekst: (Marker innholdet i feltet for å se teksten): <?php require_once("newsletter_functions.php"); if (!isset($_POST['send'])) { ?> <form action="" method="post"> <input type="text" name="subject" /> <textarea name="message"></textarea> <input type="submit" name="send" /> </form> <?php } else { send_newsletter($_POST['subject'], $_POST['message']); } ?> Håper det fungerer Endret 22. juni 2006 av kjey Lenke til kommentar
Amento Skrevet 22. juni 2006 Forfatter Del Skrevet 22. juni 2006 (endret) Warning: fopen(newsletter.txt): failed to open stream: Permission denied in /home/customers/kibneb/public_html/pages/newsletter_functions.php on line 11 Warning: fwrite(): supplied argument is not a valid stream resource in /home/customers/kibneb/public_html/pages/newsletter_functions.php on line 14 Warning: fwrite(): supplied argument is not a valid stream resource in /home/customers/kibneb/public_html/pages/newsletter_functions.php on line 15 Warning: fclose(): supplied argument is not a valid stream resource in /home/customers/kibneb/public_html/pages/newsletter_functions.php on line 16 You are know registered in the newsletter archive! hmm... Det første skjønte jeg, Må sette newsletter.txt til 777 ikke sant? BTW, er det mulig å gjøre dette gjennom dreamweaver? Det andre skjønte jeg ikke... EDIT: Ok, da jeg skiftet tilgangen til newsletter.txt til 777 så forsvant de andre error'ene også. jeg prøvde å melde på en mail til nyhetsbrevet, men ingenting skjedde... Er det noen feil i scriptet eller noe? Endret 22. juni 2006 av Zathardor Lenke til kommentar
kjey Skrevet 22. juni 2006 Del Skrevet 22. juni 2006 (endret) Hmmm... jeg prøvde ut scriptet, alt går jo bra utenom at det ikke sendes ut noen nyhetsbrev til noen av dem som er i registeret. Mail-adressen skal man få lagret! Husk at du må endre denne kodelinjen da slik at det står din mail og ikke [email protected]! Får du noen andre feilmeldinger, eller er alt borte? mail("[email protected]", "New mail in your newsletter archive!", "This mail is registered: " . $email); Noen andre som kanskje har litt bedre syn enn meg? Er noe galt i send_newsletter() funksjonen? Endret 22. juni 2006 av kjey Lenke til kommentar
Amento Skrevet 22. juni 2006 Forfatter Del Skrevet 22. juni 2006 (endret) Skiftet det til min adresse ja, har forandre t litt beskjeder og liknende litt, slik at de ble på norsk, men det skal da ikke ha noe å si... ingen feilmeldingen kommer fram, problemet er egentlig bare at den ikke skriver mail adressene inn i newsletter.txt. Vet ikke om det hjelper men her er siden: Kibneb Trykk på bildet for å komme inn på siden, trykk linken "test" nederst for å komme til form'en. EDIT: Og så får jeg ikke noe mail om at en mail-adresse er registrert... Endret 22. juni 2006 av Zathardor Lenke til kommentar
kjey Skrevet 22. juni 2006 Del Skrevet 22. juni 2006 (endret) Alt det du sier fungerer hos meg, men som jeg sa over vil ikke nyhetsbrevene bli sendt ut til de som er lagret Slik satt jeg det opp: Skjult tekst: (Marker innholdet i feltet for å se teksten): mal.php <html> <head> </head> <body> <?php require_once("newsletter_functions.php"); if (!isset($_POST['register'])) { ?> <form action="" method="post"> <input type="text" name="email" /> <input type="submit" name="register" /> </form> <?php } else { newsletter($_POST['email']); } ?> <?php if (!isset($_POST['send'])) { ?> <form action="" method="post"> <input type="text" name="subject" /> <textarea name="message"></textarea> <input type="submit" name="send" /> </form> <?php } else { send_newsletter($_POST['subject'], $_POST['message']); } ?> </body> </html> newsletter_functions.php: <?php function newsletter($email) { if (empty($email)) { Print ("You need to fill out your e-mail adress!"); } elseif (!eregi("[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*.[a-z]{2,3}", $email)) { Print ("The e-email is not valid!"); } else { // Writing to a file named newsletter.txt $file = fopen("newsletter.txt", "a+"); $line = $email . "***---***"; $line = str_replace("\r\n", "<br>", $line); fwrite($file, $line); fwrite($file, "\n"); fclose($file); // Sending a mail to your mail mail("[email protected]", "New mail in your newsletter archive!", "This mail is registered: " . $email); Print ("You are know registered in the newsletter archive!"); } } function send_newsletter($subject, $message) { $array = file("newsletter.txt"); foreach ($array as $line) { $next = explode("***---***", $line); mail($next[0], $subject, $message); } Print ("The newsletter has been sent."); } ?> Skal funke fett dette... Endret 22. juni 2006 av kjey Lenke til kommentar
Amento Skrevet 22. juni 2006 Forfatter Del Skrevet 22. juni 2006 Hva i alle dager...? prøv å registrer deg på nyhetsbrevet da, åsså kan jeg sjekke om det ble registrert... Lenke til kommentar
kjey Skrevet 22. juni 2006 Del Skrevet 22. juni 2006 (endret) Jepp, meldte meg på jeg Åpne newsletter.txt og sjekk om det ligger en ny mail der da. Redigerte forrige post bare så du vet det... Endret 22. juni 2006 av kjey Lenke til kommentar
Amento Skrevet 22. juni 2006 Forfatter Del Skrevet 22. juni 2006 Kom ingenting jo! Altså, tekstfila heter newsletter.txt og er 777. hvis det har vært noe galt med den altså navnet, filtype etc, så hadde det kommer opp error ikke sant? i såfall så er det ikke noe galt med den... Så hva i alle dager er galt? hele siden ligger i en mappe som heter public_html, kan dette være problemet? At siden liksom ikke ligger i / men i /public_html/ ?? Lenke til kommentar
kjey Skrevet 22. juni 2006 Del Skrevet 22. juni 2006 (endret) Det skal komme opp error hvis php ikke får kontakt med filen, men jeg kjønner ikke hva du har gjort feil. Prøv kopier kodene jeg la ut i posten kl: 17:37 og legg den ut. Trenger ikke å sette til 777 så vidt jeg vet, vet ikke hva det er til engang, for jeg har aldri hatt bruk for å vite det Send meg msn-adressen din hvis du har på PM... Endret 22. juni 2006 av kjey Lenke til kommentar
ZoRaC Skrevet 22. juni 2006 Del Skrevet 22. juni 2006 ini_set("display_errors", 1); error_reporting(E_ALL); Lenke til kommentar
parallax313 Skrevet 20. juli 2006 Del Skrevet 20. juli 2006 (endret) Satt og lagde et enkelt SQL-basert nyhetsskript i dag for de som er interesserte. Det sjekker om brukeren har skrevet inn noe i feltet, om emailen er gyldig, og om den eksisterer i databasen. Subscribe.php Skjult tekst: (Marker innholdet i feltet for å se teksten): <h3>Subscribe To Newsletter</h3> <?php require_once("db.php"); ?> <?php if ($_POST['submit'] == TRUE) { $email = stripslashes(strip_tags($_POST['email'])); if(empty($email)) { echo "The E-Mail was not added to the newsarchive!<br><br>Please fill in all the required fields."; } elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { echo "The E-Mail was not added to the newsarchive!<br><br>The E-Mail address is invalid."; } elseif($email) { $sql = mysql_query("SELECT * FROM newsletter WHERE Email='$email'"); $result = mysql_num_rows($sql); if($result!="0"){ echo "The E-Mail was not added to the newsarchive!<br><br>The E-Mail address is already registered in the newsletter archive!"; } else { $email2 = mysql_real_escape_string($_POST['Email']); $result = mysql_query("INSERT INTO newsletter (`Email`) VALUES ('$email')"); echo "Your E-Mail address has now been registered in the newsletter archive!"; //mail("[email protected]", "New Subscriber!", "A visitor with this E-Mail has subscribed to your newsletter: " . $email); } } } else { ?> <form method="post" action=""> <p> <label for="email">E-mail</label> <input id="email" name="email" type="text" size="50" maxlength="100" /><br /> <label for="submit"> </label> <input id="submit" class="button" type="submit" name="submit" value="Send" /> </p> </form> <?php } ?> Unscribe.php Skjult tekst: (Marker innholdet i feltet for å se teksten): <h3>Unsubscribe From Newsletter</h3> <?php require_once("db.php"); ?> <?php if ($_POST['submit'] == TRUE) { $email = stripslashes(strip_tags($_POST['email'])); if(empty($email)) { echo "The E-Mail was not removed from the newsarchive!<br><br>Please fill in all the required fields."; } elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { echo "The E-Mail was not removed from the newsarchive!<br><br>The E-Mail address is invalid."; } elseif($email) { $sql = mysql_query("SELECT * FROM newsletter WHERE Email='$email'"); $result = mysql_num_rows($sql); if($result!="1"){ echo "The E-Mail was not removed from the newsarchive!<br><br>The E-Mail address does not exist in the newsletter archive!"; } else { $email2 = mysql_real_escape_string($_POST['Email']); $result = mysql_query("DELETE FROM newsletter WHERE email = '$email'"); echo "Your E-Mail address has now been removed from the newsletter archive!"; //mail("[email protected]", "User unsubscribed!", "A user with this E-Mail has unsubscribed from your newsletter: " . $email); } } } else { ?> <form method="post" action=""> <p> <label for="email">E-mail</label> <input id="email" name="email" type="text" size="50" maxlength="100" /><br /> <label for="submit"> </label> <input id="submit" class="button" type="submit" name="submit" value="Send" /> </p> </form> <?php } ?> Send_newsletter.php Skjult tekst: (Marker innholdet i feltet for å se teksten): <?php require_once("db.php"); ?> <?php if ($_POST['submit'] == TRUE) { $subject = $_POST['Subject']; $message = $_POST['Message']; $message2 = ' <html> <head> <title>Newsletter from you!</title> </head> <body> <p>'.nl2br($message).'</p> </body> </html> '; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: [email protected]'; $query = mysql_query('SELECT * FROM newsletter'); $mails = ''; while ($r = mysql_fetch_array($query)) { $mails .= $r['Email'] . ','; } mail($mails, $subject, $message2, $headers); echo "Mail was sent to:<br>"; echo "$mails"; } else { ?> <h3>Send Newsletter</h3> <form method="post" action="<?php echo $PHP_SELF ?>"> Subject: <input name="Subject" size="44" maxlength="255"> <br> Message: <textarea name="Message" rows="20" cols="40"></textarea> <br> <input type="submit" name="submit" value="Send Newsletter"> </form> <? } ?> Endret 20. juli 2006 av parallax313 Lenke til kommentar
ZoRaC Skrevet 21. juli 2006 Del Skrevet 21. juli 2006 (endret) Hvorfor ha 2 filer for subscribe/unsubscribe? <h3>Subscribe/Unsubscribe To Newsletter</h3> <?php require_once("db.php"); ?> <?php if ($_POST['submit'] == TRUE) { $email = mysql_real_escape_string(strip_tags($_POST['email'])); $what = mysql_real_escape_string(strip_tags($_POST['what'])); if(empty($email)) { echo "Please fill in all the required fields."; } elseif (!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { echo "The E-Mail address is invalid."; } elseif (($email) && ($what=="subscribe") { $sql = mysql_query("SELECT Email FROM newsletter WHERE Email='$email'"); $result = mysql_num_rows($sql); if ($result!=0){ echo "The E-Mail address is already registered in the newsletter archive!"; } else { $result = mysql_query("INSERT INTO newsletter (`Email`) VALUES ('$email')"); echo "Your E-Mail address has now been registered in the newsletter archive!"; } } elseif (($email) && ($what=="unsubscribe") { $sql = mysql_query("SELECT Email FROM newsletter WHERE Email='$email'"); $result = mysql_num_rows($sql); if($result!=1){ echo "The E-Mail address does not exist in the newsletter archive!"; } else { $result = mysql_query("DELETE FROM newsletter WHERE email = '$email'"); echo "Your E-Mail address has now been removed from the newsletter archive!"; } } } else { ?> <form method="post" action=""> <p> <label for="email">E-mail</label> <input id="email" name="email" type="text" size="50" maxlength="100" /><br /> Subscribe <input name="what" type="radio" value="subscribe"/><br /> Unsubscribe <input name="what" type="radio" value="unsubscribe"/><br /> <label for="submit"> </label> <input id="submit" class="button" type="submit" name="submit" value="Send" /> </p> </form> <?php } ?> Ikke testet! Tror også det er greit med en strip_tags og stripslashes på $message og $subject før du sender. Regner med det bare er admin som kan sende, så trenger vel ikke sjekke innholdet for "ulumskheter" Endret 21. juli 2006 av ZoRaC Lenke til kommentar
parallax313 Skrevet 21. juli 2006 Del Skrevet 21. juli 2006 (endret) Nei, det er meningen at det er bare admin som skal sende (putt den i en passord-beskyttet mappe). Takk for tips, tenkte ikke på å lage de to i samma fila gitt EDIT: Jeg fikk testa fila nå, og det var to småfeil ja. elseif (($email) && ($what=="subscribe") { elseif (($email) && ($what=="unsubscribe") { Husk å lukke føre på en ekstra ) bak elseif-utrykkene Endret 21. juli 2006 av parallax313 Lenke til kommentar
parallax313 Skrevet 28. august 2006 Del Skrevet 28. august 2006 Litt gammel topic, men veldig relevant spørsmål. Når jeg sender ut mailen til brukerne, vises mailene til alle folkene i "To/Til"-feltet. Lurer på om det er en måte og hindre dette på, sånn at mailen til hver enkelt bruker kun vises, eller om det kan stå "Bruker" eller noe annet custom-definert der? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå