#1796 closed Bug/Fehler (invalid)
Text für Festlegung der Speicherzeit in whosonline
| Reported by: | noRiddle | Owned by: | somebody |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Admin | Version: | 2.0.5.0 |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description
Im Beschreibungstext der Konfig.-Einstellung WHOS_ONLINE_TIME_LAST_CLICK, WHOS_ONLINE_TIME_LAST_CLICK_DESC in /lang/SPRACHE/admin/configuration.php, wird gesagt "(min. Wert: 900)".
Da ist nicht (mehr) korrekt, da im Code /inc/xtc_update_whos_online.inc.php der Default Wert vor der Definition als Wert der genannten Konstanten geschieht und somit der Default-Wert überschrieben wird:
$time_last_click = 900;
if (defined('WHOS_ONLINE_TIME_LAST_CLICK')) {
$time_last_click = (int)WHOS_ONLINE_TIME_LAST_CLICK;
}
Es gibt auch keine Einschränkung à la
if(WHOS_ONLINE_TIME_LAST_CLICK < $time_last_click) {...
Wenn der Text eine Empfehlung sein soll sollte man die Erklärung mitliefern.
Gruß,
noRiddle
Attachments (0)
Change History (6)
comment:3 by , 6 years ago
| Milestone: | → modified-shop-2.0.5.1 |
|---|---|
| Version: | → 2.0.5.0 |
comment:4 by , 6 years ago
...und wo wir gerade dabei sind, könnte man strstr auch noch gegen das schnellere strpos ersetzen:
Zitat PHP-Manual:
"Wenn Sie nur herausfinden möchten, ob ein bestimmter needle innerhalb von haystack vorkommt, verwenden Sie stattdessen die schnellere und weniger speicherintensive Funktion strpos()."
Also anstatt
if (strstr($botID, $Robots[$i]) || strstr($botID2, $Robots[$i])) {
das
if (strpos($botID, $Robots[$i]) !== false || strpos($botID2, $Robots[$i]) !== false) {
Gruß,
noRiddle
comment:5 by , 6 years ago
| Milestone: | modified-shop-2.0.5.1 |
|---|---|
| Resolution: | → invalid |
| Status: | new → closed |
Hast du den Wert schon mal auf unter 900 gesetzt ? Wird nicht gehen, denn das ist in der configuration_limits.php definiert.
$time_last_click = 900;
if (defined('WHOS_ONLINE_TIME_LAST_CLICK')) {
$time_last_click = (int)WHOS_ONLINE_TIME_LAST_CLICK;
}
Dieser Code Block ist nur ein Fallback falls in der DB der Eintrag noch nicht existiert.
comment:6 by , 6 years ago
Ah, ich sehe du hast tieferen Einblick in die Code-Zusammenhänge als meine Wenigkeit.
Allerdings frage ich mich dann warum es deisen Min.-Wert gibt. 15 Min. ist lang.
Ich hatte letzt bei einem User einen Angriff in Richtung DDoS, wurde als Suchmaschine "identifiziert", und der User hätte gerne bei whos_online gesehen wer sich da rumtreibt. Wenn die Einträge allerdings 15 Min. drinbleiben ist das nicht besonders informativ. Warum soll der Shop-Betreiber das nicht runterstellen können (z.B. bis auf 1 Min.) ?
- Was hälst du von meinen anderen Vorschlägen hier ?
- Es gibt ein neues Problem bzgl. whos_online: "Deadlock found when trying to get lock; try restarting transaction", siehe dazu bitte hier: 1213 - Deadlock found...
Soll ich dazu ein neues Ticket aufmachen ?
Gruß,
noRiddle
comment:7 by , 6 years ago
Für einen DDoS Angriff ist eine whos online ungeeignet. Das ist Serversache und nicht Shop.
Für einen Shopbetreiber ist es interessanter zu sehen, wer in den letzten 15min online war.
zu 1. das haben wir bereits umgesetzt.
zu 2. da darfst du gerne ein Ticket erstellen

Ich hätte noch eine Ergänzung zu machen die dann allerdings eine (imho sinnvolle) Erweiterung wäre:
In /inc/xtc_check_agent.inc.php gibt's 'ne hard-codierte Liste mit Suchmaschinen-Agents, die Funktion gibt allerdings einen Boolean, 1 oder 0 zurück.
Es wäre jedoch gut wenn man den Namen der Maschine im Backend bei whosonline sehen könnte, anstelle des unspezifischen [Suchmaschine].
Dafür könnte man der Funktion schlicht einen Parameter geben der den Default false hat, wenn er jedoch true ist anstelle des Booleans den Namen des Agents ausgibt.
Dann könnte man in der /inc/xtc_update_whos_online.inc.php mittels xtc_check_agent(true) den Namen des Agents holen.
Beispiel:
function xtc_check_agent($name = false) { //new parameter, noRiddle .... for ($i=0, $n=count($Robots); $i<$n; $i++) { if (strstr($botID, $Robots[$i]) || strstr($botID2, $Robots[$i])) { if($name === true) { return $Robots[$i]; } //new if-clause, noRiddle return 1; } } .... }und in xtc_update_whos_online.inc.php
$crawler = xtc_check_agent(true); //added new parameter, noRiddle if ($crawler !== 0) { $wo_full_name = '['.TEXT_SEARCH_ENGINE_AGENT.'] ('.$crawler.')'; //added crawler name, noRiddle } else { $wo_full_name = TEXT_GUEST; }Gruß,
noRiddle