Controle nodig, voor dat ie in de lib gaat!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dalando De Zuil

Dalando De Zuil

24/10/2010 18:41:55
Quote Anchor link
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<?php
/* SQL CODE:

CREATE TABLE IF NOT EXISTS `dalanmail` (
  `email` varchar(80) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

*/


$settings = array();

////// Settings


$settings['mysqlhost'] = ""; // mysql host
$settings['mysqluser'] = ""; // mysql user
$settings['mysqlpass'] = ""; // Mysql pass
$settings['mysqldatb'] = "";; // Mysql database

$settings['from'] = ""; // Webmaster email
$settings['pass'] = ""; // Webmaster password to send mails


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////// Functions

function valid_email($email){
//check email format
    if (filter_var($email, FILTER_VALIDATE_EMAIL) == $email){
        //check if the domain has MX entries
        $aux = explode('@',$email);
        return checkdnsrr($aux[1],'MX');
    }

    return false;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

$mysqlconnection = mysql_connect($settings['mysqlhost'], $settings['mysqluser'], $settings['mysqlpass']);
$mysqlselectdb = mysql_select_db($settings['mysqldatb'], $mysqlconnection);

if(!$mysqlconnection){
    echo 'Error: could not connect to database!<br/>';
    exit;
}

if(!$mysqlselectdb){
    echo 'Error: could not select database!<br/>';
    exit;
}


if(isset($_GET['exec']) && $_GET['exec'] == "sendmail"){
    if($_SERVER['REQUEST_METHOD'] == "POST"){
        if($_POST['pass'] == $settings['pass']){
            $getqry = "
                SELECT *
                FROM dalanmail
            "
;
            if($res = mysql_query($getqry)){
                if(mysql_num_rows($res) == 0){
                    echo 'Noone is subscribed!<br/>';
                }

                else
                {
                    while($row = mysql_fetch_assoc($res)){
                        mail($row['email'], htmlentities($_POST['subject']), $_POST['message'], 'Content-type: text/html; charset=iso-8859-1');
                    }

                    echo 'Mail was send!<br/>';
                }
            }

            else
            {
                echo 'Error: Mysql error!<br/>';
            }
        }

        else
        {
            echo 'Password is not correct!<br/>';
        }
    }

    else
    {
        ?>

        <h1>Send mail</h1><br/>
        <form action="?exec=sendmail" method="post">
        Subject: <input type="text" name="subject"/><br/>
        Content:<br/>
        <textarea cols="50" rows="8" name="message"></textarea><br/>
        Password: <input type="password" name="pass"/>
        <input type="submit" value="Send"/>
        </form>
        <?php
    }
}

else
{
    if($_SERVER['REQUEST_METHOD'] == "POST"){
        if($_POST['subscribe'] == "subscribe"){
            if(valid_email($_POST['email']) == true){
                $postqry = "
                            INSERT INTO dalanmail
                            (
                                email
                            )
                            VALUES
                            (
                                '"
. mysql_real_escape_string($_POST['email']) ."'
                            )
                "
;
                if(mysql_query($postqry)){
                    echo 'Subscribed!<br/>';
                }

                else
                {
                    echo 'Error: Mysql error<br/>';
                }
            }

            else
            {
                echo 'Email adres is not valid.<br/>';
            }
        }

        elseif($_POST['subscribe'] == "unsubscribe"){
            if(valid_email($_POST['email']) == true){
                $deleteqry = "
                            DELETE FROM dalanmail
                            WHERE email = '"
. mysql_real_escape_string($_POST['email']) ."'";
                if(mysql_query($deleteqry)){
                    if(mysql_affected_rows() == 0){
                        echo 'Email adress does not match to our database!<br/>';
                    }

                    else
                    {
                        echo 'You where deleted from our mailing list!<br/>';
                    }
                }

                else
                {
                    echo 'Error: Mysql error';
                }
            }

            else
            {
                echo 'Your email adress was not valid.';
            }
        }

        else
        {
            echo 'Not an valid post method?<br/>';
        }
    }

    else
    {
        ?>

        <form action="" method="post">
        Email adress: <input type="text" name="email"/>
        <input type="radio" name="subscribe" value="subscribe" checked="checked"/>Subscribe |
        <input type="radio" name="subscribe" value="unsubscribe"/>Unsubscribe<br/>
        <input type="submit" value="(un)subscribe!"/><br/>
        </form>
        <?php
    }
}

?>


Ziehier mijn eigen nieuwsletter systeem, heel simpel, toch weer een leuke uitdaging.
Ik denk, laat ik em eerst maar even keuren.

Nou, wat vinden jullie ervan?

Edit: voorbeeld:
http://prive.alphenweer.nl/phphulp/dalanmail.php
En om mails te versturen:
http://prive.alphenweer.nl/phphulp/dalanmail.php?exec=sendmail

Wat ik nog ga doen is:
-from header zetten in de mail
-empty checks doen, helemaal vergeten (dom, dom dom dom!)
Gewijzigd op 24/10/2010 19:27:22 door Dalando De Zuil
 
PHP hulp

PHP hulp

04/05/2024 05:25:37
 
P-ter AA

P-ter AA

24/10/2010 19:55:14
Quote Anchor link
Kan helaas niet keuren.. Daar ben ik niet goed genoeg voor.. Maar wow wat is dit netjes! Niet te vergelijken met de rotzooi die ik er altijd van maak :O
 
Vincent Huisman

Vincent Huisman

24/10/2010 20:05:32
Quote Anchor link
ik zou eerder gebruik maken van swiftmailer oid, dan zit je altijd goed
 
Dalando De Zuil

Dalando De Zuil

24/10/2010 20:45:44
Quote Anchor link
Vincent Huisman op 24/10/2010 20:05:32:
ik zou eerder gebruik maken van swiftmailer oid, dan zit je altijd goed


Ik zou geen 3Mb op een heel klein servertje neerzetten hoor.
Dus dit is vooral praktisch voor kleinere websites =)
Gewijzigd op 24/10/2010 20:46:06 door Dalando De Zuil
 
Joakim Broden

Joakim Broden

25/10/2010 08:39:35
Quote Anchor link
Dalando De Zuil op 24/10/2010 20:45:44:
Vincent Huisman op 24/10/2010 20:05:32:
ik zou eerder gebruik maken van swiftmailer oid, dan zit je altijd goed


Ik zou geen 3Mb op een heel klein servertje neerzetten hoor.
Dus dit is vooral praktisch voor kleinere websites =)


Als je het doet doe het dan goed, bijna alles komt in de spaminbox via de standaard mail functie, tevens kap eens met die achterlijke namen 'dalanmail' doh.....

Verder heel even snel gekeken en zag er redelijk uit, eindelijk eens goede insprining, dacht dat je het nooit zou leren..

Heb je je wel eens verdiept in nieuwsbrieven? Het is heel iets anders dan een website, wist je bijvoorbeeld dat je een nieuwsbrief uit tabellen maakt en niet uit div's??
 
TJVB tvb

TJVB tvb

25/10/2010 09:22:42
Quote Anchor link
Mijn korte indruk

Waar staat je commentaar?
Waarom gebruik je mail? Als die 3mb al te veel is zou ik toch eens gaan kijken wat voor server/hosting pakket je hebt.
Scheiding verwerking/output? Je hebt je output (html) direct in je php staan. Stop het eerst in een variabele en laat het aan het einde zien. Dat maakt het ook beter te integreren.

Daarnaast, nieuwsbrief met alleen tekst is niet echt spannend. En alleen html is niet altijd te lezen. Dus eigenlijk moet je de plain text en de html versie meesturen.

Opmerking over checkdnsrr is ook wel handig:
5.3.0 This function is now available on Windows platforms.
Veel hosters draaien dit nog niet.


@Oetzie, wat is er mis met dalanmail? Je ziet wel vaker projecten waarbij de naam van de maker er in is verwerkt. Daar zie ik nog niet echt een probleem in. De nieuwsbrief module is ook een standaard naam, dit maakt het wat unieker.
 
Toby hinloopen

toby hinloopen

25/10/2010 11:22:31
Quote Anchor link
Een hoop nested if- else'jes. Misschien werken met try, throw en catch?
 



Overzicht Reageren

 
 

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.