Seite 1 von 2

Suchergebnisseiten 2, 3 ... lassen sich nicht anzeigen

Verfasst: 14.06.2005 19:49
von BZebra
Hallo,

wir haben in unserem Forum ein Problem mit den Suchergebnisseiten, das auch hier im Forum auftritt.

Wenn ich als nicht eingeloggter Gast eine Suche mit mehreren Suchergebnisseiten habe, kann ich mir lediglich die erste Seite anzeigen lassen. Bei allen weiteren Seiten wird die Fehlermeldung Keine Beiträge entsprechen deinen Kriterien ausgegeben.

Kann man das irgendwie beheben? Bei uns können Gäste posten und wir möchten natürlich, daß sie bevor sie etwas schreiben auch ordentlich gesucht haben.

Danke,
BZebra

Verfasst: 15.06.2005 08:39
von TK
Das Problem ist mir auch bekannt und scheint nur bei Gästen aufzutreten, die ohne Cookies in einem Board surfen, in dem die SID bei Gästen ausgeblendet wird...

Das Problem: Ohne SID "weiß" das Board nicht mehr, auf was für eine Suchanfrage sich der Wunsch des Gastes bezieht, die zweite (dritte etc.) Ergebnisseite angezeigt zu bekommen...

Lösungsansatz: das Anhängen der SID temporär erlauben, wenn die Suche benutzt wird... (sollte nur gemacht werden, wenn search.php in der robots.txt explizit exkludiert ist -> da ansonsten Gefahr von Spidertraps)

Umgesetzt habe ich diesen Lösungsansatz bei mir aufgrund persönlichen Zeitmangels und fehlender Dringlichkeit noch nicht ;), sollte aber funktionieren (das Prinzip wäre dem schon bekannten Problem ähnlich, wenn sich Gäste ohne Cookies registrieren wollen und kein Code angezeigt bekommen).

Verfasst: 15.06.2005 08:59
von TK
Also, nach dem Prinzip aufgebaut müsste es dann in der sessions.php an der entsprechenden Stelle so aussehen, damit die SID auch bei search.php (also wenn session_page gleich -2) angehängt wird:

Code: Alles auswählen

if ( $userdata['session_user_id'] != ANONYMOUS || isset($HTTP_GET_VARS['agreed']) || $userdata['session_page'] == -2 ){ 
   $SID = 'sid=' . $session_id; 
} else { 
   $SID = ''; 
}
Soviel zur Behauptung, dass es zu keinen Problemen kommt, wenn man Gästen die SID vorenthält... ;)


Nachtrag: Funktioniert bestens so ;)

Verfasst: 15.06.2005 10:33
von larsneo
Soviel zur Behauptung, dass es zu keinen Problemen kommt, wenn man Gästen die SID vorenthält...
wieso - jetzt stimmt's doch wieder ;-)
thx, werde das short url thema entsprechend anpassen...

Verfasst: 15.06.2005 19:18
von BZebra
TK hat geschrieben:Also, nach dem Prinzip aufgebaut müsste es dann in der sessions.php an der entsprechenden Stelle so aussehen, damit die SID auch bei search.php (also wenn session_page gleich -2) angehängt wird:

Code: Alles auswählen

if ( $userdata['session_user_id'] != ANONYMOUS || isset($HTTP_GET_VARS['agreed']) || $userdata['session_page'] == -2 ){ 
   $SID = 'sid=' . $session_id; 
} else { 
   $SID = ''; 
}
Hi,

hab das eben gemacht, Sessions werden jetzt wieder angehängt. Problem besteht aber weiterhin. Hier gehts zum Corpus Delicti und hier zu meiner sessions.php(.txt). Meine Datenschutzeinstellungen sind sogar auf "alle Cookies annhemen" runtergestellt. Irgendwelche Ideen?

Danke,
BZebra

p.s. Wenn ich bei TK im Forum bin und alle Cookies gesperrt habe, dann gehts üpbrigens auch nicht.

Verfasst: 15.06.2005 19:36
von TK
Hab gerade deine Suchfunktion überprüft...

Bei einem Testforum von mir funktioniert meine Lösung einwandfrei, aber bei deinem Forum besteht das Problem, dass sich die SID beim Weiterblättern ändert, was eigentlich nicht sein dürfte! (und dadurch kann er auch nicht mehr die Folgeseiten der Suche anzeigen, weil die SID nicht mehr stimmt....)

Eigentlich darf sich die SID, sobald einmal angehängt, nicht mehr ändern; warum sie das aber bei dir tut (die SID also nicht übernommen werden kann, sondern jedesmal eine neue generiert wird), kann ich jetzt allerdings leider auf die Schnelle nicht erkennen... :roll:

Was für MODs hast du installiert?

Verfasst: 15.06.2005 19:39
von TK
BZebra hat geschrieben:p.s. Wenn ich bei TK im Forum bin und alle Cookies gesperrt habe, dann gehts üpbrigens auch nicht.
Ich hatte grad eben geschrieben, dass es in einem Testforum funktioniert; in dem Forum, was bei mir im Profil verlinkt ist, bin ich noch nicht dazu gekommen, es einzubauen... Warte mal 10 Minuten, und versuch es dann nochmal, ich bau es auch in dieses Forum mal eben ein...

Update: Es ist jetzt auch in dem Forum www.Seelenkummer.de eingebaut: Du hast eben gesehen, dass es bis eben nicht bei mir funktioneirte... Nun solltest du sehen, dass es jetzt nach meiner Änderung funktioniert, oder? (Bei mir tut es das zumindest...)

Verfasst: 15.06.2005 19:58
von TK
Bei dir scheint das ganze Board generell (nicht nur auf der Suchen-Seite) ohne Cookies überhaupt nicht zu funktionieren...

Habe mir gerade einen Testaccount bei dir erstellt, und den Aktivierungslink auch bestätigt, aber ich kann mich ohne Cookies trotzdem gar nicht erst bei dir einloggen....? (mit Cookies funzt es)

Hattest du eventuell vorher eine ganz andere Lösung als

Code: Alles auswählen

if ( $userdata['session_user_id'] != ANONYMOUS){ 
   $SID = 'sid=' . $session_id; 
} else { 
   $SID = ''; 
}
eingebaut, um die SID bei Gästen zu unterdrücken? (Es gibt verschiedene Ansätze, die SID zu unterdrücken, nicht nur die oben genannte). Falls ja, müsstest du vielleicht erst die andere Art der SID-Unterdrückung wieder ausbauen und durch die hier Beschriebene ersetzen...

Verfasst: 15.06.2005 20:20
von BZebra
Ja, jetzt funktioniert es in Deinem verlinkten Forum.

Muss mal schauen was ich da gemacht habe und wahrscheinlich die SID-Unterdrückung wieder rückgängig machen.

Ist richtig, bei uns kann man sich nicht ohne Cookies einloggen. Bekomme ständig Anfragen per Email von Leuten, denen ich das erklären muss. Nervig! :roll:

Werd mich mal auf die Suche machen. War entweder was von Larsneo oder able2know, glaub ich.

Danke,
BZebra

Verfasst: 15.06.2005 20:26
von TK
BZebra hat geschrieben:und hier zu meiner sessions.php(.txt).
Ich habe in deiner sessions.php etwas "Verdächtiges" gefunden, was es in meiner nicht gibt: In der function session_pagestart hast du anscheinend irgendwann einmal nachträglich

Code: Alles auswählen

	if ( NO_SID )
{
$sql = "SELECT *
FROM " . USERS_TABLE . "
WHERE user_id = " . ANONYMOUS;
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not get anonymous user data', '', __LINE__, __FILE__, $sql);
}
$userdata = $db->sql_fetchrow($result);
$userdata['session_logged_in'] = false;
$SID = '';
return $userdata;
}
eingebaut (was es bei mir nicht gibt). Ist mir gleich aufgefallen, dass es wohl nachträglich eingebaut wurde, sieht man nämlich daran, dass die Einschübe am Zeilenanfang fehlen...
Wann und weshalb / in welchem Zusammenhang hast du das eingebaut?
An dieser Stelle wird nämlich nachträglich die SID wieder zerstört (durch $SID = '';), falls "if ( NO_SID )" (was ist das und wo wird NO_SID gesetzt? - evtl. in der functions.php?).


BZebra hat geschrieben:Muss mal schauen was ich da gemacht habe und wahrscheinlich die SID-Unterdrückung wieder rückgängig machen.
Mach das mal bitte... Vielleicht löst du damit ja auch gleichzeitig das Problem, dass sich niemand ohne Cookies bei dir einloggen kann...
Auf jeden Fall läuft in deinem Board mit den SIDs (zumindest, wenn sie in URLs angehängt werden sollen) irgendwas gewaltig schief...
BZebra hat geschrieben:Werd mich mal auf die Suche machen. War entweder was von Larsneo oder able2know, glaub ich.
Von Larsneo ist es wohl nicht, da kenne ich von ihm nur die hier beschriebene (kurze) Lösung, die aber anscheinend besser ist, da die SID korrekt übergeben wird, falls sie in den Ausnahmebedingungen angehängt wird.

Bau also die andere Art der SID-Unterdrückung wieder komplett aus (evtl. auch in der functions.php, ich weiß es nicht, was da alles betroffen ist, ich kenne sie ja nicht), und dann die Lösung von hier ein...

P.S.: Meinen Testaccount in deinem Board kannste wieder löschen... ;)


P.P.S.: Das Problem mit der Anzeige der weiteren Such-Ergebnisseiten bestand aber auch unabhängig von deinen Problemen mit der SID/den Cookies; insofern ist meine hier beschriebene Änderung trotzdem bei allen Boards durchzuführen, wo die SID bei Gästen auf die hier beschriebene Art ausgeblendet wird...