Addon Tippspiel Benutzeranmeldung (SPAMMER)
Addon Tippspiel Benutzeranmeldung (SPAMMER)
Beim Tippspiel gibt es ja die Option: "nach Anmeldung Freischaltung erforderlich"
Gibt es die Möglichkeit zu implementieren, dass die Freischaltung nicht manuell, sondern durch einen Link in einer E-Mail freigeschaltet wird, so wie es eben auch z.B. in Foren üblich ist? Dadurch könnte man besser Fake-Anmeldungen vermeiden.
Sinnvoll wäre eventuell ebenso ein Captcha-Feld. Aber ich weiß nicht, ob sich das in den LMO noch implementieren lässt?
Ich hatte die Registrierungen fürs Tippspiel bisher immer komplett offen und zum Glück keine Spam-Probleme. Allerdings gab es jetzt immer wieder Fake-Anmeldungen mit einer nicht vorhandenen E-Mail Adresse, gefolgt von einer ständigen Passwortanforderung, die ja auch bei Nicht-Freischaltung anscheinend möglich ist. Ich gehe hier von einem Bot aus, was auch immer der Zweck dabei sein soll.
Gibt es die Möglichkeit zu implementieren, dass die Freischaltung nicht manuell, sondern durch einen Link in einer E-Mail freigeschaltet wird, so wie es eben auch z.B. in Foren üblich ist? Dadurch könnte man besser Fake-Anmeldungen vermeiden.
Sinnvoll wäre eventuell ebenso ein Captcha-Feld. Aber ich weiß nicht, ob sich das in den LMO noch implementieren lässt?
Ich hatte die Registrierungen fürs Tippspiel bisher immer komplett offen und zum Glück keine Spam-Probleme. Allerdings gab es jetzt immer wieder Fake-Anmeldungen mit einer nicht vorhandenen E-Mail Adresse, gefolgt von einer ständigen Passwortanforderung, die ja auch bei Nicht-Freischaltung anscheinend möglich ist. Ich gehe hier von einem Bot aus, was auch immer der Zweck dabei sein soll.
- Henshingly
- Administrator

- Beiträge: 600
- Registriert: Sa 1. Sep 2018, 14:21
- Wohnort: Dortmund
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Ein Captcha sollte möglich sein.
Freischaltung per Link Aktivierung durch das senden an den Tipper, da sehe ich momentan keine Möglichkeit.
Grüße Henshingly
Freischaltung per Link Aktivierung durch das senden an den Tipper, da sehe ich momentan keine Möglichkeit.
Grüße Henshingly
Kein Support über PN oder eMail.
Support gibt es nur im Forum.
Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)
Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Support gibt es nur im Forum.
Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)
Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Das würde gehen.
Dazu sind ein paar Schritte notwendig.
Die lmo-admintippuseredit.php bietet einen ersten Hinweis:
Die Datei mit den Tippern wird eingelesen und geschaut, ob der aktuelle Eintrag in dem Array $users dem aktuell zu bearbeitenden User entspricht.
Das kann man anwenden, das dritte Element im Array definiert, ob ein User freigeschaltet ist (=5) oder nicht (=leer).
In der Mail zum versenden ist nun also ein Link einzubauen á la "URL/verify.php?verify=foo@bar.xyz".
Die verify.php beinhalte nun eine leichte Anpassung des obigen Codes:
Das ist ganz grob und nicht überprüft! Man kann noch mehr auf Nummer Sicher gehen (Mail-Adresse ist leicht zu raten und dann in der URL einzugeben) und eine 12. Information speichern: einen Salt, der auch in der ULR steht und zu prüfen ist. Dann sind noch ein paar mehr Arbeiten notwendig, nämlich Generierung des Salt und Speicherung in der lmo-tippauth.txt via lmo-tippernew.php
Dazu sind ein paar Schritte notwendig.
Die lmo-admintippuseredit.php bietet einen ersten Hinweis:
Code: Alles auswählen
$pswfile=PATH_TO_ADDONDIR."/tipp/".$tipp_tippauthtxt;
$users = file($pswfile);
array_unshift($users,'');
if ($save != -1) {
$gef=0;
for($i=1;$i<count($users) && $gef==0;$i++){
$tipp_tipperdaten = explode('|',$users[$i]);
// Änderung & Nick gefunden
if($nick==$tipp_tipperdaten[0] && $newpage == 0){
$gef=1;
$save=$i;
if (!$edit) $newpage=1;
} elseif($nick==$tipp_tipperdaten[0] && $newpage == 1){
$newpage = 0;
echo getMessage($text['tipp'][24],TRUE);
}
}
if($gef==0){
$save=$i;
}
}Das kann man anwenden, das dritte Element im Array definiert, ob ein User freigeschaltet ist (=5) oder nicht (=leer).
In der Mail zum versenden ist nun also ein Link einzubauen á la "URL/verify.php?verify=foo@bar.xyz".
Die verify.php beinhalte nun eine leichte Anpassung des obigen Codes:
Code: Alles auswählen
if($_GET['verify']==$tipp_tipperdaten[1]) { //Mail-Adresse gefunden im Array?
$gef=1
$save=$i;
$tipp_tipperdaten[2] = 5; //freigeschaltet
}
if($gef==0){
$save=$i;
}
$users[$save] =$tipp_tipperdaten[0]."|".$tipp_tipperdaten[1]."|".$tipp_tipperdaten[2]."|".$tipp_tipperdaten[3]."|".$tipp_tipperdaten[4]."|";
$users[$save].=$tipp_tipperdaten[5]."|".$tipp_tipperdaten[6]."|".$tipp_tipperdaten[7]."|".$tipp_tipperdaten[8]."|".$tipp_tipperdaten[9]."|";
$users[$save].=$tipp_tipperdaten[10]."|EOL";
require(PATH_TO_ADDONDIR."/tipp/lmo-tippsaveauth.php");
- Henshingly
- Administrator

- Beiträge: 600
- Registriert: Sa 1. Sep 2018, 14:21
- Wohnort: Dortmund
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Du Glücklicher
Mir platzt vor lauter Arbeit bald der Kopf.

Mal sehen wann ich das für den Classic LMO übernehmen kann. Denn der Fragesteller benutzt ja den.
Wie gesagt viel Arbeit
Mir platzt vor lauter Arbeit bald der Kopf.
Mal sehen wann ich das für den Classic LMO übernehmen kann. Denn der Fragesteller benutzt ja den.
Wie gesagt viel Arbeit
Kein Support über PN oder eMail.
Support gibt es nur im Forum.
Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)
Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Support gibt es nur im Forum.
Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)
Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Das ist ja cool, top! 
Ja, aktuell benutze ich den klassischen LMO. Aber großartige Arbeit!
Ja, aktuell benutze ich den klassischen LMO. Aber großartige Arbeit!
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Eigentlich nicht. Ich gehe davon aus, dass PHPMailer verwendet wird. Dann ist im alten LMO ein einzige manuelle Anpassung notwendig, der Rest kann aus dem Repository gezogen und genutzt werden:Henshingly hat geschrieben: Di 19. Dez 2023, 12:07 Mal sehen wann ich das für den Classic LMO übernehmen kann. Denn der Fragesteller benutzt ja den.
Wie gesagt viel Arbeit
lmo-tippernew.php
Code: Alles auswählen
require_once(PATH_TO_ADDONDIR."/tipp/lmo-tipptest.php");
include(PATH_TO_ADDONDIR."/tipp/lmo-tippsendmail.php"); //PHPMailer includen für Mailversand
.
.
.
if ($tipp_mailbeianmeldung==1) {
include(PATH_TO_ADDONDIR."/tipp/lmo-admintippbenachrichtigung.php");
}
include(PATH_TO_ADDONDIR."/tipp/lmo-admintippverify.php"); //Mailversand zur Mailbestätigung
}
// end ($newpage==1)
- Henshingly
- Administrator

- Beiträge: 600
- Registriert: Sa 1. Sep 2018, 14:21
- Wohnort: Dortmund
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
@DwB
auf meinem Webspace verursacht in der lmo-admintippverify.php ein Problem.
In der eMail die der neue User erhält befindet sich nun folgender Link zur Freischaltung.
Gruß Henshingly
auf meinem Webspace verursacht
Code: Alles auswählen
$protIn der eMail die der neue User erhält befindet sich nun folgender Link zur Freischaltung.
beachte die doppelte https:// am Linkanfang.
Gruß Henshingly
Kein Support über PN oder eMail.
Support gibt es nur im Forum.
Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)
Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Support gibt es nur im Forum.
Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)
Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Ah, Deine install.php ist anders.
Das ist formal so nicht ganz sauber.
$_SERVER['HTTPS'] kennt zwei Zustände: On und Off. Mit dem obigen Code wird, unabhängig des Zustandes von $_SERVER['HTTPS'] IMMER https gewählt, wenn der Eintrag vorhanden ist. Das ist faktisch falsch.
Darum habe ich mich für
entschieden und lasse den Browser das zu nutzende Protokoll selber wählen. In der init_parameters.php steht nun in $lmo_url ein String, beginnend mit //.
Da in der Mail aber das Protokoll angegeben werden muss, um den Link selektierbar im Outlook, Gmail, Thunderbird, was weiß ich für Clients, muss das Protokoll mitgegeben werden. Deshalb lasse ich das ermitteln und hänge es vor URL_TO_ADDONDIR, was ja so auflöst:
Fun fact:
Es gibt wohl auch Einstellungen (eher selten) im Server, da wird gar kein $_SERVER['HTTPS'] ausgegeben, dafür aber ein $_SERVER['SERVER_PORT']. Ist letzterer auf 443 gestellt, so handelt es sich auch um ein verschlüsseltes Protokoll.
Code: Alles auswählen
if (strpos(dirname($_SERVER['SCRIPT_NAME']),"/install")!==FALSE) {
$url=(isset($_SERVER['HTTPS'])?'https':'http').'://' . $_SERVER['HTTP_HOST'].dirname(dirname($_SERVER['SCRIPT_NAME']));
} else {
$url=(isset($_SERVER['HTTPS'])?'https':'http').'://' . $_SERVER['HTTP_HOST'].dirname(($_SERVER['SCRIPT_NAME']));
}$_SERVER['HTTPS'] kennt zwei Zustände: On und Off. Mit dem obigen Code wird, unabhängig des Zustandes von $_SERVER['HTTPS'] IMMER https gewählt, wenn der Eintrag vorhanden ist. Das ist faktisch falsch.
Darum habe ich mich für
Code: Alles auswählen
if (strpos(dirname($_SERVER['SCRIPT_NAME']),"/install")!==FALSE) {
$url='//' . $_SERVER['HTTP_HOST'].dirname(dirname($_SERVER['SCRIPT_NAME']));
} else {
$url='//' . $_SERVER['HTTP_HOST'].dirname(($_SERVER['SCRIPT_NAME']));
}Da in der Mail aber das Protokoll angegeben werden muss, um den Link selektierbar im Outlook, Gmail, Thunderbird, was weiß ich für Clients, muss das Protokoll mitgegeben werden. Deshalb lasse ich das ermitteln und hänge es vor URL_TO_ADDONDIR, was ja so auflöst:
Code: Alles auswählen
if (!defined('URL_TO_LMO')) define('URL_TO_LMO', $lmo_url);
if (!defined('URL_TO_ADDONDIR')) define('URL_TO_ADDONDIR', URL_TO_LMO.'/addon');Es gibt wohl auch Einstellungen (eher selten) im Server, da wird gar kein $_SERVER['HTTPS'] ausgegeben, dafür aber ein $_SERVER['SERVER_PORT']. Ist letzterer auf 443 gestellt, so handelt es sich auch um ein verschlüsseltes Protokoll.
- Henshingly
- Administrator

- Beiträge: 600
- Registriert: Sa 1. Sep 2018, 14:21
- Wohnort: Dortmund
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Das man es dem Browser überlässt welches Protokoll beim Aufruf des LMO's aus gewählt wird ist mir am Anfang nicht eingefallen.
Bei den ersten Updates des Ur-LMO's aus der Repositorie auf https://sourceforge.net/ war mir bei den ersten ersten Test nur aufgefallen das bei der Installation immer das Protokoll http in der init-parameters.php für die Variable $lmo_url als abolute URL zum LMO eingetragen wurde.
Also habe ich damals versucht das in der install.php abzufangen.
Dies hat ja nun bisher funktioniert.
Mit Deiner Herangehensweise ist das natürlich viel besser. Das würde nämlich auch Probleme bei LMO-Nutzer erst gar nicht auftauchen lassen, die Ihren Webspace erst nachträglich mit 'nem Zertifikat verschlüsseln (Soll es ja immer noch geben, das Betreiber Ihren Webspace auf http laufen lassen).
Ich stehe aber nun vor dem Problem, das ich MEINEN Fehler in künftigen Updates des LMO's wieder grade biegen muss.
Denn es werden nicht alle Benutzer bei einem LMO Update die install.php im install Ordener ausführen, um die $lmo_url zu ändern.
Da gehen mir zwar grade ein paar Sachen durch den Kopf um es zu bewerkstelligen aber die momentane Weihnachtszeit, die Arbeit, die dünne Personaldecke und fehlende Zeit machen mir dieses erst mal nicht möglich.
Danke für die ausführliche Erklärung Deiner Herangehensweise.
Grüße Henshingly
Bei den ersten Updates des Ur-LMO's aus der Repositorie auf https://sourceforge.net/ war mir bei den ersten ersten Test nur aufgefallen das bei der Installation immer das Protokoll http in der init-parameters.php für die Variable $lmo_url als abolute URL zum LMO eingetragen wurde.
Also habe ich damals versucht das in der install.php abzufangen.
Dies hat ja nun bisher funktioniert.
Mit Deiner Herangehensweise ist das natürlich viel besser. Das würde nämlich auch Probleme bei LMO-Nutzer erst gar nicht auftauchen lassen, die Ihren Webspace erst nachträglich mit 'nem Zertifikat verschlüsseln (Soll es ja immer noch geben, das Betreiber Ihren Webspace auf http laufen lassen).
Ich stehe aber nun vor dem Problem, das ich MEINEN Fehler in künftigen Updates des LMO's wieder grade biegen muss.
Denn es werden nicht alle Benutzer bei einem LMO Update die install.php im install Ordener ausführen, um die $lmo_url zu ändern.
Da gehen mir zwar grade ein paar Sachen durch den Kopf um es zu bewerkstelligen aber die momentane Weihnachtszeit, die Arbeit, die dünne Personaldecke und fehlende Zeit machen mir dieses erst mal nicht möglich.
Danke für die ausführliche Erklärung Deiner Herangehensweise.
Grüße Henshingly
Kein Support über PN oder eMail.
Support gibt es nur im Forum.
Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)
Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Support gibt es nur im Forum.
Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)
Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Streng genommen bietest Du ja ein Release an. In einem Release kann sich ja durchaus auch technisch einige Dinge ergeben.
Daher sollte in den Release-Notes immer stehen, was sich fundamental ändert und wenn Du das Protokoll NICHT mehr in die init-parameters.php schreibst, sondern wie ich verfährst, sollte das dort explizit vermerkt werden.
Alle, die Deinen LMO neu installieren, haben das Problem nicht.
Alternativ in die init.php eine kleine Subroutine einbauen, die den Eintrag prüft und ggf. das http(s) aus dem String $lmo_url entfernt.
Nach dem Einlesen der Werte und vor Definition der Konstanten.
Daher sollte in den Release-Notes immer stehen, was sich fundamental ändert und wenn Du das Protokoll NICHT mehr in die init-parameters.php schreibst, sondern wie ich verfährst, sollte das dort explizit vermerkt werden.
Alle, die Deinen LMO neu installieren, haben das Problem nicht.
Alternativ in die init.php eine kleine Subroutine einbauen, die den Eintrag prüft und ggf. das http(s) aus dem String $lmo_url entfernt.
Nach dem Einlesen der Werte und vor Definition der Konstanten.
Code: Alles auswählen
if(str_contains($lmo_url, "http")) {
$array = array("http:", "https:");
$lmo_url = str_replace($array, "", $lmo_url);
}
