Frage(n) zu Cookies & Sessions

Ich rede nicht von den "fertigen" PHP-Funktionen, sondern von z.b. dieser:
PHP:
function test_nutzer () {
Mir wurde die Funktionsweise solcher Funktionen (was für ein Wortspiel ;) ) zwar schon ausgiebig erklärt, richtig verstanden habe ich sie aber trotzdem noch nicht.
Ich komme aber auch einfach nicht dazu mich damit mal zu befassen (mangels Zeit und mangels Bedarf).
Ergo: bei meinen Scripten verzichte ich auf solche Funktionen. ;)
 
venyl hat gesagt.:
Wenn er die Session erst nach einem erfolgreichen Login startet, kann er auch über einfach schaun ob eine Session existiert...

Schönes Thema...dazu hab ich auch gleich mal eine Frage, den ich habe mal gehört, das die session schon am anfang gestartet werden, wenn der headeran den Server gesendet werden muss, jedoch gehts auch wenn mans erst nach dem Login macht....

Wenn die session einmal gestartet ist, muss man sie nicht mehr Starten, jedoch warum ist das bei dem TuT von Karl Förster übers Loginsystem anders?


Hat noch jmd dazu was zu sagen?
 
Ich denke mal, dass ich dir da keine riesen Hilfe bin..........
Ich habe es so gemacht, das die Session vorher gestartet wird.
Habe mir überlegt, das es vielleicht besser ist das jeder Nutzer eine SessionID besitzen.
Dann kann man auch mal was in ner Session speichern und weiter geben, ohne das der Bursche eingeloggt sein muss.
Ich weiss ja nicht ,was die Zukunft auf meiner Seite so bringt..........
Kann natürlich sein, dass ich mit meinen Überlegungen total falsch liege und es nicht gängige Praxis ist.....
 
Dr Dau hat gesagt.:
Ich rede nicht von den "fertigen" PHP-Funktionen, sondern von z.b. dieser:
PHP:
function test_nutzer () {
Mir wurde die Funktionsweise solcher Funktionen (was für ein Wortspiel ;) ) zwar schon ausgiebig erklärt, richtig verstanden habe ich sie aber trotzdem noch nicht.
Ich komme aber auch einfach nicht dazu mich damit mal zu befassen (mangels Zeit und mangels Bedarf).
Ergo: bei meinen Scripten verzichte ich auf solche Funktionen. ;)

Das war mir schon klar.
Hatte es nur immer so verstanden, dass durch die "Erfindung" eigener Funktionen, der Code entrümpelt wird und wiederkehrende Dinge einfacher werden, da man dann ja nur die Funktionen aufrufen muss.
 
venyl hat gesagt.:
Wenn er die Session erst nach einem erfolgreichen Login startet, kann er auch über einfach schaun ob eine Session existiert...

Schönes Thema...dazu hab ich auch gleich mal eine Frage, den ich habe mal gehört, das die session schon am anfang gestartet werden, wenn der headeran den Server gesendet werden muss, jedoch gehts auch wenn mans erst nach dem Login macht....

Wenn die session einmal gestartet ist, muss man sie nicht mehr Starten, jedoch warum ist das bei dem TuT von Karl Förster übers Loginsystem anders?
Ohne jetzt mal zu gucken ob das schon kommentiert wurde moechte ich das mal etwas zerlegen.
Dazu moechte ich aber, aus Gruenden die wohl im Laufe der Erklaerung offensichtlich werden duerften, die Reihenfolge der Punkte umdrehen.

venyl hat gesagt.:
Wenn die session einmal gestartet ist, muss man sie nicht mehr Starten, jedoch warum ist das bei dem TuT von Karl Förster übers Loginsystem anders?
Die Session muss bei jedem Aufruf eines Scripts neu gestartet werden. Dies gilt natuerlich nicht fuer includete Scripts, aber bei jedem Seitenaufruf muss die Session wieder gestartet werden.
venyl hat gesagt.:
Schönes Thema...dazu hab ich auch gleich mal eine Frage, den ich habe mal gehört, das die session schon am anfang gestartet werden, wenn der headeran den Server gesendet werden muss, jedoch gehts auch wenn mans erst nach dem Login macht....
session_start() muss wie z.B. header() und setcookie() ausgefuehrt werden bevor etwas an den Browser geschickt wird. Das liegt daran, dass in der Regel von session_start() ein Session-Cookie gesetzt wird, und dies ist eben im Header der Fall.
Wenn beim eigentlich Login-Vorgang nichts ausgegeben wird kann session_start() auch erst nach der Verifizierung des Users ausgefuehrt werden. Es muss also nicht am Anfang des Scripts stehen.
venyl hat gesagt.:
Wenn er die Session erst nach einem erfolgreichen Login startet, kann er auch über einfach schaun ob eine Session existiert...
Das Problem ist hier, dass man um zu pruefen ob eingeloggt wurde die Session starten muss. Man kann natuerlich auch ueberpruefen ob man eine SessionID per Cookie oder URL uebergeben bekommt, aber es ist meiner Meinung nach sicherer zu ueberpruefen ob die Session nicht leer ist als wenn man sich darauf verlaesst, dass die Session zuvor durch ein Login gestartet wurde wenn man entsprechende Daten bekommt. Diese Daten (Session-Cookie oder SessionID im URL) koennen ja auch gefaelscht werden. Um dann sicher zu sein, dass wirklich jemand mit dieser Session eingeloggt ist muesste man wieder ueberpruefen ob die Session nicht leer waere. Das ganze waere dann also sozusagen doppelt gemoppelt. ;) Dementsprechend kann man, meiner Meinung nach, immer eine Session starten, ob der User sich nun einloggen will oder nicht.

Ausserdem kann ja eine Session auch noch zu anderen Spielereien genutzt werden, auch ohne ueberhaupt Daten in der Session selbst zu speichern. Auf meiner Seite wird beim ersten Aufruf der Seite geprueft ob vom Browser Cookies und JavaScript unterstuetzt/akzeptiert werden. Dies wird zusammen mit der SessionID in der Datenbank festgehalten. Anhand dessen kann ich dann schon vor dem Login entscheiden ob ich ueberhaupt die Checkbox anbiete um ein Auto-Login-Cookie zu setzen. Nach dem Login kommt dann auch die JavaScript-Einstellung zum tragen, dadurch entscheide ich dann im Forum und den News ob die schicke Button-Leiste zur Formatierung angeboten wird oder nicht.
 
@venyl,ich kenne jetzt keinen "TuT von Karl Förster", aber eine SESSION wird erst dann gestartet wenn Du zu Anfang Deines Scriptes "session_start()" schreibst.

@illuminatus26, habe Dir einmal ein Beispiel gemacht, vielleicht hilft es Dir ja Dein Script zu überarbeiten.
Des weiteren empfehle ich Dir einmal das PHP Handbuch näher zu studieren, bevor Du Dich an große Scripte machst und nichts davon verstehst...


Beispiel:

PHP:
<?php 

     function quadratSumme() {
        $num = '10';
        return $num * $num ;
     }
     echo quadratSumme().'<br/>'; // Ergebnis: 100     
     echo $num; /*Keine Ausgabe, da Gültigkeitsbereich und Sichtbarkeit nur innerhalb der Funktion bekannt ist.*/
     
 /*****************************************************************************************************************/   
     
     //Anderes Beispiel:
     function quadrat_Summe() {
        Global $num ;
        return $num * $num ;
     }
     $num = 4;
     echo quadrat_Summe().'<br/>'; // Ergebnis: 16
     echo $num.'<br/>'; /*Ausgabe: 4, da Gültigkeitsbereich und Sichtbarkeit auch außerhalb der Funktion bekannt ist.*/
     

 ?>
 
@venyl, warum in der formular.php die Session gestartet wird, kann ich so nicht nachvollziehen.
Auf den anderen Seiten muss die Session gestartet werden, damit auf die übergebenen Session-Variablen auch zugegriffen werden kann.
In der intern.php wird keine Session gestartet, weil sie schon in der includeten checkuser.php gestartet wurde.

@illuminatus26, mit einer eigenen Funktion soll Ordnung in die ganze Geschichte gebracht werden.
Ausserdem hat eine Funktion den Vorteil, dass man sie mehrfach anwenden kann.
Wenn Du also z.b. auf verschiedenen Seiten immer die gleiche Datenbankabfrage machst, kann es sinnvoll sein wenn man sich hierfür eine Funktion schreibt und diese dann in den Seiten einbindet um auf die Funktion zugreifen zu können.
So hält man den Code schlanker und braucht bei einer Veränderung der Datenbankabfrage nur eine Zentrale Datei zu ändern.
Ich habe z.b. ein Script wo 24 SELECT-Querys vorkommen (gesamter Code ca. ~600 Zeilen), im grunde sind sie alle gleich..... aber wie es der Zufall so will, steckt der Teufel im Detail..... jedes Query ist also doch verschieden.
Ich wüsste nicht wie ich dort eine Funktion draus bauen könnte.
 
Zuletzt bearbeitet:
@ RS9999

Du hast schon recht, dass das PHP-Handbuch wichtig ist. Darüber hinaus, besitze ich sogar noch 2 Bücher.......:-) :-) :-)
Nur ist es so wie immer, dass das, was im Buch steht nicht immer so praxisnah ist.
;) ;) ;)
Ausserdem denke ich, dass lerning by doing, mehr bring als sich 2-3 Bücher durchzulesen...

@ Dr.Dau

Ja genauso meinte ich es auch.
Das Problem mit den 24 SELECT´s habe ich auch. Habe es dann wahrscheinlich, so wie du gelöst, dass ich eine Funktion für die Datenbankverbindung besitze. An diese wird dann dann das jeweilige Query gesendet und eine weiter Funktion wertet das Ergebnis dann aus und schreibt es in die Session.
Somit ist dann alles schön überall verfügbar.
 
Zurück