Author Topic: Session - user_location & session_location  (Read 2924 times)

0 Members and 1 Guest are viewing this topic.

Offline shadowhunter

  • Full Member
  • ***
  • Posts: 114
    • View Profile
    • Fotogalerie & Fotocommunity scluzern.com
Session - user_location & session_location
« on: March 30, 2008, 06:27:25 PM »
Hallo!

Ich habe ein paar Fragen bezüglich dem "user_location" (in DB 4images_users) bzw. "session_location" (in DB 4images_sessions):

- Ist dies so, dass die "user_location" z.B. im APC unter "Wer ist Online?" einen Aktualisierungsintervall hat, welcher nicht sehr oft erfolgt.
Genauer gesagt heisst das, dass die "user_location" nicht immer auf dem aktuellsten Ort des Besuchers/Mitgliedes ist. Wo kann man die Update-Rate einstellen (schneller machen)?

- Ich habe zudem festgestellt, dass die "user_location" nicht sehr genau (detailliert) ist.
Das heisst, dass z.B. im ACP nur immer search.php?show_result=1 anstatt search.php?show_result=1&search_keywords=XXX steht.
U.a. diese Erweiterung ist sicherlich für alle eine gute Ergänzung.
Oder auch auf etlichen Seiten wird z.B. die ...?action=XXX oder ...?template=XXX oder postcards.php?image_id=XXX oder member.php?action=showprofile&user_id=XXX nicht (immer) erfasst wird. Konkret gesagt: es werden nur sporadisch Seiten in "user_location" aufgeführt.
Zudem finde ich schade, dass in der "user_location" nicht auch die gewählte Sprache vom Besucher ersichtlich ist (z.B. ...?l=english oder ...?l=deutsch).

- Wie müsste es machen, wenn man weitere neue Variable (seite.php?XXXX=zzz) in "user_location" erfassen möchte?

- Wird die "user_location" nur an dieser Stelle aktualisiert bzw. erstellt? Wie oft wird diese Funktion aufgerufen bei einem Besucher?
includes/sessions.php
Code: [Select]
  function get_user_location() {
    global $self_url;
    return (defined("IN_CP")) ? "Control Panel" : preg_replace(array("/([?|&])action=[^?|&]*/", "/([?|&])mode=[^?|&]*/", "/([?|&])phpinfo=[^?|&]*/", "/([?|&])printstats=[^?|&]*/", "/[?|&]".URL_ID."=[^?|&]*/", "/[?|&]l=[^?|&]*/", "/[&?]+$/"), array("", "", "", "", "", "", ""), addslashes($self_url));
  }

//............................

function start_session($user_id = GUEST, $login_process = 0) {
    global $site_db;

//.......................

}

Es ist mir klar, wenn eine Seite in "user_location" erfasst werden möchte, dass man wie folgt die Verlinkung machen müsste:
Code: [Select]
<a href =\"".$site_sess->url(ROOT_PATH."xxxxxx.php?yyyy=zzzz)."\">blabla</a>
Wie könnte man die "user_location" verbessern und detaillierter machen?
Bin euch dankbar für die Hilfe.
Gruss Jones


4images Version: 1.7.6
Php Version: 4.4.7
System: Linux

Offline shadowhunter

  • Full Member
  • ***
  • Posts: 114
    • View Profile
    • Fotogalerie & Fotocommunity scluzern.com
Re: Session - user_location & session_location
« Reply #1 on: March 30, 2008, 11:25:44 PM »
Hallo!

Ich habe noch etwas herausgefunden, was das beschrieben Problem mit der Such-Funktion betrifft:

global.php
Suche:
Code: [Select]
  if (isset($show_result) && $show_result) {
    $self_url .= preg_match("/\?/", $self_url) ? "&amp;" : "?";
    $self_url .= "show_result=1";
  }

Ersetze:
Code: [Select]
  if (isset($show_result) && $show_result) {
    $self_url .= preg_match("/\?/", $self_url) ? "&amp;" : "?";
    $self_url .= "show_result=1";
  }
  if (isset($search_keywords) && $search_keywords) {
    $self_url .= preg_match("/\?/", $self_url) ? "&amp;" : "?";
    $self_url .= "search_keywords=".$search_keywords;
  }
  elseif (isset($search_user) && $search_user) {
    $self_url .= preg_match("/\?/", $self_url) ? "&amp;" : "?";
    $self_url .= "search_user=".$search_user;
  }
  elseif (isset($search_new_images) && $search_new_images) {
    $self_url .= preg_match("/\?/", $self_url) ? "&amp;" : "?";
    $self_url .= "search_new_images=".$search_new_images;
  } 

Kann man dies so machen? Ist dabei alles korrekt? Ist dies ein Bug oder warum war dies bis jetzt nicht integriert?
Ich habe es getestet und würde funktionieren. Jetzt werden die gesuchten Keywords angezeigt ;)


Warum wird beim folgenden Code die Variable $action durch "" ersetzt? Hat dies eine spezielle Bedeutung oder ist es sonst ein Risiko für die Sicherheit??
includes/sessions.php
Code: [Select]
return (defined("IN_CP")) ? "Control Panel" : preg_replace(array("/([?|&])action=[^?|&]*/", "/([?|&])mode=[^?|&]*/", "/([?|&])phpinfo=[^?|&]*/", "/([?|&])printstats=[^?|&]*/", "/[?|&]".URL_ID."=[^?|&]*/", "/[?|&]l=[^?|&]*/", "/[&?]+$/"), array("", "", "", "", "", "", ""), addslashes($self_url));

Wie macht man aber das mit dem Rest von meinem vorherigen Post?

Danke!
Gruss Jones

Offline shadowhunter

  • Full Member
  • ***
  • Posts: 114
    • View Profile
    • Fotogalerie & Fotocommunity scluzern.com
sessionid & session_location
« Reply #2 on: May 02, 2008, 04:00:26 PM »
Hallo!

Habe in der global.php vieles geändert (siehe vorherigen Post), sodass man sieht wo genau sich der Besucher aufhaltet, was er gerade sucht und welche Sprache er benutzt.
Beeinträchtigt dies die Sicherheit nicht?? Habe zusätzlich zur Sicherheit noch "htmlspecialchars(...)" hinzugefügt.

Die Änderung in global.php sind wie folgt gemacht:
Code: [Select]
  if (isset($search_keywords) && $search_keywords) {
    $self_url .= preg_match("/\?/", $self_url) ? "&amp;" : "?";
    $self_url .= "search_keywords=".htmlspecialchars($search_keywords);
  }



Ich habe noch ein anderes Problem bemerkt:
Manchmal wird beim Besucher 2x die sessionid an der URL angehängt.
Dieses passiert auch bei dem Google-Bot!
Wie kann man dies ändern/korrigieren, dass nur eine sessionid 'gebraucht' wird?
Wie könnte man die Sessionid für die Bots ausschalten (die sessionid nicht gespeichern bei Google etc)?

Vielen Dank im Voraus. Gruss Jones