Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
Anti-Spam Maßnahmen
#61
Dazu hatte ich mich auch schonmal ausgelassen. Siehe Beitrag #22.
Zitieren
#62
Ich buddel das Thema mal wieder aus =)
Und zwar funktioniert auch alles super, aber ich habe bei mir einen Bug festgestellt und irgendwie finde ich den Fehler nicht. Es handelt sich dabei um den Code für die Registrierung.

Wenn man das Spambot-Feld vergisst einzugeben, kommt, dass das Feld nicht richtig ausgefüllt wurde. Aber es wird nich angezeigt, dass das Feld "Spambot" nicht richtig ausgefüllt wurde, sondern das Feld "Spielername".

Das Feld "Spielername" gibt es in meinem Forum als eigenes Profilfeld. Allerdings hat es die ID6 und das von dem Spambot die ID11.

Ich bin auch nochmal alles durchgegangen, aber irgendwie.. finde ich das Problem nicht.

Abschnitt aus der member-register
Code:
<fieldset class="trow2">

<legend><strong>Spamschutz!</strong></legend>

<table cellspacing="0" cellpadding="4">

<!-- start: member_register_customfield -->

<tbody><tr>

<td><span class="smalltext">Bitte <strong>"Ich bin
kein Bot"</strong> in die Textbox eintragen. Ohne
Anführungszeichen!<br />Die Eingabe ist notwendig um
automatisierte Registrierungen zu vermeiden.</span></td>

</tr>

<tr>

<td><input type="text" value="" size="0" class="textbox"
id="fid11" name="profile_fields[fid11]" /><div id="fid11_status"
style="display: none;"></div></td>

</tr>

<!-- end: member_register_customfield -->

</tbody></table>

</fieldset>

Abschnitt aus der inc/datahandlers/user.php
Code:
// Then loop through the profile fields.
                while($profilefield = $db->fetch_array($query))
                {
                        $profilefield['type'] = htmlspecialchars_uni($profilefield['type']);
                        $thing = explode("\n", $profilefield['type'], "2");
                        $type = trim($thing[0]);
                        $field = "fid{$profilefield['fid']}";
                         if($profile_fields['fid11'] != 'Ich bin kein Bot' && (basename($_SERVER['PHP_SELF']) == "member.php"))

Weiß vielleicht jemand Rat?
Zitieren
#63
Dir fehlt die set_error Zeile in inc/datahandlers/user.php
Code:
// Then loop through the profile fields.
                while($profilefield = $db->fetch_array($query))
                {
                        $profilefield['type'] = htmlspecialchars_uni($profilefield['type']);
                        $thing = explode("\n", $profilefield['type'], "2");
                        $type = trim($thing[0]);
                        $field = "fid{$profilefield['fid']}";
                        if($profile_fields['fid11'] != 'Ich bin kein Bot' && (basename($_SERVER['PHP_SELF']) == "member.php"))
                        {
                        $this->set_error('bad_profile_field_values', array($profilefield['name']));
                        }
Zitieren
#64
Huhu, danke für die Antwort. Da habe ich wohl nicht alles richtig kopiert, als ich es hier gepostet habe. Die Error-Zeile ist vorhanden, habe eben nochmal geschaut. Gehen tut's aber leider dennoch nicht. Sad

Also der Abschnitt sieht insgesamt halt so aus:
Code:
// Then loop through the profile fields.
                while($profilefield = $db->fetch_array($query))
                {
                        $profilefield['type'] = htmlspecialchars_uni($profilefield['type']);
                        $thing = explode("\n", $profilefield['type'], "2");
                        $type = trim($thing[0]);
                        $field = "fid{$profilefield['fid']}";
                         if($profile_fields['fid11'] != 'Ich bin kein Bot' && (basename($_SERVER['PHP_SELF']) == "member.php"))
        {
        $this->set_error('bad_profile_field_values', array($profilefield['name']));
        }

                        // If the profile field is required, but not filled in, present error.
Zitieren
#65
(28.09.2011, 21:49)NetHunter schrieb: So, vergessen wir alles was in Beitrag 47 steht. Alles auf Anfang.
Neues globales Template nh_spamprotect mit folgenden Inhalt erstellen:
Code:
<tr>
<td class="trow1" valign="top"><strong>Sicherheitsfrage</strong></td>
<td class="trow1">
<legend><strong>Spamschutz!</strong></legend>
<table cellspacing="0" cellpadding="4">
<tr>
<td><span class="smalltext">Bitte <strong>"Ich bin kein Bot"</strong> in die Textbox eintragen. Ohne Anführungszeichen!<br />Die Eingabe ist notwendig um automatisierte Beitragserstellungen zu vermeiden.</span></td>
</tr>
<tr>
<td><input type="text" value="" size="0" class="textbox" id="captchain" name="captchain" /><input type="hidden" name="captchapostplus" value="Ich bin kein Bot" id="captchapostplus" /></td>
</tr>
</table>
</td>
</tr>

Diesen Code:
Code:
if($mybb->input['captchain'] != 'Ich bin kein Bot' && !$mybb->user['uid']) {
        error('Du hast die Sicherheitsfrage leider falsch beantwortet!<br /><a href="javascript:history.back()">Zur&uuml;ck</a>');
    }

einmal in newthread.php über der Zeile
Code:
// One or more errors returned, fetch error list and throw to newthread page
und außerdem in newreply.php über der Zeile
Code:
// One or more errors returned, fetch error list and throw to newreply page
einbauen.

Diesen Code:
Code:
if($mybb->user['uid'] == 0) {
    eval("\$nh_spamprotect = \"".$templates->get("nh_spamprotect")."\";");
    }
einmal in newthread.php über der Zeile:
Code:
eval("\$newthread = \"".$templates->get("newthread")."\";");
und außerdem in newreply.php über der Zeile:
Code:
eval("\$newreply = \"".$templates->get("newreply")."\";");
einbauen.


Für die Schnellantwortbox.
Finde in showthread.php
Code:
eval("\$quickreply = \"".$templates->get("showthread_quickreply")."\";");
Darüber einfügen:
Code:
if($mybb->user['uid'] == 0) {
        eval("\$nh_spamprotect = \"".$templates->get("nh_spamprotect")."\";");
        }

Zu guter letzt im Template newreply und newthread unter {$captcha} die neue Variable {$nh_spamprotect} einbauen.
Für die Schnellantwortbox zusätzlich in showthread_quickreply, ebenfalls unter {$captcha}

Damit sollte alles wie gewünscht funktionieren. Smile

hallo leute,ich habe alles wie beschrieben eingebaut.die frage und das eingabefeld werden auch angezeigt,bei antworten und auch bei der schnellantwort.leider kann man trotzdem posten ohne eine eingabe.es kommt auch keine meldung,dass das feld leer ist oder eine falsche eingabe gemacht wurde.was könnte das problem sein?für eure hilfe bedanke ich mich im voraus.

gruss

der unwissende
Zitieren
#66
Hast Du eine URL zu Deinem Forum? Ich schätze mal, dass es sich nicht um das Forum handelt, das bei Dir als Homepage angegeben ist, da dort Gäste gar nicht posten dürfen...
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#67
hallo jockl,nett von dir das du dich mal wieder um mich kümmerst.aber doch,das ist dieses forum.ich habe momentan die schreibrechte für gäste wieder gesperrt.sonst ist sofort wieder alles zugemüllt.als ich den code probiert hatte,hatte ich natürlich gästen die schreibrechte eingeräumt.

gruss

der unwissende
Zitieren
#68
Naja, so lässt sich halt nur schlecht nachvollziehen, was evtl. schief läuft.... Wink
Alles andere ist raten, was Du bei der Umsetzung ggf. nicht korrekt umgesetzt hast.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#69
vielen dank für deine mühe,jockl.diese kategorie habe ich jetzt für gäste frei gegeben.wenn du vielleicht mal schauen möchtest.

http://verkehrt.eu/forumdisplay.php?fid=38

ich danke dir schon mal im voraus

gruss

der unwissende
Zitieren
#70
Bist Du Dir sicher, dass Du die Code-Änderungen in den PHP-Dateien vorgenommen hast und diese auch wirklich gespeichert wurden?
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  [Frage] Anti Flood Script in MyBB auf allen Seiten einbauen? Devon 1 2.744 01.08.2009, 18:38
Letzter Beitrag: Michael
  Anti-"Quottel" Mod ? Chang Noi 1 2.382 17.06.2008, 13:00
Letzter Beitrag: StefanT
  Anti Smilie Sarah 4 2.252 23.10.2007, 13:46
Letzter Beitrag: Sarah