16.04.2012, 17:09
13.06.2012, 00:14
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
Abschnitt aus der inc/datahandlers/user.php
Weiß vielleicht jemand Rat?
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?
NetHunter
13.06.2012, 16:36
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']));
}
20.06.2012, 11:08
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.
Also der Abschnitt sieht insgesamt halt so aus:
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.
28.07.2012, 11:12
(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ück</a>');
}
einmal in newthread.php über der Zeile
und außerdem in newreply.php über der ZeileCode:// One or more errors returned, fetch error list and throw to newthread page
einbauen.Code:// One or more errors returned, fetch error list and throw to newreply page
Diesen Code:
einmal in newthread.php über der Zeile:Code:if($mybb->user['uid'] == 0) {
eval("\$nh_spamprotect = \"".$templates->get("nh_spamprotect")."\";");
}
und außerdem in newreply.php über der Zeile:Code:eval("\$newthread = \"".$templates->get("newthread")."\";");
einbauen.Code:eval("\$newreply = \"".$templates->get("newreply")."\";");
Für die Schnellantwortbox.
Finde in showthread.php
Darüber einfügen:Code:eval("\$quickreply = \"".$templates->get("showthread_quickreply")."\";");
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.
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
28.07.2012, 12:34
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...
28.07.2012, 15:17
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
gruss
der unwissende
28.07.2012, 15:30
Naja, so lässt sich halt nur schlecht nachvollziehen, was evtl. schief läuft....
Alles andere ist raten, was Du bei der Umsetzung ggf. nicht korrekt umgesetzt hast.
Alles andere ist raten, was Du bei der Umsetzung ggf. nicht korrekt umgesetzt hast.
28.07.2012, 15:47
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
http://verkehrt.eu/forumdisplay.php?fid=38
ich danke dir schon mal im voraus
gruss
der unwissende
28.07.2012, 16:17
Bist Du Dir sicher, dass Du die Code-Änderungen in den PHP-Dateien vorgenommen hast und diese auch wirklich gespeichert wurden?