Seite 20 von 25

Verfasst: Mi 18. Jul 2007, 16:08
von HerrB
3 Wie ich gelesen habe, soll bei der Aktivierung des Frontend-Nutzers automatisch ein Passwort versendet werden, wenn er sich über den Newsletter anmeldet. Stimmt das?
Ja. Das Passwort wird angezeigt und per Mail versendet (in der Konfiguration des Handler-Moduls: Bestätigung bedeutet: Aktivieren).

Wird denn - bei der Bestätigung der E-Mail-Adresse - das Passwort angezeigt?

Und dann kommt keine Nachricht?

Gruß
HerrB

Passwort für Frontendnutzer

Verfasst: Do 19. Jul 2007, 09:08
von HansGeorg
Hallo HerrB,
1 Ich habe den Newsletter inzwischen öfters getestet. Alles läuft tadellos. Anscheinend hat der Webmailer von 1&1 die Rückgabewerte der Links so zurückgegeben, dass in der DB "con_news_rcp" keine Einträge erfolgten.

2
Das Passwort wird angezeigt und per Mail versendet (in der Konfiguration des Handler-Moduls: Bestätigung bedeutet: Aktivieren).
Wird denn - bei der Bestätigung der E-Mail-Adresse - das Passwort angezeigt?
Und dann kommt keine Nachricht?
Leider nein! Die Funktion "Bestätigung bedeutet:Aktivieren" ist in der Vorkonfiguration des Template und im Artikel des Newsletter_Handlers" richtig aktiviert. Ich erhalte aber nie irgendwo ein Passwort. Kann das mit der Fehlermeldung, die ich bei der Bestätigung des Newsletter-Accounts bekomme zusammenhängen?

Code: Alles auswählen

Newsletter
Fatal error: Call to a member function on a non-object in /var/www/web3/html/contenido/cms/front_content.php(884) : eval()'d code on line 308
In der DB "con_news_rcp" finde ich keinen Eintrag für ein Passwort bzw. auch keine Verschlüsselung, Nur der Hash-Wert. Ist das das verschlüsselte Passwort?
Bei den meisten Systemen, die ich kenne, ist in der DB meist ein Feld "Password". Wird das bei Contenido anders geregelt?
Grüße und Dank für die Unterstützung
HansGeorg

Verfasst: Do 19. Jul 2007, 15:27
von HerrB
Ja, das kommt daher. Er "vergisst" irgendwann zwischendurch das Objekt des Empfängers und/oder des Frontend-Accounts (ich habe es gerade nicht im Kopf).

Man muss den Handler so anpassen, dass die ID, solange das Objekt noch gültig ist, in einer Variable gespeichert wird und dann im weiteren Verlauf verwendet wird.

Ich gucke mal.

Gruß
HerrB

Verfasst: Do 19. Jul 2007, 15:36
von HerrB
Im Bereich "confirm" diese Zeile

Code: Alles auswählen

// $idrecipient = $recipient->get("idnewsrcp");
mit

Code: Alles auswählen

$idrecipient = $recipient->get("idnewsrcp");
$email = $recipient->get("email");
ersetzen.

Dann

Code: Alles auswählen

$result = $newsletter->send($objProperties->getValue("clientsetting", $client, "Newsletter", "idcatart"),"single",$recipient->get("idnewsrcp"));
durch

Code: Alles auswählen

$result = $newsletter->send($objProperties->getValue("clientsetting", $client, "Newsletter", "idcatart"),"single",$idrecipient); 
Dann

Code: Alles auswählen

$frontendusers->select("idclient = '$client' AND username='".urlencode($recipient->get("email"))."'");
durch

Code: Alles auswählen

$frontendusers->select("idclient = '$client' AND username='".urlencode($email)."'");
Dann

Code: Alles auswählen

          $body = mi18n("txtMailPassword")."\n\n".mi18n("Username: ").$recipient->get("email")."\n".mi18n("Password: ").$pwd."\n\n".mi18n("Click here to login: ").$cfgClient[$client]["path"]["htmlpath"]."front_content.php?changelang=".$lang;
durch

Code: Alles auswählen

          $body = mi18n("txtMailPassword")."\n\n".mi18n("Username: ").$email."\n".mi18n("Password: ").$pwd."\n\n".mi18n("Click here to login: ").$cfgClient[$client]["path"]["htmlpath"]."front_content.php?changelang=".$lang;
Dann

Code: Alles auswählen

          $mail->AddAddress($recipient->get("email"));
durch

Code: Alles auswählen

          $mail->AddAddress($email);
Gruß
HerrB

Kurze Frage

Verfasst: Fr 20. Jul 2007, 14:22
von HansGeorg
Hallo HerrB,

meinst Du im "Output" des Newsletter-Handlers diesen Bereich mit den entsprechenden Änderungen versehen?

Code: Alles auswählen

  if ($recipient = $objRecipients->next()) { 
    // $idrecipient = $recipient->get("idnewsrcp");
    $recipient->set("confirmed",1); 
    $recipient->set("confirmeddate", date("Y-m-d H:i:s"), false); 
    $recipient->set("deactivated",0); 
    $recipient->store(); 

    $strMessage = mi18n("Thank you! You have confirmed your subscription to our newsletter!");

    $newsletters = New NewsletterCollection;
    $newsletters->select("idclient = '$client' AND idlang='$lang' AND welcome='1'"); 

    if ($newsletter = $newsletters->next()) { 
      $result = $newsletter->send($objProperties->getValue("clientsetting", $client, "Newsletter", "idcatart"),"single",$recipient->get("idnewsrcp")); 

      $strMessage .= mi18n(" The welcome newsletter is already on the way to you!");
    } 

    if ($arrSettings["FrontendLink"] == "enabled" && $arrSettings["FrontendConfirm"] == "ActivateUser") {
       $frontendusers = new FrontendUserCollection;
       $frontendusers->select("idclient = '$client' AND username='".urlencode($recipient->get("email"))."'");

       if ($frontenduser = $frontendusers->next()) {
          $frontenduser->set("active",1);
          $pwd = substr(md5(rand()),0,8); // Generating password
          $frontenduser->set("password", $pwd);
          $frontenduser->store();

          $strMessage .= mi18n("<br><br>Additionally, your website account has been activated. You can now use the following username and password to log in to access special areas on our website:<br>");
          $strMessage .= mi18n("Username: ").$recipient->get("email").mi18n("<br>Password: ").$pwd;

          $body = mi18n("txtMailPassword")."\n\n".mi18n("Username: ").$recipient->get("email")."\n".mi18n("Password: ").$pwd."\n\n".mi18n("Click here to login: ").$cfgClient[$client]["path"]["htmlpath"]."front_content.php?changelang=".$lang;

          $mail           = new phpmailer();
          $mail->From     = $arrSettings["SenderEMail"];
          $mail->FromName = $arrSettings["SenderEMail"];
          $mail->AddAddress($recipient->get("email"));
          $mail->Mailer   = "mail";
          $mail->Subject  = mi18n("Website account");
          $mail->Body     = $body;
          // $mail->AltBody  = $body;
Da habe ich nämlich die gleiche Fehlermeldung bekommen wie erwähnt, nur mit anderer Zeile

Code: Alles auswählen

Newsletter
Fatal error: Call to a member function on a non-object in /var/www/web3/html/contenido/cms/front_content.php(884) : eval()'d code on line 317
Aber ich muss das nochmal in Ruhe testen, vielleicht hab ich da nen Fehler gemacht!

Auf jeden Fall, vorerst mal Danke!
HansGeorg

Verfasst: Fr 20. Jul 2007, 15:40
von HerrB
Mmmh, kannst Du mal das Frontend Debugging aktivieren (siehe contenido/includes/config.misc.php) und dann mal die Zeile 317 posten? Offensichtlich liegt das Problem unter den geänderten Zeilen.

Gruß
HerrB

Ergebnisse fes Frontend-Debuggings

Verfasst: So 22. Jul 2007, 15:00
von HansGeorg
Hallo HerrB,
ich hab das jetzt nochmal in Ruhe mit dem Frontend-Debugging getestet. Zuerst am originalen Newsletter-Handler von 4.6.15 und dann mit dem von Dir vorgeschlagenem ersetzten Code.

1 Original Newsletter-Handler von 4.6.15:

Fehlermeldung:

Code: Alles auswählen

Newsletter
Fatal error: Call to a member function on a non-object in /var/www/web3/html/contenido/cms/front_content.php(884) : eval()'d code on line 308
Das war die Ausgabe des Frontend-Debugging:

Code: Alles auswählen

    if ($arrSettings["FrontendLink"] == "enabled" && $arrSettings["FrontendConfirm"] == "ActivateUser") {
       $frontendusers = new FrontendUserCollection;
       $frontendusers->select("idclient = '$client' AND username='".urlencode($recipient->get("email"))."'");
//Zeile 308 ist hier leer!//
       if ($frontenduser = $frontendusers->next()) {
          $frontenduser->set("active",1);
          $pwd = substr(md5(rand()),0,8); // Generating password
          $frontenduser->set("password", $pwd);
          $frontenduser->store();
2 Newsletter-Handler von 4.6.15 mit Deinen vorgeschlagenen Änderungen:

Fehlermeldung (Sorry, das war nicht 317, wie ich gepostet habe, sondern 318!):

Code: Alles auswählen

Newsletter
Fatal error: Call to a member function on a non-object in /var/www/web3/html/contenido/cms/front_content.php(884) : eval()'d code on line 318
Das war die Ausgabe des Frontend-Debugging:

Code: Alles auswählen

Zeile 316: $strMessage .= mi18n("<br><br>Additionally, your website account has been activated. You can now use the following username and password to log in to access special areas on our website:<br>");
Zeile 317: $strMessage .= mi18n("Username: ").$recipient->get("email").mi18n("<br>Password: ").$pwd;
Zeile 318: $body = mi18n("txtMailPassword")."\n\n".mi18n("Username: ").$email."\n".mi18n("Password: ").$pwd."\n\n".mi18n("Click here to login: ").$cfgClient[$client]["path"]["htmlpath"]."front_content.php?changelang=".$lang;
Ein Passwort kam jedoch nicht an. Hilft Dir das weiter?

Herzlichen Dank und Grüße
HansGeorg[/code]

Verfasst: So 22. Jul 2007, 16:47
von HerrB
Na, das Prinzip sollte doch klar sein:
Ersetze $recipient->get("email") durch $email.

In dem Fall in Zeile 317.

Gruß
HerrB

Verfasst: Mo 23. Jul 2007, 12:35
von stefkey
Hallo,

ich würde gerne "Handler-Webseite in neuem Fenster öffnen" deaktivieren, aber sobald ich das grüne Häckchen klicke ist es wieder aktiviert. Wie kann ich es endgültig deaktivieren. Vielleicht direkt in der Datenbank? Wo genau?


Besten Dank und Grüße
stefkey

Verfasst: Mo 23. Jul 2007, 13:27
von HerrB
Ehrlich gesagt, kann ich mir das noch immer nicht erklären.

Schmeiße bitte im Form-Modul-Template den Platzhalter für target raus. Ich habe es gerade nicht so im Kopf, wenn es da nix gibt, schmeiße im Form-Modul den entsprechenden Code raus, der target="_blank" setzt.

Gruß
HerrB

Verfasst: Mo 23. Jul 2007, 13:36
von stefkey
ok, habs jetzt im Modul rausgekickt.

Vielen Dank und schönen Tag!
stefkey

PS Aber es ist wirklich so, das das Häckchen immer wieder da ist...

Daaaanke, HerrB

Verfasst: Mo 23. Jul 2007, 17:18
von HansGeorg
Hallo HerrB,
dank Deiner Hilfe funktioniert der Passwort-Versand jetzt!
Ich bin in PHP und MySQL nicht so durch wie Du. Aber wenn man mir sagt, was zu machen ist, dann geht`s ... :D

Muss ich nur [$email] oder [$email."\n"] einsetzen. Funktioniert hat es mit beiden Varianten!?

Code: Alles auswählen

$strMessage .= mi18n("Username: ").$email.mi18n("<br>Password: ").$pwd;
Und vielen Dank nochmals!
Grüße
HansGeorg

Verfasst: Di 24. Jul 2007, 17:31
von HerrB
Das "\n" führt zu einem Zeilenumbruch, den Du offensichtlich nun mit <br> erzeugst (in mi18n("<br>Password: ")). <br> geht halt nur in HTML-Newslettern, nicht mit Text-Newslettern.

Gruß
HerrB

Verfasst: Do 23. Aug 2007, 17:53
von kptkip
@HerrB

Wurden die Änderungen aus der Diskussion mit Hansgeorg bereits in die Ausgangsdatei von Thread-Seite 1 eingearbeitet?

Verfasst: Do 23. Aug 2007, 23:31
von HerrB
Nein, sorry.

Gruß
HerrB