Willkommen bei Network & Security     remoteshell-security.com
Partnerseiten
login.php?sid=e748559c4e1fe7132ed0084516fd8129 profile.php?mode=register&sid=e748559c4e1fe7132ed0084516fd8129 faq.php?sid=e748559c4e1fe7132ed0084516fd8129 memberlist.php?sid=e748559c4e1fe7132ed0084516fd8129 search.php?sid=e748559c4e1fe7132ed0084516fd8129 index.php?sid=e748559c4e1fe7132ed0084516fd8129

Foren-Übersicht » Internetprogrammierung » [PHP] Newsletter-Script (Mailinglist)
Neues Thema eröffnen  Neue Antwort erstellen Vorheriges Thema anzeigen :: Nächstes Thema anzeigen 
[PHP] Newsletter-Script (Mailinglist)
BeitragVerfasst am: 28.12.2006 20:05 Antworten mit Zitat
4lx
Anmeldedatum: 02.01.2006
Beiträge: 369
Wohnort: /offtopic




Hi,
ich habe das Folgende gebaut, um über ein simples Frontend eine Nachricht an mehrere bekannte eMail-Adressen zu schicken.
Hier erstmal der Quelltext des Scripts:
Code:
<html>
 <head>
  <title>Mailinglist</title>
  <link rel="stylesheet" type="text/css" href="main.css">
 </head>
 <body>
  <br>
  <div style="background:#ffffff; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;">
  <div style="line-height:120%; padding:0.4em; background-color:#ffffff; border-bottom:1px solid #aaaaaa;">
  <div class="floatright"><span><img src="..." alt="..."/></span></div>
   <h1>Mailinglist</h1>
   <p>Hallo <?php echo getenv ('REMOTE_ADDR'); ?>, sie befinden dich auf dem <i>Webinterface der Mailinglist</i>.</p>
   <p>Bei Fragen bitte den <a href="..."">Administrator</a> ansprechen.</p>
   <p>Wenn alle Felder richtig ausgefüllt sind, dann wird eine eMail an alle in der Mailinglist gespeicherten Mitglieder gesendet.</p>
   <br>
   <form action="mailinglist.php" method="post">
    <table>
     <tr>
      <td align="right">Passwort:</td>
      <td><input name="Passwort" type="password" size="30" maxlength="30"></td>
     </tr>
     <tr>
      <td align="right">Ihr Name:
      <td><input type="text" size="30" name="versender"></td>
     </tr>
     <tr>
      <td align="right">Betreff:</td>
      <td><input type="text" size="30" name="betreff"></td>
     </tr>
    </table>
    <p>Inhalt: <textarea name="inhalt" rows="10" cols="50"></textarea></p>
    <p><input type="submit" value=" Senden "><input type="reset" value=" Zurücksetzen " ></p>
   </form>
   
   <?php
    if (md5($_POST['Passwort']) == "...:P:..") {
     $inhalt = $_POST['inhalt'] . "\n\n\nDiese Mail wurde am " . date("d.m.Y",time()) . " um " . date("H:i",time()). "Uhr von " . $_POST['versender'] . " versendet.";

     @mail("fu@gmail.com", "[ML] " . $_POST['betreff'],$inhalt,"From: info@....de\r\n");
     @mail("fara@gmail.com", "[ML] " . $_POST['betreff'],$inhalt,"From: info@....de\r\n");

     echo "<br>\n<font color=\"#00ba00\"><p>Die eMail wurde erfolgreich an die Mailinglist versand!</p></font>\n<p><a href=\"...\">Hier</a> kommen sie zur Hauptseite zurück.";}
   ?>
  </div>
  </div>
  <h6 align="right">(c) by <a href="...">4lx</a></h6>
 </body>
</html>


In dieser Ausführung funktioniert das ganz gut, ist aber ziemlich dirty.
Ich frage mich, wie ich die verschiedenen eMail-Adressen besser managen kann.
Ich habe es schon so probiert:
Code:
<?php
email[1] = "test@spam.de";
email[2] = "test@spam.de";
email[3] = "test@spam.de";

for ($i = 1; $i = 3; $i++) {
  @mail(email[$i], "betreff", "inhalt");}

Ich habe erwartet nun drei Mails im Postfach zu haben, stattdessen habe ich einen Mailbomber gebaut. o.O

Kann mir jemand sagen, wie ich das besser machen kann? Smile
Am schönsten wäre die Speicherung der Adressen in einer anderen Datei...

thx 4lx Smile

---------------------
PS: Web.de schreibt zwar, dass nur 500 Mails im Freemail-Postfach zugelassen sind, in Wirklichkeit lassen sie aber 510 zu. Mr. Green

_________________
"Das Staunen ist Anfang der Erkenntnis." -Platon

"Terrorismus ist die Zerstörung von Versorgungseinrichtungen, also Deichen, Wasserwerken, Krankenhäusern, Kraftwerken. Eben alles das, worauf die amerikanischen Bombenangriffe gegen Nordvietnam seit 1965 systematisch abzielten. Der Terrorismus operiert mit der Angst der Massen." - Ulrike Meinhof
Benutzer-Profile anzeigen Private Nachricht senden Jabber ID ICQ-Nummer
BeitragVerfasst am: 28.12.2006 21:17 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Ich habe mir jetzt nur den unteren Teil des Posts durchgelesen und das Script nicht beachtet aber hiermit:

Code:
for ($i = 1; $i = 3; $i++)


hast du eine Endlosschleife gebaut.

Es könnte z.B. lauten:

Code:
for ($i = 1; $i <= 3; $i++)


Jetzt würden darauf folgende Anweisungen dreimal ausgeführt.
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 28.12.2006 23:30 Antworten mit Zitat
4lx
Anmeldedatum: 02.01.2006
Beiträge: 369
Wohnort: /offtopic




@Cerox:
Ich habe jetzt folgenden Code gebastelt:
Code:
<?php

for ($i = 1; $i <= 3; $i++) {
@mail("meine@adres.se","Mail #" . $i,Test,"From: info@hase-abendlauf.de\r\n");
echo "Mail #" . $i . " versendet!\n";}

?>


Es wird zwar immer folgendes ausgegeben:
"Mail #1 versendet! Mail #2 versendet! Mail #3 versendet!"
aber es kommen irgendwie launenabhängig mal zwei oder mal drei Mails an...
Was mache ich falsch?^^

Un hat wer nen Lösungsansatz für das Auslagern des Arrays mit den eMail-Adressen? Bin echt php-kackn00b. Razz

thx Alex

_________________
"Das Staunen ist Anfang der Erkenntnis." -Platon

"Terrorismus ist die Zerstörung von Versorgungseinrichtungen, also Deichen, Wasserwerken, Krankenhäusern, Kraftwerken. Eben alles das, worauf die amerikanischen Bombenangriffe gegen Nordvietnam seit 1965 systematisch abzielten. Der Terrorismus operiert mit der Angst der Massen." - Ulrike Meinhof
Benutzer-Profile anzeigen Private Nachricht senden Jabber ID ICQ-Nummer
BeitragVerfasst am: 29.12.2006 01:35 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Zitat:
Es wird zwar immer folgendes ausgegeben:
"Mail #1 versendet! Mail #2 versendet! Mail #3 versendet!"
aber es kommen irgendwie launenabhängig mal zwei oder mal drei Mails an...


Dein Code hat zur Folge, dass die Meldung immer ausgegeben wird.

Bau mal ne if-Abfrage rein:

Code:
<?php

for ($i = 1; $i <= 3; $i++)
{
if (mail("meine@adres.se","Mail #" . $i,Test,"From: info@hase-abendlauf.de\r\n"));
     echo "Mail #" . $i . " versendet!\n";
}

?>


Zitat:
Un hat wer nen Lösungsansatz für das Auslagern des Arrays mit den eMail-Adressen?


Beschreibe doch mal was du vor hast. Willst du an eine Liste von Adressen eine E-Mail schicken? Dann wäre ja eine Textdatei ganz nett, wo in jeder Zeile eine E-Mail-Adresse steht.
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 29.12.2006 10:52 Antworten mit Zitat
BlackLotus
Anmeldedatum: 04.01.2006
Beiträge: 717
Wohnort: www and 127.0.0.1/localhost




Mmmh ich glaube freehoster hatten mal ne Sperre für mails angelegt... .
Damit gabs öfter mal kleine probs....
Entwederk mane mails nicht an oder viel zu spät...
Kanns daran liegen?

_________________
Eine Kette ist nur so stark wie ihr schwächstes Glied.

Die Welt wird nicht von denen bedroht die böse sind,sondern von denen die das Böse zulassen.
Albert Einstein

Man kommt nicht aus seiner Haut raus.....,
Nur Schlamm kann das Very Happy

http://blackwiki.bl.ohost.de
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 29.12.2006 11:53 Antworten mit Zitat
4lx
Anmeldedatum: 02.01.2006
Beiträge: 369
Wohnort: /offtopic




@Blacklotus:
Rofl! In der Tat, ich habe eben nochmal mein Postfach gescheckt und die dritte von drei Mails ist ne ganze Weile später gekommen.^^
Okay sry, dann klappt das wohl auf einem gekauften Webspace, habe es auf funpic getestet.

@all
Ich habe jetzt eine Idee bekommen...
Kann ich das mit dem Auslagern der Mails so machen?

mail.php
Code:
<?php
include "adressen.php";
for ($i = 1; $i <= $anzahl; $i++) {
@mail($email[$i],$betreff,$inhalt);}
?>


und dann adressen.php:
Code:
<?php
$anzahl = 3

$email[1] = "test1@web.de";
$email[2] = "test2@web.de";
$email[3] = "test3@web.de";
?>


Danke für die Hilfe Smile


----------------
Den Trick mit dem include hab ich mir beim Lotus-Manager abgeguckt. Razz

_________________
"Das Staunen ist Anfang der Erkenntnis." -Platon

"Terrorismus ist die Zerstörung von Versorgungseinrichtungen, also Deichen, Wasserwerken, Krankenhäusern, Kraftwerken. Eben alles das, worauf die amerikanischen Bombenangriffe gegen Nordvietnam seit 1965 systematisch abzielten. Der Terrorismus operiert mit der Angst der Massen." - Ulrike Meinhof
Benutzer-Profile anzeigen Private Nachricht senden Jabber ID ICQ-Nummer
BeitragVerfasst am: 29.12.2006 12:59 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Ja, kannst du aber was bringt das - es ist genauso gelöst wie vorher - du hast es nur auf zwei Dateien verteilt.

Die Variable $anzahl benötigst du nicht; der Schleifenkopf könnte auch so aussehen:

Code:
for ($i = 1; $i <count($email); $i++)


Die Funktion count zählt hierbei die Elemente des Arrays. Davon nochmal eins abziehen (< statt <=), da der Index ja bei 0 beginnt. Die Nummerierung solltest du dann bei deiner adressen.php auch bei 0 beginnen. Aber wie gesagt: Ne Textdatei wäre schon was komfortabler.
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 29.12.2006 14:26 Antworten mit Zitat
4lx
Anmeldedatum: 02.01.2006
Beiträge: 369
Wohnort: /offtopic




Okay, danke. Smile
Das ist schon mal eine gute Sache...

Ich will ja nicht auf die Nerven gehen... Aber wie bekomme ich das mit einer Text-Datei einfacher hin?^^
Ich kenne bis jetzt nur explode(), geht es noch einfacher?

thx nochmal

_________________
"Das Staunen ist Anfang der Erkenntnis." -Platon

"Terrorismus ist die Zerstörung von Versorgungseinrichtungen, also Deichen, Wasserwerken, Krankenhäusern, Kraftwerken. Eben alles das, worauf die amerikanischen Bombenangriffe gegen Nordvietnam seit 1965 systematisch abzielten. Der Terrorismus operiert mit der Angst der Massen." - Ulrike Meinhof
Benutzer-Profile anzeigen Private Nachricht senden Jabber ID ICQ-Nummer
BeitragVerfasst am: 29.12.2006 14:30 Antworten mit Zitat
duddits
Anmeldedatum: 03.01.2006
Beiträge: 569
Wohnort: /proc




Hi,

also für wie viele User soll den die Mailinliste konzepiert werden?

Denn ab einer bestimmten Anzahl lohnt sich auch das Verwenden von Textdateien nicht da die nicht schnell genug sind, sollte man evtl. über das Verwenden einer Datenbank nachdenken.

Meiner Meinung sollte man über den Einsatz einer Datenbank ab so 1000 Usern nachdenken, wenn es nur um das Festhalten der Email-Adressen geht.

Hier mal ein Beispiel wie man das Einlesen und Schreiben realisieren könnte:

Einlesen:
Code:
<?php
$filename = "mails.txt";
if(file_exists($filename))
{
 $file = fopen($filename,"r");
 if($file)
  {
   $arr = explode("\n",fgets($file));
   fclose($file);
  }
 }else{
 echo "$filename existiert nicht!";
 }
?>


Schreiben:
Code:
<form action="<?php echo $PHP_SELF; ?>">
Email-Adresse: <input name="email">
</form>
<?php
$file = fopen("mail.txt","a");
if($file)
 {
  fputs($file,$email."\n");
  fclose($file);
  }
?>


Natürlich muss du das Array $arr jetzt noch in deinen Beispiel einbinden.


EDIT:
Hmm ich kenne auch nur explode aber da gibt es mitsicherheit noch andere Möglichkeiten, man könnte sich ja eine extra Klasse amchen die einem das was vereinfacht aber ich glaube das macht nicht wirklich sinn.

mfg duddits


Zuletzt bearbeitet von duddits am 29.12.2006 22:15, insgesamt einmal bearbeitet

_________________
Quidquid agis, prudenter agas et respice finem!

Jabber ID: duddits@amessage.info
Webseite: http://www.remoteshell-security.com
Weblog: http://blog.remoteshell-security.com
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Jabber ID
BeitragVerfasst am: 29.12.2006 16:42 Antworten mit Zitat
4lx
Anmeldedatum: 02.01.2006
Beiträge: 369
Wohnort: /offtopic




@duddits:
Das ist wunderbar, da werde ich mich mal ranmachen, wenn ich Zeit habe (fahre ab morgen ne Woche in den Urlaub, also afk). thx

Naja, bis jetzt sind das acht Adressen. Very Happy
Ist für die Organisatoren eines Lauf-Events gedacht, interessant wird es aber wenn an alle zum Lauf Angemeldeten eine Benachritigung geschrieben werden soll. Darum habe ich mich nämlich noch gar nicht gekümmert. o.O

lg Alex

_________________
"Das Staunen ist Anfang der Erkenntnis." -Platon

"Terrorismus ist die Zerstörung von Versorgungseinrichtungen, also Deichen, Wasserwerken, Krankenhäusern, Kraftwerken. Eben alles das, worauf die amerikanischen Bombenangriffe gegen Nordvietnam seit 1965 systematisch abzielten. Der Terrorismus operiert mit der Angst der Massen." - Ulrike Meinhof
Benutzer-Profile anzeigen Private Nachricht senden Jabber ID ICQ-Nummer
BeitragVerfasst am: 29.12.2006 18:26 Antworten mit Zitat
BlackLotus
Anmeldedatum: 04.01.2006
Beiträge: 717
Wohnort: www and 127.0.0.1/localhost




Oh und 4lx kümmerste dich auch um die Sicherheit der Seite? Wink

_________________
Eine Kette ist nur so stark wie ihr schwächstes Glied.

Die Welt wird nicht von denen bedroht die böse sind,sondern von denen die das Böse zulassen.
Albert Einstein

Man kommt nicht aus seiner Haut raus.....,
Nur Schlamm kann das Very Happy

http://blackwiki.bl.ohost.de
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 29.12.2006 18:35 Antworten mit Zitat
4lx
Anmeldedatum: 02.01.2006
Beiträge: 369
Wohnort: /offtopic




BlackLotus hat Folgendes geschrieben:
Oh und 4lx kümmerste dich auch um die Sicherheit der Seite? Wink

Rofl, du hattest eine Nacht Zeit einen Exploit zu schreiben und das Ergebnis war nicht sehr beunruhigend. Wink
Aber du kannst gerne mitlaufen kommen. Smile
Als Gegenleistung für den Sicherheitscheck bekommste auch Startnummer "1337". Mr. Green
Um die Sicherheit bei der Mailinglist muss ich mich aber nochmal kümmern... Du hast mir Angst gemacht. Razz

_________________
"Das Staunen ist Anfang der Erkenntnis." -Platon

"Terrorismus ist die Zerstörung von Versorgungseinrichtungen, also Deichen, Wasserwerken, Krankenhäusern, Kraftwerken. Eben alles das, worauf die amerikanischen Bombenangriffe gegen Nordvietnam seit 1965 systematisch abzielten. Der Terrorismus operiert mit der Angst der Massen." - Ulrike Meinhof
Benutzer-Profile anzeigen Private Nachricht senden Jabber ID ICQ-Nummer
BeitragVerfasst am: 29.12.2006 18:46 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Also wenn du da für einen Lauf User verwalten möchtest, willst du sicher auch ihre Adresse, Name und andere Dinge gleich mit speichern. Daher, und da es sich dann auch einfacher verwalten lässt, würde ich eine Datenbank einsetzen.

achja: Wie weit lauft ihr eigentlich?
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 29.12.2006 19:44 Antworten mit Zitat
4lx
Anmeldedatum: 02.01.2006
Beiträge: 369
Wohnort: /offtopic




@Cerox:
Also diese Mailinglist ist eben wirklich nur für die Organisatoren gedacht.^^

Die Verwaltung der Daten habe ich schon anders geregelt, da wird alles mit dem erwähnten explode() geregelt und ich kenne mich wirklich nicht genug mit Datenbanken aus, um sowas machen zu können.
Ich werde hier mal keinen Link geben, weil das wiki noch nicht so ganz gegen Schädlinge isoliert ist. Wink

Gelaufen wird über 5 und 10km, wobei es auch für astmatische Geeks und Schüler die Distanz von 2.5km gibt.

Ihr könnt übrigens mal den Phara0h überreden mitzulaufen. Very Happy
Der läuft ja noch nicht mal bei dem größten Event in seinem Dorf. Wink


okay, an der Stelle nochmal danke für eure Hilfe Smile

_________________
"Das Staunen ist Anfang der Erkenntnis." -Platon

"Terrorismus ist die Zerstörung von Versorgungseinrichtungen, also Deichen, Wasserwerken, Krankenhäusern, Kraftwerken. Eben alles das, worauf die amerikanischen Bombenangriffe gegen Nordvietnam seit 1965 systematisch abzielten. Der Terrorismus operiert mit der Angst der Massen." - Ulrike Meinhof
Benutzer-Profile anzeigen Private Nachricht senden Jabber ID ICQ-Nummer
BeitragVerfasst am: 29.12.2006 20:28 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Die Datenbank könntest du aber gleich für alles verwenden und dann hast du nicht noch diese separate Datei mit den Mailadressen. Datenbanken sind von der Bedienung her nicht schwerer als Textdateien; eher leichter, wenn man sich einmal dran gewöhnt hat weil man nicht tausend Tricks braucht, um seine Datensätze da vernünftig unterzubringen.

Ich kann so Mitte Januar mal eine Einführung zum Thema Datenbankanbindung mit PHP und MySQL posten (14 Seiten lang). Das musste ich für die Schule machen und ich möchte es zuerst abgeben, bevor ich es hier poste^^
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
[PHP] Newsletter-Script (Mailinglist)
Foren-Übersicht » Internetprogrammierung
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Alle Zeiten sind GMT + 1 Stunde  
Seite 1 von 1  

  
  
 Neues Thema eröffnen  Neue Antwort erstellen  


Forensicherheit

Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin
Deutsche Übersetzung von phpBB.de


remoteshell-security.com | Partner | Boardregeln | Impressum