php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.11.2004, 15:22  
Erfahrener Benutzer
 
Registriert seit: 01.02.2008
Beiträge: 187
MortakArtos befindet sich auf einem aufstrebenden Ast
Standard Session-Variablen werden gelöscht?????

Hi zusammen,

ich habe verschiedene Sessionvariablen in meiner Session.
zB
$_SESSION["prod"]
$_SESSION["view"]
$_SESSION["date"]

Wenn ich jetzt ein Dokument aufrufe und in diesem Dokument schreibe:
$_SESSION["view"]="last";
löscht er mir damit automatisch die Variablen $_SESSION["prod"] und $_SESSION["date"].

Warum ist das so?? Ich versteh gar nix mehr.

Kurzer Ausschnitt:

PHP-Code:
session_start();

if (!isset(
$_SESSION["view"])){
    
$_SESSION["view"]="abs";
}

if (!isset(
$_SESSION["date"])){
    
$_SESSION["date"]="last";
}

if (!isset(
$_SESSION["prod"])){
    
$_SESSION["prod"]="KTV";
}

switch(
$_GET["date"]){ 
    case 
"last"
        
$_SESSION["date"]="last";
        break; 
       case 
"this"
        
$_SESSION["date"]="this";
            break; 
    default: 
        
$_SESSION["date"]="last";
        break;     


switch(
$_GET["view"]){ 
    case 
"abs"
        
$_SESSION["view"]="abs";
        break; 
       case 
"pro"
        
$_SESSION["view"]="pro";
            break; 
    default: 
        
$_SESSION["view"]="abs";
        break;     


switch(
$_GET["prod"]){ 
    case 
"ktv"
        
$_SESSION["prod"]="KTV";
        break; 
    case 
"int"
        
$_SESSION["prod"]="INT";
        break; 
    case 
"tel"
        
$_SESSION["prod"]="TEL";
        break; 
    case 
"digi"
        
$_SESSION["prod"]="DIGI";
        break;                 
    default: 
        
$_SESSION["prod"]="KTV";
        break;     

Ich rufe die Seite dann über Links auf wie zB
PHP-Code:
 seite.php?view=abs 
und er löscht mir dann damit $_SESSION["prod"] und $_SESSION["date"].

Bitte um HILFE!!!!

Liebe Grüße

Mortak
MortakArtos ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.11.2004, 16:02  
Erfahrener Benutzer
 
Registriert seit: 01.02.2008
Beiträge: 187
MortakArtos befindet sich auf einem aufstrebenden Ast
Standard

Session_id() bleibt übrigens bei jedem Aufruf die gleiche, als er erzeugt keine neue Session. Habs grad überprüft....kann das was mit den register_globals zu tun haben?

//EDIT: hmm, und er löscht sie nicht, sondern er setzt sie, ich denke dadurch:
PHP-Code:
if (!isset($_SESSION["view"])){ 
    
$_SESSION["view"]="abs"


if (!isset(
$_SESSION["date"])){ 
    
$_SESSION["date"]="last"


if (!isset(
$_SESSION["prod"])){ 
    
$_SESSION["prod"]="KTV"

wieder auf den Standard zurück....
MortakArtos ist offline  
Alt 30.11.2004, 16:05  
Gast
 
Beiträge: n/a
Standard

bin mir nicht sicher aber ich glaube du musst die variablen wieder in die session speichern. probier einfach

denn wenn man eine variable nachträglich in ne session speichert, verliert man die andere session, glaube ich zumindestens.

mfg
DarkManX
 
Alt 30.11.2004, 16:06  
Erfahrener Benutzer
 
Registriert seit: 01.02.2008
Beiträge: 187
MortakArtos befindet sich auf einem aufstrebenden Ast
Standard

hmm, kann man denn eine Session_variable nicht aktualisieren, ohne die restlichen Session_variablen zu verlieren?
MortakArtos ist offline  
Alt 30.11.2004, 16:13  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
<?php 

   session_start
(); 

   if( !isset(
$_SESSION['foo']) ) 
   { 
        
$_SESSION['foo'] = 'test1'
   } 

   if( !isset(
$_SESSION['bar']) ) 
   { 
        
$_SESSION['bar'] = 'test2'
   } 


   if( isset(
$_GET['foo']) ) 
   { 
        
$_SESSION['foo'] = 'yeah'
   } 


   echo 
'<pre>'
   
print_r($_SESSION); 
   echo 
'</pre>'


?>
also das funktioniert bei mir wunderbar, wenn ich die seite z.b. so aufrufe:

http://example.com/test.php?foo=juhu
imported_Ben ist offline  
Alt 30.11.2004, 16:19  
Erfahrener Benutzer
 
Registriert seit: 01.02.2008
Beiträge: 187
MortakArtos befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich das so mache und in $_SESSION['bar'] zb 'test' steht und die Seite dann über

http://example.com/test.php?foo=juhu

aufrufe, wird zwar $_SESSION['foo'] auf juhu gesetzt, allerdings wird aus $_SESSION['bar'] wieder 'test2'

//EDIT: Jetzt mal ne Grundsatzfrage:
Wenn auf dem Server, auf dem ich arbeite, REGISTER_GLOBALS auf OFF steht, kann ich dann trotzdem so arbeiten?
Ich bin nämlich grad draufgekommen, das hat nix mit dem neufüllen einer Variable zu tun, sondern beim erneuten aufruf der seite, auch ohne ?blabla hinten drann, verliert er die Session-Variablen, nicht aber die Session_id....
MortakArtos ist offline  
Alt 30.11.2004, 16:33  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Mortak
Wenn ich das so mache und in $_SESSION['bar'] zb 'test' steht und die Seite dann über

http://example.com/test.php?foo=juhu

aufrufe, wird zwar $_SESSION['foo'] auf juhu gesetzt, allerdings wird aus $_SESSION['bar'] wieder 'test2'
ja achne. aber das wolltest du doch auch, oder nicht?
imported_Ben ist offline  
Alt 30.11.2004, 18:42  
Erfahrener Benutzer
 
Registriert seit: 01.02.2008
Beiträge: 187
MortakArtos befindet sich auf einem aufstrebenden Ast
Standard

Ne, das will ich eben nicht.

Das hier:

PHP-Code:
   if( !isset($_SESSION['foo']) )
   {
        
$_SESSION['foo'] = 'test1';
   }

   if( !isset(
$_SESSION['bar']) )
   {
        
$_SESSION['bar'] = 'test2';
   } 
führ ich doch nur aus, um die beiden zu füllen, falls sie noch nicht gefüllt sind. Wenn die Variablen bereits vorhanden und gefüllt sind, sollen sie so bleiben, wie sie sind.

Irgendwie hab ich das Gefühl, ich steh etwas auf dem Schlauch und versteh da was ganz falsch...
MortakArtos ist offline  
Alt 30.11.2004, 20:17  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

beim ersten aufruf sind die $_SESSIOn-variablen nicht gefüllt.
somit werden die werte in das array eingefügt.

danach .. beim zweiten aufruf, wird test1 in yeah getauscht.
das wars. $_SESSION['bar'] bleibt natürlich bei test2 .. da ändert sich doch auch nichts.

noch ein beispiel:
PHP-Code:
<?php

   session_start
();

   
$destroy false;

   
// Testausgabe der $_SESSION-Inhalte zu Beginn

   
echo '<pre>';
   
print_r($_SESSION);
   echo 
'</pre>';

   if( !isset(
$_GET['foo']) )
   {
        
// beim ersten Aufruf hat $_SESSION keine Elemente
        // Hier werden die Inhalte zugewiesen.

        
$_SESSION['foo'] = 'ausgangswert für foo';
        
$_SESSION['bar'] = 'ausgangswert für bar';
   }


   if( !isset(
$_SESSION['foo']) )
   {
        
$_SESSION['foo'] = 'geänderter Wert für foo, falls $_SESSION["foo"] nicht gesetzt ist';
   }

   if( !isset(
$_SESSION['bar']) )
   {
        
$_SESSION['bar'] = 'geänderter Wert für bar, falls $_SESSION["bar"] nicht gesetzt ist';
   }


   if( isset(
$_GET['foo']) )
   {
        
$_SESSION['foo'] = 'weil $_GET["foo"] gesetzt ist wird $_SESSION["foo"] verändert.';
        
$destroy true;
        
   }


   echo 
'<pre>';
   
print_r($_SESSION);
   echo 
'</pre>';


   if( 
$destroy )
   {
       echo 
'[url="' $_SERVER['PHP_SELF'] . '"]Reload nach session_destroy() und ohne $_GET-variable[/url]';
       
session_destroy();
   }
   else
   {
          echo 
'[url="' $_SERVER['PHP_SELF'] . '?foo="]Reload mit $_GET-variable[/url]';
   }

?>
hilft das vom schlauch runterzukommen?
imported_Ben ist offline  
Alt 01.12.2004, 16:26  
Erfahrener Benutzer
 
Registriert seit: 01.02.2008
Beiträge: 187
MortakArtos befindet sich auf einem aufstrebenden Ast
Standard

Hehe, danke für die Mühe, stehe noch immer drauf. Mein code:

PHP-Code:
session_start();


if (!isset(
$_SESSION["view"])){
    
$_SESSION["view"]="abs";
}

if (!isset(
$_SESSION["date"])){
    
$_SESSION["date"]="last";
}

if (!isset(
$_SESSION["prod"])){
    
$_SESSION["prod"]="KTV";
}

switch(
$_GET["date"]){ 
    case 
"last"
        
$_SESSION["date"]="last";
        break; 
       case 
"this"
        
$_SESSION["date"]="this";
            break; 
    default: 
        
$_SESSION["date"]="last";
        break;     


switch(
$_GET["view"]){ 
    case 
"abs"
        
$_SESSION["view"]="abs";
        break; 
       case 
"pro"
        
$_SESSION["view"]="pro";
            break; 
    default: 
        
$_SESSION["view"]="abs";
        break;     


switch(
$_GET["prod"]){ 
    case 
"KTV"
        
$_SESSION["prod"]="KTV";
        break; 
    case 
"INT"
        
$_SESSION["prod"]="INT";
        break; 
    case 
"TEL"
        
$_SESSION["prod"]="TEL";
        break; 
    case 
"DIGI"
        
$_SESSION["prod"]="DIGI";
        break;                 
    default: 
        
$_SESSION["prod"]="KTV";
        break;     

Wenn ich die Seite aufrufe, werden die Session-Variablen gefüllt, funktioniert problemlos.
Wenn ich die Seite mit

PHP-Code:
echo'[url="' $_SERVER['PHP_SELF'] . '?prod=KTV"]Link[/url]' 
aufrufe, sind die gesetzten Variablen wieder leer. Wenn ich die Seite über

PHP-Code:
echo'[url="' $_SERVER['PHP_SELF'] . '"]Link[/url]' 
aufrufe, sind die zuvor schon mal gesetzten Variablen auch leer.

In beiden Fällen füllt er sie neu durch:
PHP-Code:
if (!isset($_SESSION["view"])){
    
$_SESSION["view"]="abs";
}

if (!isset(
$_SESSION["date"])){
    
$_SESSION["date"]="last";
}

if (!isset(
$_SESSION["prod"])){
    
$_SESSION["prod"]="KTV";

das hier.

Das ganze bin ich jetzt umgangen, in dem ich die Links so gesetzt hab:

PHP-Code:
[url="anzeige.php?view=abs<? echo("]">Test[/url]
Aber warum er mir die $_SESSION-Variablen löscht, wenn die Seite neu aufrufe, versteh ich immer noch. Mit der Version, die ich jetzt habe, ist die SESSION eigentlich sinnlos....aber naja, jetzt lass ichs mal so...
MortakArtos 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
Frage zu Sessions und Variablen in Session sternschnuppe99 PHP Tipps 2008 9 18.02.2008 13:30
Session Variablen als Referenz!? O_o Sam781 PHP-Fortgeschrittene 4 01.10.2007 11:19
session nach seitenwechsel leer... GELight PHP Tipps 2006 8 17.09.2006 15:17
Session Variablen zusammenfassen? Peoples PHP Tipps 2006 3 10.05.2006 02:13
Frage zu Session Variablen Cyberbob_at_tot PHP Tipps 2006 3 13.03.2006 16:52
Fehlermeldung bei Ausführen von session variablen karl PHP Tipps 2007 3 07.12.2005 10:34
Session Problem R4v3r PHP Tipps 2007 3 30.11.2005 23:25
[Erledigt] Session und Variablen PHP-Fortgeschrittene 2 18.09.2005 10:42
Shared Session Variablen RcRaCk2k PHP-Fortgeschrittene 3 06.09.2005 19:01
Object in einer Session Variablen d-jango PHP Tipps 2005-2 1 21.08.2005 17:50
problem mit session bzw übergeben von variablen! PHP Tipps 2005 21 16.05.2005 03:20
session variablen PHP Tipps 2005 4 28.02.2005 19:57
[Erledigt] Formulardaten in einer Session speichern, per Link übergeben PHP Tipps 2004-2 2 29.12.2004 15:47
Alle Session Variablen auslesen? SRWeb PHP Tipps 2004-2 2 07.12.2004 20:10
Session variablen PHP Tipps 2004 6 13.07.2004 20:28

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
session variable wird gelöscht, session variablen werden gelöscht, $_session wert wird gelöscht

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:10 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.