Hallo liebe Community,
seit 3 Tagen nutze ich jetzt schon getSimple und ich denke ich habe mich relativ gut eingearbeitet.
Jetzt wollte ich das Plugin "mail newsletter" nutzen, was soweit auch funktioniert. Allerdings möchte ich, ein Formular, mit welchem man E-Mail Adressen zur Liste hinzufügen kann auch außerhalb des Admin-Bereichs, frei für jeden zugänglich anbieten. Laut Changelog ist das seit neustem auch möglich:
Gesagt, getan, einfach die besagte Funktion in der Sidebar eingegeben und ... nichts. Dann habe ich mir den Quellcode etwas genauer angeschaut und festgestellt, dass in der Funktion als cgi-script absolut auf die load.php im Admin-Ordner verwießen wird, selbst wenn man diesen Verweiß relativ angebeben würde, könnte man ohne im Adminbereich eingeloggt zu sein nicht ja nicht darauf zugreifen. (Ich frage mich bis jetzt, was diese Angabe im CHangelog dann bedeuten soll).
Nun habe ich mich den ganzen Tag mit Themen wie cgi-Scripten und allen möglichen Methoden wie man XML-Dateien manipuliert beschäftigt (ich bin jetzt nich so der eingefleischte Programmierer und habe von PHP eigentlich überhaupt keine Ahnung), um mit einem selbst erstellten Formular, dass auf ein selbst erstelltes cgi-Script verweißt, die entsprechende XML-Datei einfach selbst abzuändern.
Das sah dann so aus:
aus
wurde
Die newsletter_send_add.php sollte das cgi script sein, dass dann einfach im Startverzeichniss rumlungert (ich bin mir nicht sicher gegen wie viele Sicherheitsrichtlinien ich dabei verstoßen haben könnte). Zwischendurch hab ich dann auch probiert das ganze in einer newsletter_send_add.js in Javascript zu realisieren, da mir dort der Syntax wenigstens nicht ganz so fremd ist wie in PHP (habe in der Schule mal Java gelernt). Allen Anstregungen, ein funktionierendes cgi-Script zusammenzubasteln, dass die XML-Datei mit der neuen Adresse, erweitert zum Trotz waren die Ergebnisse vernichtend.
Also habe ich mir nochmal den Quelltext vom Plugin angeschaut und mir versucht, aus diesem Code das benötigte Script zusammenzubauen.
Ergebnis ist bis jetzt folgendes: (ich hab mir die Funktionsnamen abgeändert, um nicht durcheinander zu kommen).
Jedenfalls wird das laut Quelltext im Grunde so gehandhabt, wenn eine Adresse aus dem Admin Bereich eingetragen werden soll.
Resultat: sobald man das Formular nun abschickt kommt folgende Fehlermeldung
Das wäre diese Zeile:
Komischweiße funktioniert diese Stelle aber, wenn sie vom Original-Plugin ausgeführt wird (d.h. sobald man eine Adresse im Admin Bereich addet).
Jetzt bin ich mit meinen grottigen Programmierkentnissen an einem Punkt angelangt, an dem es seit Stunden nicht mehr weiter geht und da bin ich sehr froh, dass es seit neuestem ein deutschsprachiges Forum gibt, auf dem sich hoffentlich jemand findet, der mir in meiner Situation weiter hilft. Ich wäre sehr dankebar dafür.
Gruß
ravens_legacy
seit 3 Tagen nutze ich jetzt schon getSimple und ich denke ich habe mich relativ gut eingearbeitet.
Jetzt wollte ich das Plugin "mail newsletter" nutzen, was soweit auch funktioniert. Allerdings möchte ich, ein Formular, mit welchem man E-Mail Adressen zur Liste hinzufügen kann auch außerhalb des Admin-Bereichs, frei für jeden zugänglich anbieten. Laut Changelog ist das seit neustem auch möglich:
Quote:Function mailnewsletterform that insert subscribe form in any page
Gesagt, getan, einfach die besagte Funktion in der Sidebar eingegeben und ... nichts. Dann habe ich mir den Quellcode etwas genauer angeschaut und festgestellt, dass in der Funktion als cgi-script absolut auf die load.php im Admin-Ordner verwießen wird, selbst wenn man diesen Verweiß relativ angebeben würde, könnte man ohne im Adminbereich eingeloggt zu sein nicht ja nicht darauf zugreifen. (Ich frage mich bis jetzt, was diese Angabe im CHangelog dann bedeuten soll).
Nun habe ich mich den ganzen Tag mit Themen wie cgi-Scripten und allen möglichen Methoden wie man XML-Dateien manipuliert beschäftigt (ich bin jetzt nich so der eingefleischte Programmierer und habe von PHP eigentlich überhaupt keine Ahnung), um mit einem selbst erstellten Formular, dass auf ein selbst erstelltes cgi-Script verweißt, die entsprechende XML-Datei einfach selbst abzuändern.
Das sah dann so aus:
aus
Code:
<?php mail_newsletter_form($text='Add'); ?>
Code:
<form action="/newsletter_send_add.php" method="post" accept-charset="utf-8">
<input name="adresse" type="text" size="20" maxlength="100" value="name@beispiel.de">
<input name="senden" type="submit" value="Eintragen">
</form>
Die newsletter_send_add.php sollte das cgi script sein, dass dann einfach im Startverzeichniss rumlungert (ich bin mir nicht sicher gegen wie viele Sicherheitsrichtlinien ich dabei verstoßen haben könnte). Zwischendurch hab ich dann auch probiert das ganze in einer newsletter_send_add.js in Javascript zu realisieren, da mir dort der Syntax wenigstens nicht ganz so fremd ist wie in PHP (habe in der Schule mal Java gelernt). Allen Anstregungen, ein funktionierendes cgi-Script zusammenzubasteln, dass die XML-Datei mit der neuen Adresse, erweitert zum Trotz waren die Ergebnisse vernichtend.
Also habe ich mir nochmal den Quelltext vom Plugin angeschaut und mir versucht, aus diesem Code das benötigte Script zusammenzubauen.
Ergebnis ist bis jetzt folgendes: (ich hab mir die Funktionsnamen abgeändert, um nicht durcheinander zu kommen).
Code:
define (CONFIGFILE, GSDATAOTHERPATH . 'mail_newsletter.xml');
function addMailToXML()
{
$new = $_POST['adresse'];
$mails = array();
$subject = "";
$body = "";
$data = loadXML();
$data['mails'][] = trim($new);
saveXML($data['mails'], $data['subject'], $data['body']);
echo '<div class="updated">The mail ' . $new . ' has been added</div>';
}
function loadXML()
{
$data = array();
if (file_exists(CONFIGFILE))
{
$xml = @getXML(CONFIGFILE);
if (!empty($xml))
{
if ($xml->mails != "")
$data['mails'] = split("[,]+", $xml->mails);
$data['subject'] = $xml->subject;
$data['body'] = @stripslashes($xml->body);
}
else
$data['error'] = "Error reading " .CONFIGFILE;
}
return $data;
}
function saveXML($mails, $subject, $body)
{
$xml = @new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><item></item>');
$xml->addChild('mails', join("," ,$mails));
$xml->addChild('subject', htmlspecialchars($subject));
$xml->addChild('body', safe_slash_html($body));
XMLsave($xml, CONFIGFILE);
if (!is_writable(CONFIGFILE))
return '<div class="error">Unable to write config to file</div>';
else
return '<div class="updated">Config has been succesfully saved</div>';
}
Jedenfalls wird das laut Quelltext im Grunde so gehandhabt, wenn eine Adresse aus dem Admin Bereich eingetragen werden soll.
Resultat: sobald man das Formular nun abschickt kommt folgende Fehlermeldung
Quote:Parse error: syntax error, unexpected T_STRING in /data/multiserv/users/184915/projects/1794475/www/newsletter_send_add.php on line 51
Das wäre diese Zeile:
Code:
$xml = @new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><item></item>');
Komischweiße funktioniert diese Stelle aber, wenn sie vom Original-Plugin ausgeführt wird (d.h. sobald man eine Adresse im Admin Bereich addet).
Jetzt bin ich mit meinen grottigen Programmierkentnissen an einem Punkt angelangt, an dem es seit Stunden nicht mehr weiter geht und da bin ich sehr froh, dass es seit neuestem ein deutschsprachiges Forum gibt, auf dem sich hoffentlich jemand findet, der mir in meiner Situation weiter hilft. Ich wäre sehr dankebar dafür.
Gruß
ravens_legacy