Original phpbb2 anstatt AVC-Captcha-Fenster bei Registrierung

Ersetzt das Original phpBB CAPTCHA gegen eins mit diversen Konfigurationsmöglichkeiten.

Original phpbb2 anstatt AVC-Captcha-Fenster bei Registrierung

Beitragvon dtc » 27. Sep 2007 21:20

Hallo allerseits,

ich habe heute mal mein Forum auf die neueste Version vom AVC gebracht.
Hatte noch die originale 1.1.0 Version des phpbb2 plus 1.53 drin.

Hat soweit auch eigentlich alles geklappt:
- im Adminbereich wird alles korrekt angezeigt
- beim Confirm wird auch das AVC-Captcha-Fenster angezeigt

Nur beim Registrieren wird das originale Captcha-Fenster vom phpbb2 abgezeigt.
Ich weiß echt nicht warum - hab nochmal alle Dateien gecheckt.
Kommt ja eigentlich nur die profile.php und die usercp_register.php in Frage, oder?


PS:
Eins scheint auch im Adminbereich nicht zu stimmen.
Ich kann dort kein Hintergrund-Bild auswählen... oder wird das zufällig aus den vorhandenen gewählt ?
Jedenfalls zeigt er in der Admin-Vorschau trotz diverser verschiedener Einstellungstests kein Hintergrundbild an...
dtc
 
Beiträge: 5
Registriert: 27. Sep 2007 21:06

Beitragvon AmigaLink » 27. Sep 2007 22:41

Ich beschäftige mich schon lange nicht mehr mit dem plus Board, aber soweit ich weis ist dort ja auch die VC von Smartor installiert und man kann irgendwo Einstellen welches CAPTCHA verwendet werden soll.

Das Hintergrundbild des AVC wird, genau wie der Zeichensatz, zufällig aus den vorhandenen ausgewählt. Außerdem wird, wenn das Hintergrund nicht den maßen des CAPTCHA-Bildes entspricht, ein zufälliger Ausschnitt des Bildes gewählt bzw. (falls es kleiner ist) die Position zufällig bestimmt.
http://www.amigalink.de/viewtopi ... =5367#5367
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon dtc » 28. Sep 2007 07:30

Hab das ganze nochmal ein wenig untersucht:

- soweit ich das überblicken kann, ist kein VC von Smartor installiert (von Smartor sind nur die Album-Addons installiert)
- im originalen Plus 1.53 war die Version 1.1.0 deines AVC installiert
- hab das jetzt alles Stück für Stück auf 1.2.1 upgedatet

Dein AVC funktioniert auch bei Gäste-Postings (hab das mal zum Testen so eingestellt, dass Gäste nur mit Code posten können - hier zeigt er allerdings grundsätzlich 10 Zeichen an, anstatt 4-6)
Beim Confirm hingegen zeigt er (grundsätzlich) 6 Zeichen an.

Einzig beim Registrieren kommt das originale phpbb2-Captcha-Bild mit 5 Zeichen.

Hast du irgendeine Idee, woran das liegen könnte oder wo ich mal genauer suchen muss ?
Denn gerade beim Registrieren wäre mir eine vernünftige Captcha-Funktion ganz lieb :)

Zum zweiten Problem:
Ich habe jetzt nochmal mit den Hintergrund-Bildeinstellungen rumprobiert.
Habe mal alle Kreise, Linien usw. deaktiviert, das Hintergrundbild aktiviert, die Hintergrundfarbe auf #FFFFFF gesetzt und die Transparenz auf 100%.
Trotzdem wird kein Bild sichtbar.
Es befinden sich aber alle Originalbilder aus deinem Installationspaket im richtigen Verzeichnis.
Woran kanns noch liegen ?

Gruß DTC
dtc
 
Beiträge: 5
Registriert: 27. Sep 2007 21:06

Beitragvon AmigaLink » 28. Sep 2007 11:53

Hmmm- alles sehr seltsam!
Das Original phpBB2 CAPTCHA kann normalerweise nirgendwo mehr angezeigt werden, weil die dafür zuständige Datei (usercp_confirm.php) vom AVC überschrieben wird.
Und was die Bilder anbetrifft. Stimmt der Dateiphad?
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon dtc » 28. Sep 2007 17:38

1.
Ich hab nochmal alles überprüft...
Die Pfade stimmen... /captcha/pics

2.
Hab da noch was in der profile.php gefunden (die ja anscheinend beim Registrieren aufgerufen wird) - wofür wird denn die usercp_confirm_adv.php benötigt ?

So sieht der Bereich in meiner profile.php aus:
Code: Alles auswählen
   else if ( $mode == 'confirm' )
   {
      // Visual Confirmation
      if ( $userdata['session_logged_in'] && (htmlspecialchars($HTTP_GET_VARS['id']) != 'Admin'))
      {
         exit;
      }

      if (function_exists(imagettftext) && defined('ADV_CAPTCHA'))
         include($phpbb_root_path . 'includes/usercp_confirm_adv.'.$phpEx);
      else
         include($phpbb_root_path . 'includes/usercp_confirm.'.$phpEx);
      exit;
   }
Wo könnte er sich denn sonst das originale confirm herholen ? *grübel*
Kann es evtl. irgendein Cache-Problem sein ?

3.
Kann das sein, dass beim Login-Confirm (also wenn man einmal sein PW falsch eingegeben hat), dann die ct_confirm.php aus dem ctracker-Verzeichnis benutzt wird und deshalb immer 6 Zeichen angezeigt werden ?
Nutzt ct_confirm die Daten vom AVC? Denn die Codebilder sehen ansonsten identisch aus...

Gruß DTC
(der nun endlich eine Woche Urlaub hat :))
dtc
 
Beiträge: 5
Registriert: 27. Sep 2007 21:06

Beitragvon AmigaLink » 29. Sep 2007 09:27

Die ct_visual_confirm.php generiert den Bestätigungscode, der dann später von dem CAPTCHA-Image angezeigt wird und vom User eingegeben werden muss. Der CTracker nutzt normalerweise das CAPTCHA des AVC, wenn der MOD installiert ist. Aber beim Plus ist nichts normal ...

Also der Code den du da gepostet hast, bestätigt (teilweise) meine Aussage von Beitrag #2. Nämlich das man irgendwo einstellen kann welches CAPCHA genutzt werden soll. Außerdem wird überprüft ob der Server das verarbeiten von TTF-Fonts unterstützt.
Der Codeblock prüft ob die Konstante ADV_CAPTCHA gesetzt ist und ob TTF-Fonts verarbeitet werden können. Wenn ja, dann wird die usercp_confirm_adv.php genutzt. Wenn nicht, dann die usercp_confirm.php.
Die Original usercp_confirm.php benötigt keine TTF-Unterstützung. Die es AVC jedoch schon. Deswegen vermute ich mal das die usercp_confirm.php des AVC in usercp_confirm_adv.php umbenannt wurde.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon dtc » 29. Sep 2007 11:03

Dann müsste es ja funktionieren, wenn ich die usercp_confirm.php deines AVC nochmal auf den Server spiele und zwar diesmal als usercp_confirm_adv.php.
Somit wäre beide confirm-Dateien vom AVC...

Nach dem Essen werd ich das mal prüfen...

Zugefügt nach 1 Tag(en) 2 Stunde(n) 6 Minute(n):

Tja, daran lag es leider auch nicht.

Könntest du mir evtl. mal deine profile.php und alle damit irgendwie zusammenhängenden Dateien zuschicken ? (usercp_confirm.php, usercp_register.php usw.)

Ich will mal rückverfolgen, wo da genau etwas "schief" geht.
Leider habe ich von PHP nicht so die Ahnung, aber bisher habe ich das dann meistens doch irgendwie rausbekommen ;)

Vielleicht kannst du mir ja auch helfen, indem du mir mal kurz aufschreibst, wie die Registrierung funktioniert und welche Dateien daran direkt und indirekt in welcher Reihenfolge beteiligt sind (bzw. auf welche Codezeilen ich evtl. besonders anschauen sollte).
Dann gehe ich das mal der Reihenfolge durch und werde bestimmt den Fehler in meinen Dateien finden...

Zugefügt nach weiteren 12 Minute(n):

So, hab den Fehler gefunden :)

Ich hab mir mal das Captcha-Bild auf der Registrierungsseite genauer angeschaut und festgestellt, dass dahinter die Datei antirobot_pic.php steckt.
Hab mir dann mal sämtliche relevanten Dateien angeschaut und danach gesucht.
Bin dabei in der usercp_register.php auf folgenden Code aufmerksam geworden:
Code: Alles auswählen
      if ($plus_config['enable_antirobot'])
      {

         //
         // Anti Robotic Registration
         //
         $sql = "SELECT * FROM " . ANTI_ROBOT_TABLE . " WHERE session_id = '" . $userdata['session_id'] . "' LIMIT 1";
         if( !$result = $db->sql_query($sql) )
         {
            message_die(GENERAL_ERROR, 'Could not obtain registration information', '', __LINE__, __FILE__, $sql);
         }

         $anti_robot_row = $db->sql_fetchrow($result);

         if (( strtolower($_POST['reg_key']) != $anti_robot_row['reg_key'] ) or ($anti_robot_row['reg_key'] == ''))
         {
            $error = TRUE;
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Wrong_reg_key'];
         }
         else
         {
            $sql = "DELETE FROM " . ANTI_ROBOT_TABLE . " WHERE session_id = '" . $userdata['session_id'] . "'";
            if( !$result = $db->sql_query($sql) )
            {
               message_die(GENERAL_ERROR, 'Could not delete validation key', '', __LINE__, __FILE__, $sql);
            }
         }
         // --------------------------
         //
      } else
      if ($board_config['enable_confirm'] && !$plus_config['enable_antirobot'])
      {
         if (empty($_POST['confirm_id']))
         {
            $error = TRUE;
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
         }
         else
         {
            $confirm_id = htmlspecialchars($_POST['confirm_id']);
            if (!preg_match('/^[A-Za-z0-9]+$/', $confirm_id))
            {
               $confirm_id = '';
            }

            $sql = 'SELECT code
               FROM ' . CONFIRM_TABLE . "
               WHERE confirm_id = '$confirm_id'
                  AND session_id = '" . $userdata['session_id'] . "'";
            if (!($result = $db->sql_query($sql)))
            {
               message_die(GENERAL_ERROR, 'Could not obtain confirmation code', '', __LINE__, __FILE__, $sql);
            }

            if ($row = $db->sql_fetchrow($result))
            {
               if ($row['code'] != $confirm_code)
               {
                  $error = TRUE;
                  $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
               }
               else
               {
                  $sql = 'DELETE FROM ' . CONFIRM_TABLE . "
                     WHERE confirm_id = '$confirm_id'
                        AND session_id = '" . $userdata['session_id'] . "'";
                  if (!$db->sql_query($sql))
                  {
                     message_die(GENERAL_ERROR, 'Could not delete confirmation code', '', __LINE__, __FILE__, $sql);
                  }
               }
            }
            else
            {
               $error = TRUE;
               $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
            }
            $db->sql_freeresult($result);
         }
      }

Hab dann gleich mal in der Plus-Konfiguration des Adminbereiches die Funktion "Aktiviere Robot Überprüfung" deaktiviert und siehe da, ich hab jetzt das "richtige" Captcha-Bild vom AVC :D

Zugefügt nach weiteren 52 Minute(n):

Noch ein weiterer Zusatz von mir:

Habe mich ja gewundert, wieso beim Gäste-Posting ein 10stelliger Confirm-Code angezeigt wird.
Das liegt einfach daran, dass in der posting.php noch ein alter Code-Generator drin steht.

Dort sollte also folgender alter Code:
Code: Alles auswählen
   // Generate the required confirmation code
   // NB 0 (zero) could get confused with O (the letter) so we make change it
   $code = dss_rand();
   $code = strtoupper(str_replace('0', 'o', substr($code, 6)));

durch diesem neuen Code ersetzt werden:
Code: Alles auswählen
      // Generate the required confirmation code
      $code_length = rand(4, 6);
      $code = dss_rand();
      $code = strtoupper(base_convert($code, 16, 35));
      $code = str_replace('I', '', $code); // The letter I could get confused with the letter J and the number 1 (one) so we remove it
      $code = str_replace('0', '', $code); // NB 0 (zero) could get confused with O (the letter) so we remove it
      $code = substr($code, 2, $code_length);


Zugefügt nach weiteren 34 Minute(n):

Und noch ein Zusatz:

Ähnliches wie oben für die posting.php beschrieben gilt auch für die login.php !
Dort generiert der CTracker den Code ebenfalls noch über eine ältere Variante und muss somit ersetzt werden.

alt:
Code: Alles auswählen
         // Generate the required confirmation code
         // NB 0 (zero) could get confused with O (the letter) so we make change it
         $code = dss_rand();
         $code = strtoupper(str_replace('0', 'o', substr($code, 6)));



neu:
Code: Alles auswählen
      // Generate the required confirmation code
      $code_length = rand(4, 6);
      $code = dss_rand();
      $code = strtoupper(base_convert($code, 16, 35));
      $code = str_replace('I', '', $code); // The letter I could get confused with the letter J and the number 1 (one) so we remove it
      $code = str_replace('0', '', $code); // NB 0 (zero) could get confused with O (the letter) so we remove it
      $code = substr($code, 2, $code_length);
dtc
 
Beiträge: 5
Registriert: 27. Sep 2007 21:06

Beitragvon AmigaLink » 30. Sep 2007 16:19

LOL somit habe ich von Anfang an recht gehabt. :mrgreen:
Die antirobot_pic.php kommt von Smartors "Anti Robotic Registration Flood" und das man irgendwo einstellen kann welcher nun genutzt werden soll, hab ich sogar 2 mal erwähnt. ;)

Meine Dateien hätten dir übrigens nichts genutzt. Zum einem sind phpBB plus Dateien (gerade in der Registrierung) so stark verändert, das sie mit einem Vanilla nicht mehr vergleichbar sind. Und zum anderem sind meine Boards teilweise so stark verändert das sie mit einem phpBB nicht mehr viel gemeinsam haben. :lol:
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon dtc » 1. Okt 2007 01:19

Naja, unter Smartors VC konnte ich mir nix drunter vorstellen - zumal das Mod auch nicht in der Mod/Hack-Liste des Boards aufgeführt ist.
Hättste gleich was von Anti-Robot gesagt, hät ichs bestimmt gleich gefunden ;)

Aber nun ists ja geschafft :D

Und das komische ist, jetzt funktionieren auf einmal auch die Hintergrundbilder ^^

Kann dann also als erledigt abgehakt werden :)

Und danke für die Tips !
dtc
 
Beiträge: 5
Registriert: 27. Sep 2007 21:06


Zurück zu Advanced Visual Confirmation



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 4 Gäste

cron