php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.01.2010, 15:10  
Neuer Benutzer
 
Registriert seit: 12.11.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
phil9r befindet sich auf einem aufstrebenden Ast
Standard $_SESSION und globale Variablen.

Nehmen wir folgendes Script:

PHP-Code:
<?php
$foo 
'bar';
function 
foobar()
{
    
// NULL
    
var_dump($foo);
}
?>
PHP-Code:
<?php
$foo 
'bar';
function 
foobar()
{
    global 
$foo;
    
// string (3) 'bar'
    
var_dump($foo);
}
?>
ist die variable foo pro aufruf unterschiedlich?
nehmen wir an, 50 user rufen das script gleichzeitig auf, kriegen dann 50 user ne "eigene" foo variable oder wird immer die gleiche benutzt?

Ich befuelle foo in unterschiedlichen Funktionen logischerweise anders. (Auch wenns hier nur ausgegeben wird)
Wenn jetzt mehrere Leute das Script aufrufen - dann muesste doch $foo pro User auch einen anderen Inhalt haben koennen - sonst waer das doch total daemlich?

Und warum benutze ich dann noch Sachen wie $_SESSION['foo'] ?? Oder benutze ich das ueberhaupt nicht?

Danke,
phil
phil9r ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 04.01.2010, 15:13  
Jens P.
Gast
 
Beiträge: n/a
Standard

Wenn du FOO ausgibst, dann sieht auch jeder FOO. Wenn es eine Session ist hat jeder eine andere. Wenn du ein Zufallsgenerator schreibst, der in FOO ständig was neues genertiert, hat jeder auch eine andere Ausgabe. Ich verstehe dein Problem nicht wirklich.
 
Alt 04.01.2010, 15:20  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Jeder Nutzer hat seinen eigenen Variablenbereich.
Wenn Du
PHP-Code:
$foo rand(100000); 
benutzt, wird kaum jemand ein gleiches $foo haben, ob nun mit oder ohne Funktionskontext. Genauer gilt das nicht nur für verschiedene Clients, sondern auch für jeden Request (Seitenaufruf). Allein durch Sessions kannst Du Daten zwischen mehreren Requests eines CLients übergeben.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 04.01.2010, 15:21  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

Benutz einfach kein global, das macht, wie man sieht, nur Probleme und bringt Kopfschmerzen.

Wenn du global benutzt referenzierst du nur die Variable aus dem globalen Namespace in den Namespace der Funktion. Mit anderen Usern/Aufrufen hat das ganze garnix zu tun.

$_SESSION['foo'] ist dafür da, Variablen über mehrere Aufrufe hinweg zur verfügung zu haben.

Edit: schon wieder zu langsam...
draco88 ist offline  
Alt 04.01.2010, 15:29  
Jens P.
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Jeder Nutzer hat seinen eigenen Variablenbereich.
Wenn Du
PHP-Code:
$foo rand(100000); 
benutzt, wird kaum jemand ein gleiches $foo haben, ob nun mit oder ohne Funktionskontext. Genauer gilt das nicht nur für verschiedene Clients, sondern auch für jeden Request (Seitenaufruf). Allein durch Sessions kannst Du Daten zwischen mehreren Requests eines CLients übergeben.
Würden schon funktionieren, wenn 100000 gleichzeitig auf die Seite zugreifen. Dann könnten 2 Leute schon den gleichen Wert haben. Dies wird jedoch nie passieren. Das 2 Leute durch rand ein gleichen Wert haben ist so gut wie nicht möglich, jedoch mit einem Zufall hinzubekommen.

Sonst wie gesagt - Jeder User/Besucher hat seinen eigenen Variablenbereich! Sonst würde ja auch zum Beispiel bei einem Funktionsaufruf/Inlcude ein Fehler ausgegeben, dass diese Funktion/Datei schon im Zugriff wäre.
 
Alt 04.01.2010, 15:50  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Jens P. Beitrag anzeigen
Sonst wie gesagt - Jeder User/Besucher hat seinen eigenen Variablenbereich! Sonst würde ja auch zum Beispiel bei einem Funktionsaufruf/Inlcude ein Fehler ausgegeben, dass diese Funktion/Datei schon im Zugriff wäre.
Das ist Quatsch, es können mehrere Scripts gleichzeitig ein Script includieren ohne Fehlermeldungen. Problematisch wirds nur bei schreibendem Zugriff auf Dateien.
draco88 ist offline  
Alt 04.01.2010, 15:50  
Neuer Benutzer
 
Registriert seit: 12.11.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
phil9r befindet sich auf einem aufstrebenden Ast
Standard

Das Problem ist eigentlich keins, mich hat nur neulich jemand darauf angesprochen ob ich meine Variablen auch pro Session vergebe, sonst wuerden ja alle das gleiche sehen.

Das hat mich jetzt grade gedanklich irgendwie totals verwirrt... :-/
Alles andre waere auch schwachsinn, das hab ich mir schon beim Posten gedacht.

Globals brauch ich in dem Zusammenhang leider, da ich die Variable an einer Stelle befülle (durfte nicht mit OOP arbeiten, da waer das Problem der globals eh gegessen ...) und woanders ausgebe.

Vielen Dank fuer die Hilfe diesen Gedankendreher wieder grade zu biegen.

phil
phil9r ist offline  
Alt 04.01.2010, 15:52  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Würden schon funktionieren, wenn 100000 gleichzeitig auf die Seite zugreifen. Dann könnten 2 Leute schon den gleichen Wert haben. Dies wird jedoch nie passieren. Das 2 Leute durch rand ein gleichen Wert haben ist so gut wie nicht möglich, jedoch mit einem Zufall hinzubekommen.
Das hat aber nichts damit zu tun, dass sich bestimmte User Variablen teilen! Sondern mit der statistischen Wahrscheinlichkeit. Theoretisch könnten auch alle User die 1 in $foo haben. Das sagt aber nichts weiter aus, als dass ein sehr unwahrscheinlicher Fall eingetreten ist. Der Hinweis war also nicht sachdienlich, obwohl ich schon fast darauf gewartet habe (und deshalb "kaum jemand" geschrieben habe).
Zitat:
mich hat nur neulich jemand darauf angesprochen ob ich meine Variablen auch pro Session vergebe, sonst wuerden ja alle das gleiche sehen.
Wie das immer so ist mit klugen Ratschlägen anderer..
Zitat:
Globals brauch ich in dem Zusammenhang leider, da ich die Variable an einer Stelle befülle
Dafür gibt es retun und Funktionsparameter.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 04.01.2010, 15:53  
Jens P.
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von draco88 Beitrag anzeigen
Das ist Quatsch, es können mehrere Scripts gleichzeitig ein Script includieren ohne Fehlermeldungen. Problematisch wirds nur bei schreibendem Zugriff auf Dateien.
Wenn ich in der INDEX zb. die functions.php include und auf einer Unterseite nochmal functions.php include, und diese dann wie gesagt 2 mal include ist gleichzeitig, gibt er sehr gewiss eine Fehlermeldung aus!
 
Alt 04.01.2010, 15:58  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

Hats bei mir noch nie.
Hast du evtl mit include_once gearbeitet?
draco88 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
[Erledigt] __autoload, Eclipse PDT, globale Variablen und Dateinamen Jausenbrot PHP Tipps 2009 9 24.07.2009 19:20
Klasse statt globaler Variablen ecomeback PHP-Fortgeschrittene 6 15.07.2008 16:30
Übergeben von Variablen an in PHP eingebundenes Perl-Script shredder01 PHP Tipps 2008 3 04.04.2008 09:25
Datei mit Variablen so includen, dass Variablen nutzbar? BartTheDevil89 PHP Tipps 2008 6 22.01.2008 20:57
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
globale Variablen und OOP Timo Trallala PHP Tipps 2006 3 28.03.2006 12:02
Variable aus Variablen zusammensetzen juhuwoorps PHP Tipps 2007 1 28.11.2005 21:50
Globale Variablen PHP Tipps 2005-2 15 26.07.2005 12:26
globale Variablen PHP Tipps 2005 10 27.04.2005 12:20
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
[Erledigt] register globals off bei variablen Variablen... PHP Tipps 2005 4 25.01.2005 17:50
globale variablen PHP Tipps 2004 2 25.09.2004 20:47
Globale Variablen Beatbox PHP Tipps 2004 10 10.09.2004 17:55
Variablen per adresse übergeben rocco PHP Tipps 2004 7 24.07.2004 12:03
Globale Variablen PHP Tipps 2004 3 08.07.2004 00:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-einsteiger/62957-_session-und-globale-variablen.html, session globale variablen php, $_session global, php globale variablen ausgeben, global $_session, php session globale variablen, php global $_session, globale variable php session, php globale variablen session, globale php variablen multi clients, globale user variable für php, php zugrif auf globale variablen, php script pro aufruf variable erhöhen, globale variable in andere datei php, $_session ausgeben, php globale variablen zwischen dateien, php $globals $_session, php eigene globale variable, php zugriff auf globale variablen, _session ausgeben

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