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
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);