php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.06.2008, 15:01  
Benutzer
 
Registriert seit: 25.03.2004
Beiträge: 63
kanti
Standard session_set_save_handler- falsche Werte in Datei

Hallo,

ich möchte mittels Session Werte in eine Datei schreiben. Klappt so weit auch.

Mehrer Werte sind Zähler - die pro Aufruf hochgezählt werden.

Nun ist es so das der Wert per Ausgabe stimmt, aber in der Datei ist der Wert immer 1+.

Hier mal das Skript

In der Index-Datei wird die Session inizialisiert:
PHP-Code:
$oSniffer = new ClientDaten ();

//session datei inizialiisren
session_save_path($_SERVER["DOCUMENT_ROOT"]."/session/");

session_set_save_handler(array($oSniffer,"open"), array($oSniffer,"close"), array($oSniffer,"read"), array($oSniffer,"write"), array($oSniffer,"destroy"), array($oSniffer,"gc"));
//session starten
session_start(); 
Dann rufe ich die Methoden/functionen zum Zählen auf

PHP-Code:

      
          $oSniffer
->fGetHit ();
          
$oSniffer->fGetHitproSite (); 
Und ie Klasse sieht wie folgt aus

PHP-Code:
class ClientDaten
{
  var 
$IP;
  var 
$Client;
  var 
$Host;
 

function 
clientdaten ()
{
    
$this->fGetIp();
    
$this->fGetClient();
    
$this->fGetHost ();
    
}

######################
öffnet das speichern der se
#########################
function open($save_path$session_name)
{
  global 
$sess_save_path;
 
  
$sess_save_path $save_path;
  return(
true);
}
#######################
#schließt das speichern der session
##########################
function close()
{
  
  return(
true);
}
#######################
#liest die erstellt session-datei
################################################
function read($id)
{
  global 
$sess_save_path;
  
  
$sess_file "$sess_save_path/sess_$id";
  return (string) @
file_get_contents($sess_file);
}
###############################################
#schreibt die session datei
################
function write($id$sess_data)
{
  global 
$sess_save_path;
  
  
  
$sess_file "$sess_save_path/sess_$id";
  if (
$fp = @fopen($sess_file"w")) {
    
$return fwrite($fp$sess_data);
    
    
fclose($fp);
    return 
$return;
  } else {
    return(
false);
  }
}
#########################################
#zerstört die sessiondatei
##############################################
function destroy($id)
{
  global 
$sess_save_path;
  
  
$sess_file "$sess_save_path/sess_$id";
  return(@
unlink($sess_file));
}
###########################################
#setzt max time des lebens
###############################################
function gc($maxlifetime)
{
  global 
$sess_save_path;
  
  foreach (
glob("$sess_save_path/sess_*") as $filename) {
    if (
filemtime($filename) + $maxlifetime time()) {
      @
unlink($filename);
    }
  }
  return 
true;
}
###############################################
#Holt IP Adress
##############################################
function fGetIp ()
{
      
$this->IP=$_SERVER["REMOTE_ADDR"];
}
###############################################
#zeigt clienten umgebung
###############################################
function fGetClient ()
{
    
$this->Client=$_SERVER["HTTP_USER_AGENT"];
}
###############################################
#holt den host header soweit vorhanden
###############################################
function fGetHost ()
{
    
$this->Host=$_SERVER["HTTP_HOST"];
}
###############################################
#Zählt gesamte Seitenaufrufe
###############################################
function fGetHit ()
{
   
    
$_SESSION["Hit"]=$this->fZaheler ($_SESSION["Hit"]);
    
}
###############################################
#zählen der aufrufe pro seiten und unterseiten
###############################################
function fGetHitproSite ()
{
    if (
true===is_array($_POST))
    {
        
$this->fReadVar ($_POST);
        
    }
    
    if (
true===is_array($_GET))
    {
       
$this->fReadVar ($_GET);
               
    }
}
###############################################
function fReadVar ($Var)
{
        if (
true===is_array($Var))
        {
        
              
//entfernen aller key die nicht zu brauchen
              
unset ($Var["Stop_allSound"],$Var["flashLoad"],$Var["sendenServ"],$Var["sendenUnt"],$Var["sendenProj"],$Var["sendenProjHome"],$Var["SiteZ"]);
              
              
//prüfen ob unterpunkte entahlten 
              
if (true===array_key_exists("umenueid",$Var) && false===empty($Var["umenueid"]))
              {
                  
$_SESSION["umenueid"."_".$Var["hmenueid"]."_".$Var["umenueid"]]=$this->fZaheler ($_SESSION["umenueid"."_".$Var["hmenueid"]."_".$Var["umenueid"]]);
                    
//es kann nur einen geben entfernen
                    
unset($Var["hmenueid"],$Var["umenueid"]);
                    
                                     
              }
              
              
//pruefen ob unterpunkte
              
if (true===array_key_exists("pmenueid",$Var) && false===empty($Var["pmenueid"]))
              {
                  
$_SESSION["pmenueid"."_".$Var["rmenueid"]."_".$Var["pmenueid"]."_".$Var["pumenueid"]]=$this->fZaheler ($_SESSION["pmenueid"."_".$Var["rmenueid"]."_".$Var["pmenueid"]."_".$Var["pumenueid"]]);

                    unset(
$Var["rmenueid"],$Var["pmenueid"],$Var["pumenueid"]);
              }
              
              
//denrest ausgeben nur wenn was drinn
            
$VarZahl=count($Var);
            if (
true===is_array($Var) && false===empty($VarZahl))
            {  
                foreach(
$Var as $keyName => $ValueVar)
                {
                        if (
false===empty($keyName) && false===empty($ValueVar))
                        {
                                
                                
$_SESSION[$keyName."_".$ValueVar]=$this->fZaheler ($_SESSION[$keyName."_".$ValueVar]);
                               
                                
                        }
                }
             }
              
              
             
        }
}
##############################################
#zahlerfunction
##############################################
function fZaheler ($Session)
{
    
$hit=$Session;
       if (
$hit==0)
    {
        
$hit=1;
            }
    else
    {
        
$hit++;
        
    }
    
    
    return 
$hit;
}

Beim Aufruf wird dann z.B. überall über echo die richtige Zahl ausgegeben, aber in der Datei steht dann statt 1 eine 2.

Kann mir da jemand helfen?

Grüsse Kanti
kanti ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.06.2008, 11:21  
Benutzer
 
Registriert seit: 25.03.2004
Beiträge: 63
kanti
Standard

Ich habe das Problem gelöst. Da ich eine Kombination von POST und GET Variablen habe und zwischen Flash und PHP Werte übergebe, kam es zu Doppelungen.

Grüsse Kanti
kanti ist offline  
Alt 09.06.2008, 11:40  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Ein Grund mehr warum register_globals Böse ist und man doch auf $_GET, $_POST und co zugreifen sollte
robo47 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Werte aus txt Datei auslesen und mit DB Werten abgleichen und ausgeben MatthiasNI PHP-Fortgeschrittene 1 18.02.2008 17:07
Werte in eine Datei schreiben winki PHP Tipps 2006 3 21.08.2006 16:33
Datei durchsuchen Wöllchen Beitragsarchiv 3 02.03.2006 22:23
Aufruf in .tpl Datei? PHP Tipps 2006 3 21.02.2006 02:09
Datei mit "w" schreiben -> 0 Bytes?! PHP-Fortgeschrittene 17 30.12.2005 13:58
Datei auf FTP-Server ändern ohne lokal abzuspeichern faux PHP-Fortgeschrittene 11 02.09.2005 11:54
Bestimmte Datei uploaden PHP Tipps 2005-2 5 18.08.2005 21:12
Datei mehrmals öffnen und schließen in einem Skript PHP Tipps 2005-2 14 14.07.2005 18:12
Singleton Klasse - falsche Werte PHP Tipps 2005 20 24.05.2005 12:07
[Erledigt] mail versand mit anhang (-- fopen(), fread(), filesize() --) PHP Tipps 2005 5 29.01.2005 18:36
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] datei editieren PHP Tipps 2004 1 10.09.2004 20:33
[Erledigt] Einzelne Werte aus TXT Datei auslesen und anzeigen. PHP Tipps 2004 1 08.09.2004 06:31
(ich schonwieder) Link seite automatisch imported_DJ Nuno PHP Tipps 2004 14 19.08.2004 17:42
Wie kann ich eine PHP Datei in eine HTML Datei umwandeln PHP Tipps 2004 2 12.08.2004 18:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
session_set_save_handler file, session_set_save_handler kein wert zurück, filemtime falscher wert, session_set_save_handler methoden übergeben, session_set_save_handler in klassen, session_set_save_handler() register_globals, session_set_save_handler function open, http://www.php.de/php-tipps-2008/45995-session_set_save_handler-falsche-werte-datei.html, session_set_save_handler ausführen, session_set_save_handler false, session_set_save_handler klasse, session_set_save_handler internet explorer

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.