php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 07-03-2005, 21:02
spoetsch
 Registrierter Benutzer
Links : Onlinestatus : spoetsch ist offline
Registriert seit: Mar 2005
Beiträge: 14
spoetsch ist zur Zeit noch ein unbeschriebenes Blatt
spoetsch eine Nachricht über ICQ schicken
Standard Sessionhandling mit register_globals = on

Hi,

ich habe folgendes Problem:

Ich bin noch Newbie und habe ein wenig mit PHP rumgespielt und mir lokal eine kleine Webanwendung geschrieben in der ich mit Sessions arbeite. Dabei speichere ich z.B. die Benutzerdaten in der Variable $_SESSION['user'], wenn sich ein Nutzer anmeldet. Jetzt habe ich diese Anwendung auf meinem Webspace hochgeladen, hier ist allerdings, im Gegensatz zu meinem lokalen System register_globals = on gesetzt. Nun werden, wenn sich mehrere Benutzer gleichzeitig anmelden, die Inhalte von $_SESSION['user'] überschrieben.

Meine Frage ist also, wie ich Session-Variablen benutze, wenn register_globals = on ist?! Wie kann ich userspezifische Daten in der Session speichern ohne das sie global hinterlegt werden?

Danke!
Steffen
Mit Zitat antworten
  #2 (permalink)  
Alt 07-03-2005, 21:10
wdsl
 Newbie
Links : Onlinestatus : wdsl ist offline
Registriert seit: Mar 2005
Beiträge: 19
wdsl ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmm muss ein anderer Fehler sein z.B. das du immer die gleiche sid vergibst etc. aber ansonsten kann das nicht daran liegen (kann mich teuschen) da eine Session immer für einen User generiert wird und das nichts mit globals on off zu tun hat.

mfg
wdsl
__________________
visit me: a-bout.de
Mit Zitat antworten
  #3 (permalink)  
Alt 07-03-2005, 21:16
spoetsch
 Registrierter Benutzer
Links : Onlinestatus : spoetsch ist offline
Registriert seit: Mar 2005
Beiträge: 14
spoetsch ist zur Zeit noch ein unbeschriebenes Blatt
spoetsch eine Nachricht über ICQ schicken
Standard

Wie kann ich den verhindern, dass immer dieselbe SID vergeben wird?

Momentan rufe ich einfach session_start(); auf und speicher danach Werte in die Variable $_SESSION['...'] ab:

<?php

require "../objects/User.php";

session_start();

...

$user = $uh->getUserByLogin($_POST["login"]);
...
$_SESSION["user"] = $user;

?>
Mit Zitat antworten
  #4 (permalink)  
Alt 07-03-2005, 21:20
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

testest du auch unter (mindestens) verschiedenen browsern / von verschiedenen rechnern aus?
Mit Zitat antworten
  #5 (permalink)  
Alt 07-03-2005, 21:21
spoetsch
 Registrierter Benutzer
Links : Onlinestatus : spoetsch ist offline
Registriert seit: Mar 2005
Beiträge: 14
spoetsch ist zur Zeit noch ein unbeschriebenes Blatt
spoetsch eine Nachricht über ICQ schicken
Standard

Ja, verschiedene Rechner, verschiedene Browser!
Mit Zitat antworten
  #6 (permalink)  
Alt 07-03-2005, 21:23
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

und sie bekommen trotzdem die gleiche sid?
Mit Zitat antworten
  #7 (permalink)  
Alt 07-03-2005, 21:30
spoetsch
 Registrierter Benutzer
Links : Onlinestatus : spoetsch ist offline
Registriert seit: Mar 2005
Beiträge: 14
spoetsch ist zur Zeit noch ein unbeschriebenes Blatt
spoetsch eine Nachricht über ICQ schicken
Standard

Also, wenn ich mit session_id() die Session-ID abfrage, so sind diese wie zu erwarten unterschiedlich! Einzig die Inhalte der Session-Varialben vermischen sich bzw. sind nicht eindeutig. Das Problem ist auf meinem lokalen System ebenfalls aufgetreten, als ich dort die Einstellung register_globals = on gesetzt habe.

Hab es gerade noch mal ausprobiert und immer die zuletzt gespeicherten Werte in $_SESSION sind immer global gültig und nicht auf einen Client beschränkt!

Geändert von spoetsch (07-03-2005 um 21:44 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 07-03-2005, 22:02
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zeige mal bißchen Code, wie du die Session-Werte ausliest.
Mit Zitat antworten
  #9 (permalink)  
Alt 07-03-2005, 22:24
spoetsch
 Registrierter Benutzer
Links : Onlinestatus : spoetsch ist offline
Registriert seit: Mar 2005
Beiträge: 14
spoetsch ist zur Zeit noch ein unbeschriebenes Blatt
spoetsch eine Nachricht über ICQ schicken
Standard

Im Prinzip gehe ich immer nach Schema-F vor:

Zuerst session_start() und danach greife ich mit $_SESSION['<variablenname>'] auf die Inhalte der Session zu. Mit $_POST['<...>'] auf die Variablen eines abgeschickten Formulars.

Beim Speichern weise ich einfach $_SESSION['<variablenname>'] einfach ein Objekt oder einen Wert zu.

Unten folgt der Code-Ausschnitt aus einem Chat-Formular, wo das Problem auftritt:

PHP-Code:

session_start
();

/* Objektklassen */    
require "../objects/User.php";
require 
"../objects/ChatMessage.php";
require 
"../func/ChatHandler.php";
require 
"../func/UserHandler.php";
require 
"../db.php";

/* Prüfen ob Session-Variable existiert */
if (isset($_SESSION["user"]))
{

    
$action "false";
    
$color "#000000";

    if (isset(
$_POST["color"]))
       
$color $_POST["color"];
    
    if (isset(
$_POST["action"]))
      
$action $_POST["action"];
        
    
$userOnline = array();
    
$uh = new UserHandler();
    
$userOnline $uh->getUsersOnline();
    
$ch = new ChatHandler();
        
    if (
$action == "sendMessage")
    {
        
$message = new ChatMessage();
        
        
$message->sender $_SESSION["user"]->login;
        
$message->message $_POST["message"];
        
$message->color $_POST["color"];
        
$message->created date("Y-m-d H:i:s"time());
        
$message->recipients $_POST["recipients"];
        
        
        
$ch->saveMessage($message);
    } 
Mit Zitat antworten
  #10 (permalink)  
Alt 07-03-2005, 22:31
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wird denn E_ALL verwendet?
Mit Zitat antworten
  #11 (permalink)  
Alt 07-03-2005, 22:32
wdsl
 Newbie
Links : Onlinestatus : wdsl ist offline
Registriert seit: Mar 2005
Beiträge: 19
wdsl ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Da würde ich glatt sagen die Zeile ist falsch!

PHP-Code:
$_SESSION["user"]->login 
Dazu müsstes du der $_SESSION["user"] als Klasse Definiert haben und das wäre ja totaler Unsinn. Oder irre ich mich da?

Sollte soweit ich das sehen kann so heisen:

PHP-Code:
$uh->login
und dann

PHP-Code:
$uh = new UserHandler($_SESSION["user"]); 
oder irgendwie so müsste man den ganzen Code anschaun aber soweit ich das rauslesen kann.

mfg
wdsl
__________________
visit me: a-bout.de
Mit Zitat antworten
  #12 (permalink)  
Alt 07-03-2005, 22:38
spoetsch
 Registrierter Benutzer
Links : Onlinestatus : spoetsch ist offline
Registriert seit: Mar 2005
Beiträge: 14
spoetsch ist zur Zeit noch ein unbeschriebenes Blatt
spoetsch eine Nachricht über ICQ schicken
Standard

E_ALL ??? Was ist das?

OK, habs gerade nachgeschlagen. Hab damit aber definitiv nichts gemacht bzw. eingesetzt oder sonstetwas...

Geändert von spoetsch (07-03-2005 um 22:42 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 07-03-2005, 22:41
spoetsch
 Registrierter Benutzer
Links : Onlinestatus : spoetsch ist offline
Registriert seit: Mar 2005
Beiträge: 14
spoetsch ist zur Zeit noch ein unbeschriebenes Blatt
spoetsch eine Nachricht über ICQ schicken
Standard

Also ich habe ein Objekt vom Typ "User" in die Session geladen, dass das Attribut "Login" hat. Und mit $_SESSION["user"]->login will ich also auf ein Attribut des Objekts zugreifen, welches ich in der Session unter "user" abgespeichert habe!

Und wie oben bereits erwähnt, mit register_globals = off, hat es bei mir super funktioniert, ohne Probleme!
Mit Zitat antworten
  #14 (permalink)  
Alt 07-03-2005, 22:45
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dann schau ma hier nach, wie du es einsetzst:
http://www.php-resource.de/forum/sho...threadid=50454
Mit Zitat antworten
  #15 (permalink)  
Alt 07-03-2005, 23:00
spoetsch
 Registrierter Benutzer
Links : Onlinestatus : spoetsch ist offline
Registriert seit: Mar 2005
Beiträge: 14
spoetsch ist zur Zeit noch ein unbeschriebenes Blatt
spoetsch eine Nachricht über ICQ schicken
Standard

Danke für den Tipp! Hab das error_reporting(E_ALL) in alle relevanten Dateien als oberste Zeile eingebaut, leider werden keine Errors ausgegeben, obwohl das Problem auftritt!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

Simple Forum PHP ansehen Simple Forum PHP

If you need simple forum or discussion on your website, then you've come to the right place. Simple Forum PHP is a script that is very easy to install and administer.

28.08.2021 nevenov | Kategorie: PHP/ Forum PHP Software
Formmailer Bootstrap 4

Mit dem Formmailer kann man sich eMails über seine Seite zukommen lassen.

08.07.2021 arne-home | Kategorie: PHP/ Formular
Fehlerseite Bootstrap 4

Bei Aufruf einer nicht existierenden Seite, teilen Sie Besuchern mit einer eigenen Fehlerseite mit, dass die gewünschte Seite nicht gefunden wurde. Die eigene Fehlerseite sollte dasselbe Design wie die Website haben. Zudem sollte ein Link zur Startseite a

04.07.2021 arne-home | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:19 Uhr.