newsletter bindestrich

Gesperrt
Jonas
Beiträge: 18
Registriert: Di 29. Jul 2003, 15:22
Wohnort: Nürnberg
Kontaktdaten:

newsletter bindestrich

Beitrag von Jonas » Fr 22. Aug 2003, 09:12

hi,

hab noch'n problem mit dem newsletter im frontend.
wenn ich mich da mit meiner mail-adresse user@do-main.de (also bindestrich in der domain) oder us-er@domain.de anmelde, gibts nen fehler, die mail-adresse habe das falsche format.

wie kann ich das beheben?

Danke für Eure Mithilfe!

Jonas

eike
Beiträge: 13
Registriert: Fr 22. Aug 2003, 10:28
Kontaktdaten:

Regulärer Ausdruck

Beitrag von eike » Fr 22. Aug 2003, 10:32

Hi Jonas,

die Validierung der E-Mail Adresse wird wahrscheinlich mit Hilfe eines regulären Ausdrucks gemacht... (http://www.phpbuilder.com/columns/dario19990616.php3) .... Da fehlt wahrscheinlich der Bindestrich im Frontend...

ich selbst bekomm nur diesen newsletter nich ins frontend rein...
machen wir nen deal... regulärer ausdruck gegen newsletter im frontend??

Jonas
Beiträge: 18
Registriert: Di 29. Jul 2003, 15:22
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Jonas » Fr 22. Aug 2003, 11:01

Okay, können wir machen.
Erstelle eine Template, nenne es "Newslettertemplate" und füge in der Containerliste irgendwo das Newsletter-Modul (Eintrageformular) ein, welches du vorher evtl. dazu installieren musst.
Setze dieses Template dann unter ein Dokument, wo eben das eintrageformular erscheinen soll und es ist da.

eike
Beiträge: 13
Registriert: Fr 22. Aug 2003, 10:28
Kontaktdaten:

arrrrg!

Beitrag von eike » Fr 22. Aug 2003, 11:55

jo danke! ich torfkopf hab vergessen das modul einzubinden...

nun gut.... ich hab mir den regulären ausdruck mal angesehen... scheint eigentlich soweit ok zu sein. aber "eigentlich" ist ja kein wort.

ich hab's jetzt mit folgendem ausdruck getstet und bei mir läuft's:

elseif (!eregi("^[-a-z0-9\-\_\.]{2,63}\@[a-z0-9\-\_\.]{2,63}\.[a-z]{2,4}$",$modnews_email))


im "original" fehlt vor dem ersten "a-z" der bindestrich. Den hab ich einfach nur eingefügt. Sollte aber auch vorher schon funktionieren, weil der Bindestrich ja auch vorhanden ist... allerdings wird der da durch's "\" escapt.

benutz das dingen da oben und los gehts!

Jonas
Beiträge: 18
Registriert: Di 29. Jul 2003, 15:22
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Jonas » Fr 22. Aug 2003, 12:00

jetzt muss ich schnell dumm fragen, in welche datei muss ich das wo platzieren?

eike
Beiträge: 13
Registriert: Fr 22. Aug 2003, 10:28
Kontaktdaten:

Beitrag von eike » Fr 22. Aug 2003, 12:10

im output irgendwie in line 7.... o.ä...
hier der gesamten output mit geändertem regexp

Code: Alles auswählen

<?php
include($cfg['path']['contenido']."includes/cfg_language_de.inc.php");

echo "<div align=\"center\">";
if ($modnews_email == "") {
	$modnews_errormsg = "1001";
} elseif (!eregi("^[-a-z0-9\-\_\.]{2,63}\@[a-z0-9\-\_\.]{2,63}\.[a-z]{2,4}$",$modnews_email)) {
	$modnews_errormsg = "1002";
} elseif ($modnews_send == 1) {
	$sql = "SELECT * FROM ".$cfg["tab"]["news_rcp"]." WHERE email='$modnews_email' AND idclient='$client'";
	$db->query($sql);
	if ($db->next_record()) {
		$modnews_errormsg = "1003";
         }
} else {
	$sql = "SELECT * FROM ".$cfg["tab"]["news_rcp"]." WHERE email='$modnews_email' AND idclient='$client'";
	$db->query($sql);
	if ($db->next_record() == 0) {
		$modnews_errormsg = "1004";
         } else {
		$sql = "DELETE FROM ".$cfg["tab"]["news_rcp"]." WHERE email='$modnews_email' AND idclient='$client'";
		$db->query($sql);
		mail($modnews_email, $lngNews["goodbyesubject"], $lngNews["goodbyemessage"], 'FROM: '.$cfgNewsletter["from"]);
		if ("CMS_VALUE[0]" != "0") {
	         	echo "<span id=\"fontCMS_VALUE[0]\">CMS_VALUE[6]</span><br><br>";
	         } else {
	         	echo "CMS_VALUE[6]<br><br>";
	         }
         }
}
if ($modnews_errormsg) {
	if ($modnews_send == 0) {
         	if ("CMS_VALUE[0]" != "0") {
                 	echo "<span id=\"fontCMS_VALUE[0]\">CMS_VALUE[4]</span><br><br>";
                 } else {
                 	echo "CMS_VALUE[4]<br><br>";
                 }
         } else {
         	if ("CMS_VALUE[1]" != "0") {
                 	echo "<span id=\"fontCMS_VALUE[1]\">".$lngErr[$modnews_errormsg]."</span><br><br>";
                 } else {
                 	echo "".$lngErr[$modnews_errormsg]."<br><br>";
                 }
         }
}
if (!$modnews_errormsg & $modnews_send == 1) {
	$sql = "INSERT INTO ".$cfg["tab"]["news_rcp"]." (idclient, idlang, name, email, deactivated, author, created) VALUES ('$client', '$lang', '$modnews_name', '$modnews_email', 0, 'website', NOW())";
         $db->query($sql);
         mail($modnews_email, $lngNews["welcomesubject"], $lngNews["welcomemessage"], 'FROM: '.$cfgNewsletter["from"]);
	if ("CMS_VALUE[0]" != "0") {
         	echo "<span id=\"fontCMS_VALUE[0]\">CMS_VALUE[5]</span><br><br>";
         } else {
         	echo "CMS_VALUE[5]<br><br>";
         }
}
echo "<form name=\"newsletter\" method=\"POST\" action=\"".$auth->url()."\" >";
if ("CMS_VALUE[3]" == "ja") {
	if ("CMS_VALUE[0]" != "0") {
         	echo "<span id=\"fontCMS_VALUE[0]\">".$modNews["name"]."</span>";
         } else {
         	echo "".$modNews["name"]."";
         }
	echo "<br><input type=\"text\" size=\"9\" style=\"width:120px\" ";
	if ("CMS_VALUE[2]" != "0") {
         	echo "id=\"fontCMS_VALUE[2]\" ";
         }
	echo " style=\"width:120px\" name=\"modnews_name\" value=\"$modnews_name\"><br>";
}
if ("CMS_VALUE[0]" != "0") {
	echo "<span id=\"fontCMS_VALUE[0]\">".$modNews["email"]."</span><br>";
} else {
	echo "".$modNews["email"]."<br>";
}
echo "<input type=\"text\" size=\"9\" style=\"width:120px\" ";
if ("CMS_VALUE[2]" != "0") {
	echo "id=\"fontCMS_VALUE[2]\" ";
}
echo "name=\"modnews_email\" value=\"$modnews_email\">";
if ("CMS_VALUE[8]" != "0") {
        	$sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE idupl='CMS_VALUE[8]'";
	$db->query($sql);
	while ($db->next_record()) {
	echo "<input type=\"image\" src=\"".$db->f("dirname")."/".$db->f("filename")."\"><br>";
	}
} else {
        	echo "<input type=\"submit\" value=\"senden\"><br>";
}
if ("CMS_VALUE[7]" == "") {
       	echo "<input type=\"radio\" name=\"modnews_send\" value=\"1\" checked>";
	if ("CMS_VALUE[0]" != "0") {
               	echo "<span id=\"fontCMS_VALUE[0]\">".$modNews["subcribe"]."</span>";
         } else {
                	echo "".$modNews["subcribe"]."";
         }
         echo "</input>";
	echo "<input type=\"radio\" name=\"modnews_send\" value=\"2\">";
         if ("CMS_VALUE[0]" != "0") {
                	echo "<span id=\"fontCMS_VALUE[0]\">".$modNews["unsubcribe"]."</span>";
         } else {
                	echo "".$modNews["unsubcribe"]."";
         }
         echo "</input>";
}
if ("CMS_VALUE[7]" == "0") {
	echo "<input type=\"hidden\" name=\"modnews_send\" value=\"1\">";
}
if ("CMS_VALUE[7]" == "1") {
	echo "<input type=\"hidden\" name=\"modnews_send\" value=\"2\">";
}
echo "</FORM>";
echo "</div>";
?>

Jonas
Beiträge: 18
Registriert: Di 29. Jul 2003, 15:22
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Jonas » Fr 22. Aug 2003, 12:21

Dat war wohl nix :-(
Geht trotzdem noch nicht.

eike
Beiträge: 13
Registriert: Fr 22. Aug 2003, 10:28
Kontaktdaten:

huups

Beitrag von eike » Fr 22. Aug 2003, 12:52

hab den domainnamen vergessen...

nimm das für die 7. zeile:

} elseif (!eregi("^[-a-z0-9\-\_\.]{2,63}\@[-a-z0-9\-\_\.]{2,63}\.[a-z]{2,4}$",$modnews_email)) {

jetzt aber....

Jonas
Beiträge: 18
Registriert: Di 29. Jul 2003, 15:22
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Jonas » Fr 22. Aug 2003, 13:49

nene, immer noch nich.
schau mal auf

http://www.hp-fans.de/yellowpress-onlin ... t=52&m=&s=

und trag z. B. mal agentur@nuernberg.hp-fans.de ein -> Fehlermeldung! Oder auch jonas@hp-fans.de -> Fehlermeldung!

Jonas

eike
Beiträge: 13
Registriert: Fr 22. Aug 2003, 10:28
Kontaktdaten:

soooo

Beitrag von eike » Mi 27. Aug 2003, 13:48

hab eben auf dr. web nen regexp gefunden der auch funktionieren sollte...
http://drweb.de/programmierung/php_emailcheck.shtml


aber betreiben wir vorher schadensbegrenzung:
wie gehabt... 7. zeile:

} elseif (!eregi("^[-a-z0-9\-\_\.]{2,63}\@[-a-z0-9\-\_\.]{2,63}\.[-a-z]{2,4}$",$modnews_email)) {

das wird wahrscheinlich auch nicht super fruchten... ansonsten schmeiss die ganze überprüfung aus der funktion raus.

ich "leider" zur zeit sehr beschäftigt und kann das problem nicht ordentlich bearbeiten... im übrigen muss ich die problematik aus eigenem- (bzw. beruflichem-) interesse erledigen.... ich häng mich jetzt hinter...

P.S. die gif's auf deiner newsletter-seite zwingen meinen rechner in die knie...

Madinson
Beiträge: 52
Registriert: Di 7. Okt 2003, 13:57
Wohnort: Köln
Kontaktdaten:

... madinson@meine-domain.de

Beitrag von Madinson » Mo 15. Dez 2003, 11:48

..hat sich in der Zwischenzeit eine Lösung gefunden??

Bei mir kann man sich nicht eintragen...wenn man z.B.

madinson@meine-domain.de verwendet. Habe alle Varianten ausprobiert. Kann man die Übeprüfung nicht einfach eliminieren? Keine feine Art...oder hat eike mittlwereile die Lösung?
webwebweb...

eike
Beiträge: 13
Registriert: Fr 22. Aug 2003, 10:28
Kontaktdaten:

eleminieren / für madinson

Beitrag von eike » Mo 15. Dez 2003, 17:41

du kannst die überprüfung natürlich auch eleminieren....

ürsprünglich:

Code: Alles auswählen

} elseif (!eregi("^[-a-z0-9\-\_\.]{2,63}\@[a-z0-9\-\_\.]{2,63}\.[a-z]{2,4}$",$modnews_email)) {
dafür musst den folgenden code einfach suchen und löschen:

Code: Alles auswählen

elseif (!eregi("^[-a-z0-9\-\_\.]{2,63}\@[a-z0-9\-\_\.]{2,63}\.[a-z]{2,4}$",$modnews_email)) {
	$modnews_errormsg = "1002";
}
besser, aber bitte testen:

Code: Alles auswählen

} elseif (!eregi("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$", $email)) {

ich geh mal davon aus, dass es für contenido wesentlich besser ist, wenn nur valide e-mail adressen in der table abgelegt werden. auf fast allen servern liefert die mail(); funktion einen internen server fehler, wenn dort eine nicht valide e-mail adresse an empfänger definiert ist.
so wie ich contenido kennengelernt habe, würde ich als anwender diese vermutung austesten.

wenn man sich aber vorher nicht die mühe gemacht hat, oder (wie's auch oft der fall ist) einfach ne buggige table vom kunden bekommt, ist einem mit folgenden skript vielleicht geholfen:

Code: Alles auswählen

<?php 

		$MySQL_HOST = "???";
		$dbname = "????";
		$MySQL_USER = "?????";		
		$MySQL_PASSW = "????";
		
												
		//definition der benutzten tabellen
		$cfgtableabos = $ ???


			
// Verbindung zur DB... evtl. schon vorhanden....		
function connect(){
  global $MySQL_HOST, $MySQL_USER, $MySQL_PASSW;
  if (! $linkid=mysql_connect("$MySQL_HOST","$MySQL_USER","$MySQL_PASSW")){
    echo "Die Verbindung zu ".$MySQL_HOST." konnte nicht hergestellt werden<br>";
    exit;
  }else{
 //echo "<!-- Traumhaft! Verbindung zu ".$MySQL_HOST." erfolgreich hergestellt... -->";
  }
  return $linkid;
}

//SQL Query Maschine
function send_sql($dbname, $sql){
  if (! $res=mysql_db_query($dbname, $sql)){
    echo mysql_error();
    exit;
  }
  return $res;
}

function checkmails () {

	include("lib/cfg_mysql.inc.php");
	openDatabase();
	$i=0;
	$sql = "select Email from $cfgtableabos";
	$q = mysql_query($sql);
	while ($result = mysql_fetch_row($q)) {
		if(!ereg("^[_a-zA-Z0-9-]+([\._a-zA-Z0-9-])*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $result[0])) 
		{
		//echo "$result[0]<br>\n";
		$sql = "DELETE FROM $cfgtableabos WHERE Email='$result[0]'";
        echo "$sql<br>\n";
		$result=send_sql($dbname, $sql);	
		}
		$i++;
	}
	
	echo "<br><br>insgesamt: $i e-mails durchsucht";
}

connect();
checkmails();

?>
nen paar includes fehlen vielleicht.... für diejenigen die's anwenden werden, ist es allerdings eh klar, was da passieren soll. soll ja auch nur ne anregung sein.

wo wir gerade bei newsletter datenbanken sind:
noch nen kleiner tipp, den contenido vielleicht auch nicht berücksichtigt... so genau kenn ich mich mit den klassen und funktionen von contenido nicht mehr aus... falls keine duplikats überprüfung vorgenommen wird, kann man relativ einfach über sql nen copy mit distinct machen. damit kopiert man alle datensätze, die duplikate werden allerdings nicht kopiert.

das wär's...

ganz nebenbei: das newsletter-tool von contenido ist nicht besonders leistungsfähig. triangel (http://sourceforge.net/projects/triangle/) kann da wesentlich mehr und ist ebenfalls ne php4/mysql lösung, also rel. einfach in contenido zu integrieren... da funktioniert übrigens die validierung der e-mails einwandfrei ;-)

Gesperrt