Author Topic: dateipfad in variable speichern  (Read 3177 times)

Offline JB

  • Posts: 15
dateipfad in variable speichern
« on: March 27, 2007, 06:50:05 PM »
Hallo,

ich habe mir über das Code Modul ein kleines Newsletter script eingefügt.
Dabei werden die emails der interessenten in eine txt Datei eingefügt.

In der normalen Umgebung funktioniert das script, nur nicht wenn ich es im COde modul einbringe.
Ich vermute das der pfad zur Datei nicht passt, komme aber nicht darauf wie ich das deklarieren muss.

Hintergrund:
die code-Seite(Newslettermodul) ist unter /pages/news
dort habe ich auch via ftp die mails.txt hochgeladen, und die rechte entsprechend vergeben.

im code steht dann bei mir:
Code: [Select]
$mailliste = WB_URL."/pages/news/mails.txt";
die variable $mailliste wird dann in späteren Zeilen weiterverwendet z.b.
Code: [Select]
if (!$email=="")){
        $datei = fopen ($mailliste,"a");
        fwrite($datei, "$email\n");
        fclose($datei);
        $nachrichtb="$header$nachrichtb$footer";
        mail($email, $subjectb, $nachrichtb, "From: $absender <$absendermail>");
        echo "Sie haben sich erfolgreich Angemeldet!<br>\nSie erhalten sofort eine Bestätigungsmail.";

leider wird die email aber nicht gespeichert :-(
Wo hackts denn ??

gruß
JB

doc

  • Guest
Re: dateipfad in variable speichern
« Reply #1 on: March 27, 2007, 07:54:49 PM »
Hallo,

mir ist noch nicht so ganz klar was Du wie umzusetzen versuchst. Welchen Code hast Du denn nun im Codemodul stehen? Lediglich
Code: [Select]
$mailliste = WB_URL."/pages/news/mails.txt";
Hast Du geprüft, ob $mailliste was vernünftiges ausspuckt (echo $mailliste;), bzw. ob Du der Block Deines If-Statements überhaupt ausgeführt wird (innerhalb des Blocks ein echo "drin"; oder so).

Poste doch mal den kompletten Code, dann kann Dir vielleicht auch geholfen werden.

Gruss Christian

Mäusebär

  • Guest
Re: dateipfad in variable speichern
« Reply #2 on: March 27, 2007, 08:39:40 PM »
Hi,

schon mal versucht "globale" Variablen mit einem
Code: [Select]
<?php $mailliste WB_URL."/pages/news/mails.txt"?>dirkt in das Template-File "index.php" zu intergireren?

Offline JB

  • Posts: 15
Re: dateipfad in variable speichern
« Reply #3 on: March 28, 2007, 07:58:22 AM »
Hallo hier der gesamte Code:
Code: [Select]
$adminpass="DeinPassWord";

$absender="Webmaster";
$absendermail="deine.email@xyz.de";

$subjectb="Newsletter Anmeldung erfolgreich!";
$nachrichtb="Sie haben sich erfolgreich beim Newsletter angemeldet.\nDanke für Ihr Interesse.";
$subjectc="Newsletter Abmeldung erfolgreich";
$nachrichtc="Sie haben sich erfolgreich beim Newsletter abgemeldet.\nVielen Dank für Ihr Interesse";

$header="Hallo an alle!\n\n";
$footer="\n\nZum abmelden des Newsletters bitte auf unsere Webseite gehen:\nhttp://www.deineWebadresse.de";

$mailliste = WB_URL."/pages/news/mails.txt"; //Pfad zur txt.Datei für die Emails

$nladmin = $_GET[nladmin];
$anmelden = $_GET[anmelden];
$abmelden = $_GET[abmelden];
$pass = $_POST[pass];
$email = $_POST[email];


if ($nladmin) {
login($pass,$php_self,$adminpass);
}
elseif ($anmelden) {
anmeldung($email,$subjectb,$nachrichtb,$header,$footer,$absender,$absendermail);
}
elseif ($senden) {
sendung($pass,$adminpass,$subject,$inhalt,$absendermail,$absender,$header,$footer);
}
elseif ($abmelden) {
abmeldung($php_self,$erfolg,$remove_email,$header,$footer,$absender,$absendermail,$nachrichtc,$subjectc);
}
else {
    echo "<br></br>";
    echo "<br></br>";
    echo "<br>Hier könnt Ihr Euch für den Newsletter anmelden, um neuste Informationen & Ankündigungen direkt per Email zu bekommen. Tragt einfach Eure Emailadresse ins untere Feld ein und klickt auf den Anmelde-Button !</br>";
    echo "<br>Ihr bekommt dann auch gleich eine Bestätigungsemail das Ihr Euch erfolgreich angemeldet habt.</br>";
    echo "<br></br>";
    echo "<br></br>";
    echo "<p><center><b>Für den Newsletter anmelden:</b></center></p>";
    echo "<br></br>";
   
 echo "<center><form method=post action=$php_self?anmelden=yes>Bitte hier Eure E-Mail Adresse eintragen: <input type=text name=email><input type=submit value=Anmelden></form></center>";

    echo "<br></br>";
    echo "<p><center>Zum Abmelden des Newsletters bitte <b><a href=$php_self?abmelden=yes>auf diesen Link hier </a></b>klicken !</center></p>";
   echo "<br></br>";
    echo "<center>Es öffnet sich ein neues Fenster wo ihr Eure Emailadresse eintragen müsst, mit der Ihr Euch hier beim Newsletter angemeldet habt.</center>";
    echo "<br></br>";
    echo "<br></br>";
    echo "<br></br>";
    echo "<p><font size=1><center><a href=$php_self?nladmin=yes>Admin</a></center></font>";
}



function login($pass,$php_self,$adminpass)
{
    if ($pass=="") {
        echo "<center><b><p>Admin-Login:</p></b><form  method=post action=$php_self?nladmin=yes>Passwort: <input type=text name=pass><br><input type=submit value=Einloggen></form></center>";
    }
    elseif ($pass==$adminpass) {
        echo "<center><b><p>Newsletter Senden:</b></p>";
         echo "<form method=post action=$php_self?senden=yes><input type=hidden name=pass value=$pass>Subject: <input type=text name=subject><p>Nachricht:<br><textarea cols=40 rows=20 name=inhalt></textarea><p><input type=submit value=Abschicken></form></center>";
    }
    else {
        echo "Password stimmt nicht!";
    }
}

function anmeldung($email,$subjectb,$nachrichtb,$header,$footer,$absender,$absendermail)
{
    if (!$email=="" && file_exists($mailliste)){
        $datei = fopen ($mailliste,"a");
        fwrite($datei, "$email\n");
        fclose($datei);
        $nachrichtb="$header$nachrichtb$footer";
        mail($email, $subjectb, $nachrichtb, "From: $absender <$absendermail>");
        echo "Sie haben sich erfolgreich Angemeldet!<br>\nSie erhalten sofort eine Bestätigungsmail.";
    }
    else {
        echo "Sie müssen alle Felder ausfüllen, oder die Mailliste ist zur Zeit nicht verfügbar";
    }
}

function sendung($pass,$adminpass,$subject,$inhalt,$absender,$absendermail,$header,$footer)
{
    if (!$pass==$adminpass) {
        echo "Sie haben sich nicht als Admin eingeloggt!";
    }
    else {
        if (!$subject=="" && !$inhalt=="") {
            $nachricht="$header$inhalt$footer";
            $nachricht .="\n\n*****************************\nNewsletter";
            $datei2 = fopen ($mailliste,"r");
            while (!feof($datei2)){
                $zeile2 = fgets($datei2,100);
                $zeile2 = trim($zeile2);
                if (!$zeile2=="") {
                mail($zeile2, $subject, $nachricht, "From: $absender <$absendermail>");
}
            }
            fclose($datei2);
            echo "Senden erfolgreich!";
        }
        else {
            echo "Sie müssen alle Felder ausfüllen!";
        }
    }
}

function abmeldung($php_self,$erfolg,$remove_email,$header,$footer,$absender,$absendermail,$nachrichtc,$subjectc)
{
    if ($erfolg) {
        $maillist = array();
        $datei3 = fopen ($mailliste,"r");
        while (!feof($datei3)){
            $zeile3 = fgets($datei3,100);
            $zeile3 = trim($zeile3);
            array_push ($maillist,$zeile3);
        }
        fclose($datei3);
        unlink($mailliste);
        if (in_array ($remove_email, $maillist)) {
            $size = sizeof($maillist);
            for ($i=0;$i<=$size;$i++) {
                if ($remove_email==$maillist[$i]) {
                    unset($maillist[$i]);
                }
            }
            $datei4 = fopen ($mailliste,"w");
            while (list ($key, $val) = each ($maillist)) {
                fwrite($datei4,"$val\n");
            }
            fclose($datei4);
            echo "Sie wurden erfolgreich von der Liste entfernt! ($remove_email)";
            $nachrichtc="$header$nachrichtc$footer";
            mail($remove_email, $subjectc, $nachrichtc, "From: $absender <$absendermail>");
        }
        else {
            echo "E-Mail nicht vorhanden!";
        }
    }
    else {
        echo "<center><p><b>Vom Newsletter abmelden:</b></p><form method=post action=$php_self?abmelden=yes&erfolg=yes>E-Mail Adresse: <input type=text name=remove_email><p><input type=submit value=Abmelden></p></form></center>";
    }
}

@Mäusebär:
Als Globale Variable habe ich es noch nicht probiert, würde es auch ungern im Templatefile unterbringen.

@doc:
Ja die ausgabe von mailliste habe ich überprüft.
es wird der komplette pfad ausgegeben, z.b.
"http://deineWebseite.de/wb/pages/news/mails.txt"
und wenn ich den Pfad entsprechend eingbe, wird mir auch die liste angezeigt mit den Emails.

doc

  • Guest
Re: dateipfad in variable speichern
« Reply #4 on: March 28, 2007, 08:21:49 AM »
Danke,

und den geposteten Code schreibst Du in eine Seite vom Typ Code?
Weiss nicht genau warum, aber im Code Module gibt es Teils Probleme beim Zugriff auf globale Variablen und Variablen die per POST / GET kommen.

Ich würde an Deiner Stelle den Code in ein Modul oder Snippet packen und nochmals probieren. Dort gibt es diese Beschränkungen meines Wissens nach nicht.

Wenn Du Nachrichtentexte selber zusammenbaust, kann leicht ein fehlendes /n oder ähnliches das zustellen der Email verhindern. Du siehts zwar die Meldung abgeschickt, es kommt aber nichts bei Deinen Kunden an. Wenn Du WBv2.6.5 verwendest, wäre die WBmailer Klasse eine gute alternative. Ein Beispielcode findest Du in diesem Thread.
Bitte lies zu Emails und möglichen Fehlerursachen auch die FAQ.

Gruss Christian
« Last Edit: March 28, 2007, 08:26:41 AM by doc »

Offline JB

  • Posts: 15
Re: dateipfad in variable speichern
« Reply #5 on: March 28, 2007, 09:12:55 AM »
Danke für die Info.

Das Script selber funktioniert schon seid geraumer Zeit auf meiner anderen Webseite, und die Mails kamen auch immer an.
Seid dem ich versuche das in WebsiteBaker zu integrieren gibs probleme :-(

Ein Modul daraus zu machen hatte ich auchs chon angedacht, aber nachdem ich mir das massmail modul angeschaut habe, erscheint mir das ein wenig zu viel zu sein.

Was ein snippet ist verstehe ich im groben auch, nur wie erstellt man das ?
Was gibt es da zu beachten ?

Wenns gar nicht anders geht, werde ich das script außrhalb von WB machen müssen und dann per "Wrapper" etc. einbinden.. mal sehen ob das funzt.

Dennoch danke für eure Mühe, melde mich wenn ich selber ne Lösung weiß !

Gruß
Jb

doc

  • Guest
Re: dateipfad in variable speichern
« Reply #6 on: March 28, 2007, 09:20:22 AM »
Also ein Modul oder Snippet zu erstellen, ist eigentlich ganz einfach. Im einfachsten Fall besteht ein Code Snippet aus 2 Dateien inlcude.php und info.php. Ein gutes und vor allem einfaches Beispiel ist das Codesnippet show_menu2.

Alle Funktionen, die Du zum Beispiel au einem Template oder einer Code Seite heraus verwenden möchtest, müssen in die Datei include.php gesschrieben werden. In info.php stehen Dateiname und Pfad für das Snippet, sowie Infos zu Autor und Version.

Beide Dateien ohne Ordner zippen und über das WB Backend als Modul installieren. Nun kannst Du die Funktionen z.B. direkt im Template aufrufen, oder von einer Code Seite.

Gruss Christian

 

postern-length