Addon:E-Mail Provider Liste

Aus VMS1 Tutorial

Wechseln zu: Navigation, Suche
E-Mail Provider Liste
Zielgruppe Anfänger
Aufwand 5 Minuten
Änderungen an:
Datenbank Nein
vorhandenen Dateien Nein
neue Dateien Ja

Dieses Addon fügt dem VMS Adminforce eine neue Seite hinzu, auf der alle E-Mail Provider der angemeldeten User aufgelistet werden.

Inhaltsverzeichnis

Schritt 1: Neue Seite/Datei anlegen

Im Verzeichnis /adminforce/content/usersystem/ eine leere PHP Datei anlegen mit dem Namen: email_provider.php

In diese Datei zuerst das Grundgerüst einer VMS Seite setzen:

<|><?php|>
head("Verteilung der E-Mail Anbieter");
 
foot();
<|>?>|>

Schritt 2: Informationen aus der Datenbank auslesen

Eine E-Mail Adresse entspricht dem Schema (rfc5322):

local-part @ domain-part

Beispielsweise: name@example.com

Für die Auflistung der E-Mail Provider interessiert nur der Teil nach dem @-Zeichen.

MySQL bietet Funktionen für die Verarbeitung von Zeichenketten an, um aus einem längeren Text einen Teil zu extrahieren, bietet sich:

SUBSTRING( text, position ) 

an. Diese Funktion schneidet alle Zeichen in text vor der Stelle position ab. Um die Position des @-Zeichens herauszufinden, kann man die Funktion:

LOCATE( zeichen, text )

benutzen. Zusammengesetzt:

SUBSTRING(emailadresse,LOCATE("@",emailadresse)+1) AS m

Das +1 hinter LOCATE dient dazu, dass auch das @-Zeichen weggeschnitten wird.

Da die Gesamtanzahl je solch extrahierter Domain interessiert, werden die Einträge gruppiert, der gesamte Query sieht dann wie folgt aus:

SELECT SUBSTRING(emailadresse,LOCATE("@",emailadresse)+1) AS m, COUNT(*) AS anz FROM vms_emaildaten GROUP BY m

Schritt 3: Ausgabe formatieren

Die Informationen sollen in eine HTML Tabelle eingebettet werden, die 2 Spalten hat:

<table>
<tr>
<td>Anbieter</td><td>Anzahl User</td>
</tr>

Die Spalten sollen, zur besseren Lesbarkeit, abwechselnd eine andere Formatierung haben und die Gesamtanzahl der Einträge soll aufsummiert werden. Die Betreiber, die von mehr als 9 Usern genutzt werden, sollen hervorgehoben angezeigt werden:

<|><?php|>
$sum=0;
$i=0;
$sql = db_query('SELECT SUBSTRING(emailadresse,LOCATE("@",emailadresse)+1) AS m, COUNT(*) AS anz FROM vms_emaildaten GROUP BY m');
<|>while|>($row = <|>mysql_fetch_array|>($sql)){
<|>?>|>
<tr <|>class|>="tr_row<?=($i++%2);?>">
<td><a href="http://<?=$row['m'];?>" target="_blank"><?=(($row['anz']>9)?'<b>'.$row['m'].'</b>':$row['m']);?></a></td>
<td align="right"><a href="?content=/usersystem/email_provider&provider=<?=$row['m'];?>"><?=$row['anz'];?></a></td>
</tr>
<|><?php|>
$sum += $row['anz'];
}
<|>?>|>

Abschließend folgen noch die Fußzeilen der Tabelle:

<tr>
<td colspan="2"><hr></td>
</tr>
<tr>
<td><?=$i;?></td><td><?=$sum;?></td>
</tr>
</table>

Schritt 4: Auflistung aller User mit bestimmtem Provider

Wenn man als Seitenbetreiber feststellt, dass Newsletter an bestimmte E-Mail Adressen generell nicht ankommen oder im Spamordner landen, ist es eventuell hilfreich, alle User mit diesem E-Mail Provider auflisten zu lassen. Dazu haben wir im vorherigen Schritt schon einen Link auf die Anzahl der User gesetzt, mit dem GET-Parameter provider=

Den Code dazu fügt man vor dem bisherigen Code ein:

<|><?php|>
 
<|>if|>(<|>isset|>($_GET['provider']) && $_GET['provider']!=''){
 
head("User mit Anbieter: ".$_GET['provider']);
$sql = db_query('SELECT uid,emailadresse FROM vms_emaildaten WHERE emailadresse LIKE "%%'.<|>addslashes|>($_GET['provider']).'%%" ');
<|>?>|>
<a href="?content=/usersystem/email_provider">zurück</a><br><br>
<table>
<tr>
<td>User</td><td>Adresse</td>
</tr>
<|><?php|>
<|>while|>($row=<|>mysql_fetch_array|>($sql)){
<|>?>|>
<tr>
<td><?=$row['uid'];?></td><td align="right"><?=$row['emailadresse'];?></td>
</tr>
<|><?php|>
}
<|>?>|>
</table>
<|><?php|>
foot();
 
}<|>else|>{
und ganz am Ende der Datei das schließende
}
<|>?>|>

nicht vergessen!

Ein Beispiel kann man unter ?content=/usersystem/email_provider sehen.

Schritt 5: Link setzen

Damit diese Liste im Adminforce zur Vrfügung steht, muss diese abschließend noch verlinkt werden, bspw. im rechten oder linken Menü (/adminforce/lib/menue_xxxxx.php):

<li><a href="?content=/usersystem/email_provider">E-Mail Anbieter</a></li>

Komplette Datei

<|><?php|>
 
<|>if|>(<|>isset|>($_GET['provider']) && $_GET['provider']!=''){
 
head("User mit Anbieter: ".$_GET['provider']);
$sql = db_query('SELECT uid,emailadresse FROM vms_emaildaten WHERE emailadresse LIKE "%%'.<|>addslashes|>($_GET['provider']).'%%" ');
<|>?>|>
<a href="?content=/usersystem/email_provider">zurück</a><br><br>
<table>
<tr>
<td>User</td><td>Adresse</td>
</tr>
<|><?php|>
<|>while|>($row=<|>mysql_fetch_array|>($sql)){
<|>?>|>
<tr>
<td><?=$row['uid'];?></td><td align="right"><?=$row['emailadresse'];?></td>
</tr>
<|><?php|>
}
<|>?>|>
</table>
<|><?php|>
foot();
 
}<|>else|>{
 
head("Verteilung der E-Mail Anbieter");
<|>?>|>
<table>
<tr>
<td>Anbieter</td><td>Anzahl User</td>
</tr>
<|><?php|>
$sum=0;
$i=0;
$sql = db_query('SELECT SUBSTRING(emailadresse,LOCATE("@",emailadresse)+1) AS m, COUNT(*) AS anz FROM vms_emaildaten GROUP BY m');
<|>while|>($row = <|>mysql_fetch_array|>($sql)){
<|>?>|>
<tr <|>class|>="tr_row<?=($i++%2);?>">
<td><a href="http://<?=$row['m'];?>" target="_blank"><?=(($row['anz']>9)?'<b>'.$row['m'].'</b>':$row['m']);?></a></td>
<td align="right"><a href="?content=/usersystem/email_provider&provider=<?=$row['m'];?>"><?=$row['anz'];?></a></td>
</tr>
<|><?php|>
$sum += $row['anz'];
}
<|>?>|>
<tr>
<td colspan="2"><hr></td>
</tr>
<tr>
<td><?=$i;?></td><td><?=$sum;?></td>
</tr>
</table>
<|><?php|>
foot();
 
}
<|>?>|>
Persönliche Werkzeuge