Niewsbrief systeem

Door Tom Beuckelaere, 22 jaar geleden, 15.542x bekeken

Ik heb een nieuwsbrief systeempje geschreven die gemakkelijk integreerbaar is in elk design.

Omvat 9 bestanden
*table.sql
*db_settings.php
*messaging.php
*subscribe.php
*subscribe_handler.php
*unsubscribe.php
*unsubscribe_handler.php
*newsletter.php
*news_handler.php

Mogelijkheden:
*De gebruiker kan zich aanmelden voor de nieuwsbrief
*De gebruiker kan kiezen of hij een html of tekst email wil ontvangen
*De gebruiker kan zich afmelden voor de nieuwsbrief
*De beheerder kan een onderwerp en bericht opgeven
*De beheerder kan een nieuwsbrief verzenden naar iedereen die html of tekst email wil ontvangen
*De beheerder kan een nieuwsbrief verzenden naar iedereen die een html email wil ontvangen (als je een html brief hebt opgemaakt)
*De beheerder kan een nieuwsbrief verzenden naar idereen die een tekst email wil ontvangen (als je een tekst brief hebt opgemaakt)
*Alles werkt met 1 db en 1 tabel.
*De errors en berichten zijn appart te wijzigen in het bestand messaging.php
*De db configuratie kun je wijzigen in db_settings.php

Gesponsorde koppelingen

PHP script bestanden

  1. niewsbrief-systeem

 

Er zijn 55 reacties op 'Niewsbrief systeem'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Niek s
niek s
22 jaar geleden
 
0 +1 -0 -1
voorbeeldje ofzo?
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Nee voorlopig geen voorbeeld.
K i p
K i p
22 jaar geleden
 
0 +1 -0 -1
Om een .exe bestand als voorbeeld te geven is niet echt handig. Mac gebruikers kunnen hier NIKS mee.
Edit:
Neem voortaan .zip ofzo in plaats van .exe

Edit:
Is nu aangepast:-) Bedankt
Richard de Boer
Richard de Boer
22 jaar geleden
 
0 +1 -0 -1
Mooi script hoor. Thnx
Aftertoucher
Aftertoucher
22 jaar geleden
 
0 +1 -0 -1
ik heb hem eff getest, maar zodra ik een mail verstuur krijg ik dit:

Quote:
Notice: Undefined variable: subject in /nieuwsbrief/news_handler.php on line 31

Notice: Undefined variable: message in /nieuwsbrief/news_handler.php on line 31
E-mail werd succesvol verzonden!


en verstuurd niks...
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
vraag me niet hoe het komt waarom dit weg is maar dit moet er staan voor de
//waar het voor moet
if ($sendto == '2')
{
//ervoor plaatsen
$sendto = $_POST['sendto'];
$subject = $_POST['subject'];
$message = $_POST['message'];
Aftertoucher
Aftertoucher
22 jaar geleden
 
0 +1 -0 -1
aha! thanks, die error is nu weg.. maarr... als ik nu een mail verstuur ontvang ik niks :S
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Ik heb het getest en ik krijg men mail met onderwerp en message
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Wel zitten er al email adressen in uw database? en kijk ook eens wat ze willen ontvangen en wat kiest voor versturen (beide, html, tekst)
Aftertoucher
Aftertoucher
22 jaar geleden
 
0 +1 -0 -1
ik had mijn eigen hotmail eerst aangemeld, daar kreeg ik toen ook een bevestiging van, maar bij mail versturen kreeg ik niks evenmin bij afmelden

daarna probeerde ik het op me outlook account en het werkte prima!
pokke hotmail^_^
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
nja hotmail doet altijd moeilijk he. Btw er worden geen mails verstuurd tijdens het afmelden van de nieuwsbrief ^_^
Aftertoucher
Aftertoucher
22 jaar geleden
 
0 +1 -0 -1
ohw, vandaar :P iig mooi script (Y)
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Dank u, het is men eerste script :d.
Jelmer -
Jelmer -
22 jaar geleden
 
0 +1 -0 -1
Even wat opmerkingen op de code. Op hoe het werkt ga ik even niet in simpelweg omdat ik het niet getest heb :)
- shorttags (<? ?> ipv <?php ?>, shorttags worden niet altijd ondersteund)

- geen controle op gebruikersinvoer ($_POST['html'] in subsribe_handler.php kan vanalles zijn)

- geen addslashes o.i.d. En aangezien magic_quotes_rpc er (gelukkig) binnenkort definitief uitgaat heb je een potentieel beveiligingslek gebakken. (SQL injection)

- database & berichten staan wel in aparte bestanden, maar from-emailadres niet.

- gerichte select-queries (dus niet *) zijn aanzienlijk sneller. Daarbij kan je met mysql_fetch_assoc() ook aardig sneller uitkomen dan fetch_object(), maar dat is gewoon eigen voorkeur, geen probleem. Zie ook Jan's testcase.

- In news_handler.php heb je eerst niet de string van $to binnen quotes (goed, aangezien het alleen een variabele is***) en later tweemaal wel. Variabelen horen niet binnen quotes, al zou ik het nog niet eens zo erg vinden als het is omdat hij binnen een string komt. Maar jij zet alleen een variabele, en niets meer binnen quotes.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$to
= "$obj->mail";
?>

***: Wel nutteloos om een kopie te maken van die variabele. Waarom niet direct $obj->mail gebruiken?
- iets vergeten? " == 'POST'" misschien :) (news_handler.php regel 8, in anderen ook trouwens)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if ($_SERVER['REQUEST_METHOD'])
?>


- Je hebt wel een hele vreemde en vooral inconsistente manier van inspringen. Bij if-lussen spring je 2 maal in (1 maal na de vraag, dan nog een keer na de { ) maar bij de while-lus spring je weer helemaal niet in. Soms spring je wel in bij een if-lus, dan weer niet, dan weer 2 keer.

Volgens mij waren dat alle opmerkingen die ik kon vinden, ik hoop dat je er wat aan hebt. Ik snap dat je nog maar een beginner bent, en het is zeker niet bedoelt als afkraken. Vragen kan je altijd stellen op het forum uiteraard.

edit: links naar leesvoer opgenomen.
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Kga binnekort updaten. Ja niet alles is perfect maar zoals ik zei, t is men eerste script en ook ik kan fouten maken he:d.
Ik ben altijd blij als men wijst op men fouten als het gegrond en beleefd is. dus dank je. Ik ga er in t vervolg rekening mee houden en ik ga de code aanpassen.
Remco
Remco
22 jaar geleden
 
0 +1 -0 -1
werkt dit script ook met een paginascript want daar heb ik al veel last mee gehad bij andere systemen
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Eerlijk gezegd ben ik niet echt mee met wat je exact bedoelt. Kun je dit mogelijk even uitleggen?
Aftertoucher
Aftertoucher
22 jaar geleden
 
0 +1 -0 -1
bijv. index.php?page=nieuwsbrief
Jelmer -
Jelmer -
22 jaar geleden
 
0 +1 -0 -1
Nee, het zijn gewoon losse bestandjes die iets moeten doen. Je roept de bestanden gewoon los op of include ze in je eigen pagina's.
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Nee daar wordt nie mee gewerkt aangezien ik het nog niet kan. puur link, dus action="handler.php"
Stefan van Iwaarden
Stefan van Iwaarden
22 jaar geleden
 
0 +1 -0 -1
je verstuurt het door middel van een while lus, dit kan, maar zodra je een db met een paar duizend adressen hebt gaat dat niet meer als je execution time op 30 seconden staat, dan zul je een andere oplossing moeten verzinnen.
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Oplossingen voor kleine sites he.
- wes  -
- wes -
22 jaar geleden
 
0 +1 -0 -1
dit script geeft je mail als spamlevel 3.1 mee, dat is hoog, erg hoog. Weet niet of je hoster daar zo blij mee is..
Herbert Foppen
Herbert Foppen
22 jaar geleden
 
0 +1 -0 -1
ik heb problemen als ik een plaatje in mn mail wil gebruiken.
ik heb gewoon als tekst erin gezet:

<img src="logo.jpg">
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Hoe verstuur je hem, heb je hem als html of beide verstuurd en behandel je je volledige mail als html? dmv html tags en zo?
Herbert Foppen
Herbert Foppen
22 jaar geleden
 
0 +1 -0 -1
yups..als een html-bestand

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<html>
<head>
etc..

</html>


Ik wil er een toolbar inzetten, zoals bijv. FCKEditor..moet kunnen toch??
Hmck9ni
Hmck9ni
22 jaar geleden
 
0 +1 -0 -1
waarom kan ik die bestandjes neit meer downloaden ...
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
terug downloadeble, was ff verdwenen
Sjoerd Wenker
Sjoerd Wenker
22 jaar geleden
 
0 +1 -0 -1
ik kijk wel of ik der wat mee kan
W VdB
W VdB
22 jaar geleden
 
0 +1 -0 -1
Als ik de mail verstuur komt er dit op:
Notice: Undefined variable: subject in /home/httpd/vhosts/game-fun.be/httpdocs/nieuwsbrief/news_handler.php on line 31

Notice: Undefined variable: message in /home/httpd/vhosts/game-fun.be/httpdocs/nieuwsbrief/news_handler.php on line 31
E-mail werd succesvol verzonden!

Als ik de mail dan ontvang ontvang ik als bericht in mijn inbox:
X-Qmail-Scanner-1.25st: added fake MIME-Version header MIME-Version: 1.0

Wat heb ik verkeerd gedaan?

Groetjes
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Het lijkt mij iets dat wss aan je hosting ligt want volgens mij is MIME iets die zorgt voor de verwerking van bepaalde dingen.
Robert Deiman
Robert Deiman
22 jaar geleden
 
0 +1 -0 -1
ZIe onderstaand, is een posst van de maker, eerder in dit venster ;) (zoeken kan wel eens helpen)
"
vraag me niet hoe het komt waarom dit weg is maar dit moet er staan voor de
//waar het voor moet
if ($sendto == '2')
{
//ervoor plaatsen
$sendto = $_POST['sendto'];
$subject = $_POST['subject'];
$message = $_POST['message'];
"
W VdB
W VdB
22 jaar geleden
 
0 +1 -0 -1
Bedankt ;)

Maar kan je eigenlijk nergens kijken hoeveel en welke e-mail adressen er zijn?
W VdB
W VdB
22 jaar geleden
 
0 +1 -0 -1
want dat is wel leuk om te weten, en dan kan ik altijd bv. de 100ste registreerder een cadeau ofzo geven
Roy -
Roy -
22 jaar geleden
 
0 +1 -0 -1
Als ik een html mail maak, dan laad hij de afbeeldingen niet zien! Ik heb al meerdere dingen geprobeerd, maar werkt niet..
Ik dacht ik gebruik Frontpage en maak daar een pagina in, dan moet het wel werken, dit is het code dat ik daar gemaakt heb:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>RoyServer Nieuwsbrief</title>
</head>
<body>
<p>
<img border="0" src="http://www.royserver.nl/banners/banner.png" width="468" height="60"></p>
RoyServer Test Nieuwsbrief!
<br>
<br>
<hr>
Copyright  2006 RoyServer.nl
</body>
</html>


Waarom laad hij de afbeelding niet zien?

Roy
Jurgen B
Jurgen B
22 jaar geleden
 
0 +1 -0 -1
Ik heb het script ook getest! Werkt met een paar kanttekeningen perfect maar zoals je aangeeft werkt het toevoegen van afbeeldingen niet!
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Afbeeldingen werken niet, hmmmm. Zou dit kunnen liggen aan een codering ofzo?
Mocht je een oplossing hebben gevond, ben ik blijze te horen.
Jeroen Spaans
Jeroen Spaans
22 jaar geleden
 
0 +1 -0 -1
Ey je kan nergens het script meer downloaden!!!!!
Tom Beuckelaere
Tom Beuckelaere
22 jaar geleden
 
0 +1 -0 -1
Nu terug wel :p
Paul
Paul
22 jaar geleden
 
0 +1 -0 -1
vraag me niet hoe het komt waarom dit weg is maar dit moet er staan voor de
//waar het voor moet
if ($sendto == '2')
{
//ervoor plaatsen
$sendto = $_POST['sendto'];
$subject = $_POST['subject'];
$message = $_POST['message'];


Dit snap ik dus echt niet....
En:
- ik zie geen onderwerp als ik m verstuurd heb...
- ik zie geen bericht wat ik gemaakt had...
Edit: - En ik zie mijn opgemaakte html teksten niet (kleur, e.d.)
Edit nog meer: In mijn design zetten, de code uit subscribe.php lukt ook niet...
Ik gebruik Dreamweaver 8, Mijndomein.nl server, alles correct ingevuld... Whats happening?!?!

Geen bericht en geen onderwerp, wat nu?!?!
Mark
Mark
21 jaar geleden
 
0 +1 -0 -1
Kan er niet iemand die de aanpassingen heeft gedaan zodat je geen foutmelding meer krijgt het script hier dan plaatsen?
Heb dezelfde fouten als hier gemeld en krijg het niet foutloos en werkend.

Mark
Ray Floyds
Ray Floyds
21 jaar geleden
 
0 +1 -0 -1
Iemand al een oplossing gevolden voor het plaatjes probleem ?!!
Colin aaaaaaa
Colin aaaaaaa
21 jaar geleden
 
0 +1 -0 -1
Ik zie ook niks... Alleen een afzender...

Geen onderwerp, niks. Dat is volgens mij alleen bij HTML. Dara krijg je die error ook bij.
Christophe Hollebeke
Christophe Hollebeke
21 jaar geleden
 
0 +1 -0 -1
Ik krijg altijd volgende melding: 'Wij konden geen bevestigingsmail opsturen!', nadat ik mij heb ingeschreven op het niewsbriefsysteem.

Ook als ik een nieuwsbrief wens te versturen, krijg ik volgende melding:
'Kon de mail niet versturen!'

Mail-adressen kan ik probleemloos toevoegen of verwijderen, maar mailen lukt niet! De mail-adressen staan ook correct vermeldt in de database.

Wie kan mij verder helpen?
Nathan Vileyn
Nathan Vileyn
21 jaar geleden
 
0 +1 -0 -1
als je een foto wilt invoegen heb ik ontdekt dat er \ wordt toegevoegd n je tags, hoe is dit te verhelpen?
Sean
sean
21 jaar geleden
 
0 +1 -0 -1
@iedereen die met het plaatjes probleem:

zet in je news_handler.php de volgende code op regel 30;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
$message
= str_replace("\n", "", $message);
$message = str_replace("\r", "", $message);
$message = str_replace("\"", "", str_replace("\\", "\"", $message));
?>


hiermee haal je de \ weg (tnx nathan voor de hint), die ervoor zorgen dat je css en plaatjes niet goed door komen...
Hugo L
Hugo L
20 jaar geleden
 
0 +1 -0 -1
Wat ben ik toch blij met jullie!!! precies wat ik zocht en werkt super!!!

Mijn complimenten van de schrijver van dit script!

@sean bedankt voor je stukje code :)
Thomas van Broekhoven
Thomas van Broekhoven
20 jaar geleden
 
0 +1 -0 -1
Thnks man, het werkt ;)
Tom Beuckelaere
Tom Beuckelaere
20 jaar geleden
 
0 +1 -0 -1
Best grappig dat men scriptje uit 2006 nog steeds goed werkt :D Aan iedereen bedankt voor de complimenten. Als k eens tijd heb schrijf ik er nog eens wat bij.

Tot dan

Tom Beuckelaere
Tom Swinkels
Tom Swinkels
20 jaar geleden
 
0 +1 -0 -1
Nja.. Ik vind het wel een mooi scriptje, maar beetje lastig gemaakt, aangezien je nu veel pagina's hebt!
Gaat dit ook bijvoorbeeld met 1 bestand en dan met 1 tabel dus alleen de tabel e-mail, dan kan ik hem namelijk uit een inlogsysteem de e-mails halen?

Als iemand dit zou kunnen maken? Of iemand weer die dit zou kunnen doen, of een bedrijf (Het hoeft niet gratis te zijn) Zoek het namelijk nu al zo lang!
Robert Deiman
Robert Deiman
20 jaar geleden
 
0 +1 -0 -1
@Tom

Het is juist eenvoudig met meerdere bestanden, de boel is keurig gescheiden, waardoor je snel kan vinden wat waar gebeurt. Eigenlijk is zoiets eenvoudiger en zeker gebruikersvriendelijker dan een lap code van duizenden regels.
Tom Swinkels
Tom Swinkels
20 jaar geleden
 
0 +1 -0 -1
Ok, maar is het te maken met alleen een table E-mail? En dan een tabel van wil je de nieuwsbrief ontvangen ja of nee, en dat je dan kunt kiezen inplaats van html, de alleen de leden die de nieuwsbrief willen ontangen en alleen de leden die de nieuwsbrief niet willen ontvangen?

Maar mij vraag was voornamelijk iemand die het zou kunnen maken, het hoeft niet gratis te zijn!

Owja, ik bedoel met een / weinig pagina Nieuwsbrief.php en nieuwsbriefverzenden.php
Nathan Vileyn
Nathan Vileyn
19 jaar geleden
 
0 +1 -0 -1
foto's lukken nog altijd niet bij mij...
dt staat in news_handler.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?
ini_set('display_errors', 1);
error_reporting(E_ALL);

include 'db_settings.php';
include 'messaging.php';

if ($_SERVER['REQUEST_METHOD'])
{

    if (!empty ($_POST['subject']))
    {

        if (!empty ($_POST['message']))
        {

            mysql_connect($hostname, $user, $password) or die($error3);
            mysql_select_db($db) or die($error4);
                        
            
            $sendto = $_POST['sendto'];
$subject = $_POST['subject'];
$message = $_POST['message'];
            if ($sendto == '2')
            {

                        
                $res = mysql_query("SELECT * FROM newsletter");
                while ($obj = mysql_fetch_object($res))
                {

                $to = $obj->email;
                $sender = "[email protected]";
                $name = "familievileyn.be nieuwsbrief";
                $headers = "From: 'familievileyn.be nieuwsbrief' <[email protected]>\r\n";
                $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $message = str_replace("\n", "", $message);
$message = str_replace("\r", "", $message);
$message = str_replace("/%22", "", $message);
$message = str_replace("\"", "", str_replace("\\", "\"", $message));


                mail($to, $subject, $message, $headers) or die ($error6);
                }

                echo $message1;
            
            }

            
            else if ($sendto == '1')
            {

                        
                $res = mysql_query("SELECT * FROM newsletter WHERE html = 1 ");
                while ($obj = mysql_fetch_object($res)) {
                $to = "$obj->email";
                $sender = "[email protected]";
                $name = "familievileyn.be nieuwsbrief";
                $headers = "From: 'familievileyn.be nieuwsbrief' <[email protected]>\r\n";
                $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    
                mail($to, $subject, $message, $headers) or die ($error6);
                }

                echo $message1;
            
            }

            
            else
            {
                        
                $res = mysql_query("SELECT * FROM newsletter WHERE html = 0 ");
                while ($obj = mysql_fetch_object($res)) {
                $to = "$obj->email";
                $sender = "[email protected]";
                $name = "familievileyn.be nieuwsbrief";
                $headers = "From: 'familievileyn.be nieuwsbrief' <[email protected]>\r\n";
    
                mail($to, $subject, $message, $headers) or die ($error6);
                }

                echo $message1;
            
            }
        }

    else
    {
    echo $error2;
    }
}

    
else
{
echo $error1;
}
}


?>
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Nick
nick
19 jaar geleden
 
0 +1 -0 -1
het lukt me niet ik krijg deze melding:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'nickspctips1991'@'localhost' (using password: YES) in /www/woelmuis.nl/n/i/c/nickspctips1991/htdocs/subscribe_handler.php on line 27
Er kon geen verbinding gelegd worden met de database!

maar ik heb alles juist ingevult.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. niewsbrief-systeem

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.