Globale Variablen?

Fragen zum Thema HTML, JavaScript, PHP
Antworten
Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Globale Variablen?

Beitrag von Kmitska » Do Mär 08, 2012 9:55 pm

Hallo Leute,

noch eine Frage:

Ist es möglich mit PHP globale Variablen zu machen, also Werte, die für jede Datei gültig sind.

Verwendung:
Ein einfaches Beispiel: Ich will schauen, ob der User sich eingeloggt hat.

Bei C++ wäre es so (ein Beispiel):
main.cpp:

Code: Alles auswählen

bool IsLogged = false;
extern.cpp

Code: Alles auswählen

extern bool IsLogged;
IsLogged = true;
Kind regards,
Kmitska

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Globale Variablen?

Beitrag von Xin » Fr Mär 09, 2012 12:35 am

Du kannst in Funktionen Variablen als global bezeichnen. In dem Fall wird dann eine vorhandene globale Variable verwendet statt eine neue lokale:

Code: Alles auswählen

$IsLogged = false;

function a()
{
  $IsLogged = true; // lokale Variable;
}

function b()
{
  global $IsLogged;

  $IsLogged = true; // globale Variable;
}
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
bbbl
Beiträge: 80
Registriert: So Jul 19, 2009 12:04 am

Re: Globale Variablen?

Beitrag von bbbl » Fr Mär 09, 2012 1:35 am

Eine weitere Möglichkeit wäre der Zugriff über das superglobale Array, $GLOBALS:

Code: Alles auswählen

$GLOBALS["IsLogged"];
Um genau zu sein, brauchst du das global-Keyword nur, wenn du innerhalb eines anderen Scope (z.B. innerhalb einer Funktion) auf die Variable eines anderen Scopes zugreifen willst. Siehe folgendes Beispiel:

globals.php

Code: Alles auswählen

<?php
$IsLogged = true;
?>
secure.php

Code: Alles auswählen

<?php
include('globals.php');

echo $IsLogged; //true

function a() {
echo $IsLogged; //undefined
}

function b() {
echo $GLOBALS['IsLogged']; //true
}
?>

Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Re: Globale Variablen?

Beitrag von Kmitska » Fr Mär 09, 2012 5:48 pm

Ich hatte eher an etwas gedacht... wo man sich einloggt und dann auch bei allen Seiten eingeloggt ist.
Muss es jedes mal über $_POST ermittelt werden oder eine Datei mit Variablen, das ich dann immer include(); ?

C@mper
Beiträge: 88
Registriert: Mo Nov 15, 2010 3:30 pm

Re: Globale Variablen?

Beitrag von C@mper » Fr Mär 09, 2012 7:36 pm

Zur Überprüfung, ob ein User eingeloggt ist, eignet sich eher $_SESSION. Diese setzt Du nach erfolgreichem Login und kannst /musst Du dann einfach auf jeder Seite überprüfen. Beim Beenden durch Logout/Timeout wird der $_SESSION gelöscht und der User muss sich wieder neu anmelden.

Siehe hier -> http://www.proggen.org/doku.php?id=php:sessions

Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Re: Globale Variablen?

Beitrag von Kmitska » Fr Mär 09, 2012 9:14 pm

Hallo und danke,

habe jetzt noch ein Problem:

wenn ich die Session beende (Auslogge) bekomme ich einen Fehler wie dies hier:
Notice: Undefined index: logged in C:\xampp\htdocs\UserInterface\index.php on line 5

logged (Variable) wird ja in diesem Fall gelöscht, wie könnt ich dies beheben?

C@mper
Beiträge: 88
Registriert: Mo Nov 15, 2010 3:30 pm

Re: Globale Variablen?

Beitrag von C@mper » Sa Mär 10, 2012 10:49 am

Kmitska hat geschrieben: wenn ich die Session beende (Auslogge) bekomme ich einen Fehler wie dies hier:
Notice: Undefined index: logged in C:\xampp\htdocs\UserInterface\index.php on line 5
logged (Variable) wird ja in diesem Fall gelöscht, wie könnt ich dies beheben?
Eine "Notice" würde ich nicht unbedingt einen Fehler nennen. Zum einen besteht hier die Möglichkeit, error_reporting runter zu setzen, zum anderen und weitaus besser und schöner wäre es allerdings, wenn Du vor dem benutzen des Array Index prüfen würdest, ob dieser gesetzt ist, also existiert.

Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Re: Globale Variablen?

Beitrag von Kmitska » Sa Mär 10, 2012 1:18 pm

Hallo,
danke Dir!

Lösung:
Habe im Google kurz nachgeschaut und kam auf den Befehl: "isset();"

Antworten