Seite 1 von 2
Suche nach Beiträgen von Usern mit Namen mit einem Buchstabe
Verfasst: 25.01.2006 14:26
von honk_alert
Die Suche ergibt dann keine Ergebnisse, obwohl die Leute natürlich auch was geschrieben haben...
mfg
honk
Verfasst: 03.02.2006 17:06
von honk_alert
hallo?

Verfasst: 03.02.2006 22:31
von honk_alert
weiß hier denn gar keiner was dazu?
Verfasst: 03.02.2006 22:36
von hagily
Hi!
Beachten
Folgende Tabellen bei dir weden leer sein:
_search_results
_search_wordlist
_search_wordmatch
Deshalb installierst du diesen mod:
http://phpbbhacks.com/download/434
Der stellt diese Tabellen wieder her.
Felix
Verfasst: 03.02.2006 22:38
von honk_alert
Kann man diese Tabellen auch in phpmyadmin auffüllen? Und was hat das mit meinem Problem zu tun?
Im übrigen sind die nicht leer...hab grad nachgeschaut...
Verfasst: 03.02.2006 22:57
von cYbercOsmOnauT
Das Problem ist wegen folgender Zeilen im
search.php (Normal Zeilen 200-203)
Code: Alles auswählen
if (preg_match('#^[\*%]+$#', trim($search_author)) || preg_match('#^[^\*]{1,2}$#', str_replace(array('*', '%'), '', trim($search_author))))
{
$search_author = '';
}
Der zweite Teil dieser If-Abfrage prüft, ob die Eingabe des Usernamens 1 oder 2 Zeichen hat, wenn ja, wird der Username (ohne * gezählt) auf '' (also nichts) gesetzt. Dies dient wohl dazu das man z.B. durch eine Suche nach *e* als Usernamen die Performance des Boards in die Knie zwingt weil "unendlich viele" Results herauskommen.
Gruß,
Tekin
Verfasst: 03.02.2006 23:06
von honk_alert
danke für die antwort! wie muss ich das jetzt modifizieren und viel wichtiger, würdest du sagen, dass ich es modifizieren sollte? Wenn nicht, kann ich dann Usernamen mit 1-2 Buchstaben deaktivieren irgendwo?
Verfasst: 04.02.2006 00:00
von cYbercOsmOnauT
Wieviele User mit solchen superkurzen Nicks hast Du denn? Wenn es nur einige sind, ändere ihren Nick zu längeren und schreib ihnen eine EMail.
Im
includes/functions_validate.php führe folgende Änderung durch:
SUCHE NACH
DARUNTER FÜGE EIN
Code: Alles auswählen
if ( strlen($username) < 3 )
{
return array('error' => true, 'error_msg' => $lang['Username_disallowed']);
}
Wenn nun einer einen Usernamen registrieren will, der weniger als 3 Zeichen beinhaltet, bekommt er die Fehlermeldung, dass dieser Username verboten ist.
Grüße,
Tekin
Einen kleinen Hinweis kann ich mir nicht verkneifen (man möge mir verzeihen):
Die Suche nach Usernamen hat nichts mit den Tabellen
phpbb_search_results phpbb_search_wordlist phpbb_search_wordmatch zu tun. Den Beweis kann jeder sehen, der sich die search.php einmal ansieht.
Zuerst
Code: Alles auswählen
$sql = "SELECT user_id
FROM " . USERS_TABLE . "
WHERE username LIKE '" . str_replace("\'", "''", $search_author) . "'";
Womit man die user_id's sammelt, die zu dem gesuchten Usernamen (mit Wildcards) passen.
Dann
Code: Alles auswählen
$sql = "SELECT post_id
FROM " . POSTS_TABLE . "
WHERE poster_id IN ($matching_userids)";
die Posting_id der Postings die zu den gefundenen user_id's (also Usern) gehören. Am Ende liest das Script "nur noch" entweder die Topic-Titel oder halt einen Teil des Postingtextes aus der DB und gibt diesen aus.
Finito
Verfasst: 04.02.2006 00:10
von honk_alert
Ok,
das ist die eine Möglichkeit - aber wie kann ich die Suche auch für Leute mit einem Benutzernamen zulassen? Wo muss ich dann was ändern? Danke schon mal für deine Mühe!
Verfasst: 04.02.2006 00:15
von cYbercOsmOnauT
Wieviele User mit so kurzen Nicks hast Du denn?
ÄNDERE
Code: Alles auswählen
if (preg_match('#^[\*%]+$#', trim($search_author)) || preg_match('#^[^\*]{1,2}$#', str_replace(array('*', '%'), '', trim($search_author))))
einfach in
Ob Du Dir (und Deinem Board) damit einen Gefallen tust, wage ich zu bezweifeln.
Tekin