Error doing DB query userdata row fetch

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
schmidtedv
Beiträge: 607
Registriert: So 13.Feb, 2005 10:46
Wohnort: St. Blasien (seit 01.06)
Kontaktdaten:

Error doing DB query userdata row fetch

Beitrag von schmidtedv »

Bin ein bisserl überfragt, was diesen Fehler angeht, da er offenbar nur Firefox-Nutzer betrifft im Forum. Daraufhin habe ich zur Sicherheit heute mal alle session-keys und sessions gelöscht, könnte das schon geholfen haben, oder gibt's da ein generelles Firefox-Problem?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Rettet den Wald, esst mehr Specht!

Forum [ sofern im Beitrag darauf verwiesen :-) ]
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Das hat nichts mit dem eingesetzten Browser zu tun, denn der bekommt von den Queries nichts mit, bzw. beeinflusst auch in keinster Weise die Datenbank.
Hier scheint es einfach nur eine Überschneidung der ID's in der Session_Keys-Tabelle zu geben.
Wenn nach dem Leeren der Sessions der Fehler weg ist, ist das auch schon alles gewesen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
schmidtedv
Beiträge: 607
Registriert: So 13.Feb, 2005 10:46
Wohnort: St. Blasien (seit 01.06)
Kontaktdaten:

Beitrag von schmidtedv »

Überschneidung der ID's heißt, wenn 2 session_keys auf dieselbe ID verweisen? oder wie stelle ich mir das vor?

Komisch dann aber, das ein Benutzer mit firefox nicht reinkommt aber mit dem IE schon...oder wird hier Browserabhängig automatisch eine neue Session-ID erstellt bzw. mittels neuem Cookie, so das das "fehlerhafte" im firefox nicht damit zusammenhängt?

Mann, je länger man sich mit all den schönen Websachen beschäftigt, desto mehr wünscht man sich den guten alten Schreibblock zurück....habe heut' morgen noch 'n Fehler in der wordlist gehabt...naja, nicht weltbewegend schlimm, aber damit war das gesamte Web des Kunden stillgelegt....wieder was gelernt....

PS: Ich habe zudem mal mein phpBB Projekt auf meinem Testserver komplett in UTF-8 umgewandelt...also Header, Sprachdateien, Mailtemplates, DB, etc. Etwas mühselig aber nun funktioniert es :-)

Ein, zwei Fragen hätte ich aber hierzu, wenn ich's hier noch mit anfügen darf...

Ab hier bitte den Beitrag in einem neuen Topic einfügen. Danke - OXPUS

Es gibt 2 Dateien (Codestellen), die, so nehme ich an, direkt die Eingaben des Benutzers nehmen, also nicht UTF-8-abhängig reagieren.

In der functions_validate.php git es diese Stelle:

Code: Alles auswählen

function validate_email($email)
{
	global $db, $lang;

	if ($email != '') {
		if (preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-äöü]+\.([a-z0-9\-äöü]+\.)*?[a-z]+$/is', $email)) {
			$sql = "SELECT ban_email
				FROM " . BANLIST_TABLE;
			if ($result = $db->sql_query($sql)) {
				if ($row = $db->sql_fetchrow($result)) {
					do {
						$match_email = str_replace('*', '.*?', $row['ban_email']);
						if (preg_match('/^' . $match_email . '$/is', $email)) {
							$db->sql_freeresult($result);
							return array('error' => true, 'error_msg' => $lang['Email_banned']);
						}
					} while ($row = $db->sql_fetchrow($result));
				}
			}
			$db->sql_freeresult($result);

			$sql = "SELECT user_email
				FROM " . USERS_TABLE . "
				WHERE user_email = '" . str_replace("\'", "''", $email) . "'";
			if (!($result = $db->sql_query($sql))) {
				message_die(GENERAL_ERROR, "Couldn't obtain user email information.", "", __LINE__, __FILE__, $sql);
			}

			if ($row = $db->sql_fetchrow($result)) {
				return array('error' => true, 'error_msg' => $lang['Email_taken']);
			}
			$db->sql_freeresult($result);

			return array('error' => false, 'error_msg' => '');
		}
	}

	return array('error' => true, 'error_msg' => $lang['Email_invalid']);
}
Ich habe äöü mal in utf8 umgewandelt und getestet und es scheint nicht zu gehen, also wieder zurück in äöü und es scheint richtig zu sein dies so zu belassen....?

Zum Zweiten in der usercp_register.php hab' ich unseren (mit dir zusammen erarbeiteten :-) ) code drin:

Code: Alles auswählen

	if ($board_config['force_realname']) {
		if (!empty($HTTP_POST_VARS['username'])) {
			if (!preg_match('/[A-Z]/', $username{0})) {
				$error = true;
				$error_msg = $lang['Wrong_username_ABC'];
			}

			if (!preg_match('/^[a-zäöüßÄÖÜ -]+$/i', $username)) {
				$error = true;
				$error_msg = $lang['Wrong_username_123'];
			}
		}

		if (!empty($HTTP_POST_VARS['username_reg'])) {
			if (!preg_match('/[A-Z]/', $username_reg{0})) {
				$error = true;
				$error_msg = $lang['Wrong_username_reg_ABC'];
			}

			if (!preg_match('/^[a-zäöüßÄÖÜ -]+$/i', $username_reg)) {
				$error = true;
				$error_msg = $lang['Wrong_username_reg_123'];
			}
		}
	$username = $username . ' ' . $username_reg;
	}
...der auch nicht umgewandelt werden darf, sonst gehts nicht...liegt das am preg_match ($HTTP_POST_VARS['username']), bzw. greift das direkt auf die eingegebenen zeichen zu und daher muss es so bleiben?

In der posting_attachments.php hingegen mußte folgende Stelle in UTF-8 umgewandelt werden:

Code: Alles auswählen

				if (!$cryptic) {
					$this->attach_filename = html_entity_decode(trim(stripslashes($this->attach_filename)));
					$this->attach_filename = delete_extension($this->attach_filename);
					$this->attach_filename = str_replace(array(' ', '-'), array('_', '_'), $this->attach_filename);
					$this->attach_filename = str_replace('__', '_', $this->attach_filename);
					$this->attach_filename = str_replace(array(',', '.', '!', '?', 'ü', 'Ü', 'ö', 'Ö', 'ä', 'Ä', ';', ':', '@', "'", '"', '&'), array('', '', '', '', 'ue', 'ue', 'oe', 'oe', 'ae', 'ae', '', '', '', '', '', 'and'), $this->attach_filename);
					$this->attach_filename = str_replace(array('$', 'ß', '>', '<', '§', '%', '=', '/', '(', ')', '#', '*', '+', "\\", '{', '}', '[', ']'), array('dollar', 'ss', 'greater', 'lower', 'paragraph', 'percent', 'equal', '', '', '', '', '', '', '', '', '', '', ''), $this->attach_filename);
					$this->attach_filename = preg_replace("/([\xC2\xC3])([\x80-\xBF])/e", "chr(ord('\\1')<<6&0xC0|ord('\\2')&0x3F)", $this->attach_filename);
					$this->attach_filename = rawurlencode($this->attach_filename);
					$this->attach_filename = preg_replace("/(%[0-9A-F]{1,2})/i", '', $this->attach_filename);
					$this->attach_filename = trim($this->attach_filename);

					$new_filename = $this->attach_filename;

					if (!$new_filename) {
						$u_id = (intval($userdata['user_id']) == ANONYMOUS) ? 0 : intval($userdata['user_id']);
						$new_filename = $u_id . '_' . $this->filetime . '.' . $this->extension;
					}

					do {
						$this->attach_filename = $new_filename . '_' . substr(rand(), 0, 3) . '.' . $this->extension;
					} while (physical_filename_already_stored($this->attach_filename));
Dabei fiel mir auf, das, sofern ich eine Datei mit Umlaut als erstem Buchstaben hochladen möchte, er sowohl dem Namen als auch der gespeicherten Datei den Umlaut vorne "klaut"....egal ob ascii oder utf8....gibt's da einen Fix für? Sollte ja nicht so sein, wenn man z.B. mal Ärgernis_Schwiegermutter.txt hochladen möchte :-)


Zu guter Letzt noch die Frage, ob ich search_stopwords.txt und search_synonyms.txt dann auch noch in utf8 umwandeln müßte...?

Vorab schon mal danke für jedweden Hinweis :-)
Zuletzt geändert von schmidtedv am Mo 14.Mai, 2007 11:20, insgesamt 1-mal geändert.
Rettet den Wald, esst mehr Specht!

Forum [ sofern im Beitrag darauf verwiesen :-) ]
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Überschneidung der ID's heißt, wenn 2 session_keys auf dieselbe ID verweisen? oder wie stelle ich mir das vor?
Genau so.
Komisch dann aber, das ein Benutzer mit firefox nicht reinkommt aber mit dem IE schon...oder wird hier Browserabhängig automatisch eine neue Session-ID erstellt bzw. mittels neuem Cookie, so das das "fehlerhafte" im firefox nicht damit zusammenhängt?
Richtig.
Jeder Browser erzeugt eine eigene Session im Board, so daß ggf. auch "zufälligerweise" der IE ging, der Firefox aber nicht.
Hätte aber auch genau so gut umgekehrt sein können.

Und für die Zeichensatzänderung bitte ein neues Topic eröffnen.
Das hat ja nichts mit der Session_Tabelle zu tun ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
schmidtedv
Beiträge: 607
Registriert: So 13.Feb, 2005 10:46
Wohnort: St. Blasien (seit 01.06)
Kontaktdaten:

Beitrag von schmidtedv »

k, thx
Rettet den Wald, esst mehr Specht!

Forum [ sofern im Beitrag darauf verwiesen :-) ]
Antworten