Moin!
Mach die Zuweisung mal so.
$_SESSION['USERNAME']="$username";
Was soll das bringen? Außer Performanceverlusten?
Wo ist bei dieser Zuweisung der Performanceverlust?
Wenn du die Variablenzuweisung ohne Anführungsstriche machst, weiß PHP sofort, was getan werden muß: Variable 2 nehmen, und den Wert an Variable 1 zuweisen. Ruck Zuck.
Wenn du Anführungsstriche drumrum machst, startet PHP den "Doppelte Anführungsstriche nach $variable durchsuchen"-Modus. Der ist meinetwegen ganz nett, wenn man
echo "Hallo, $anrede, wie geht's?";
machen will, aber
echo 'Hallo, '.$anrede.', wie geht's?';
ist deutlich performanter.
Folglich verbrät deine Lösung unnütz Performance. Das mag scheißegal sein, wenn dieser Codeteil sowieso nur einmal durchlaufen wird, aber es ist nicht mehr scheißegal, wenn der Teil in einer Schleife steht, und mehrfach (tausende Male?) durchlaufen wird.
@session_start();
Warum @? Wenn session_start() nicht mehr funktionieren kann, weil die header schon weggesendet wurden, dann will man das zur Entwicklungszeit wissen. Weil man das dringend beheben muß.
Nachdem ich meine Proggies sauber getestet habe, bekommen die ein "@"
Fehlermeldungen werden von Usern sowieso übergangen, aus seltsamen
Gründen sogar ignoniert.
Warum dieses? Wenn deine Skripte sauber funktionieren, werfen sie doch keine Fehlermeldungen mehr aus. Und das Debugging, wenn denn doch mal was nicht funktioniert, ist auch schwieriger.
Sofern du kannst, stelle die Ausgabe von Fehlermeldungen auf ein Logfile um, und unterdrücke die Ausgabe der Fehlermeldungen an den Browser auf dem Live-Server komplett. Das sollte vollkommen ausreichend sein. @ unterdrückt die Ausgabe der Fehlermeldung - repariert aber deinen Code nicht. Das führt u.U. zu Folgefehlern. Und am Ende wundert man sich, warum nichts kommt.
Ein wirklich gutes Programm fängt alle Fehler ab. Die Verwendung von @ ist also vollkommen unnötig.
dann auslesen der Session Variable:
$username = $_SESSION['USERNAME'];
Warum noch mal extra auslesen? Einfach verwenden geht doch auch!
Jetzt hänge ich aber. Wenn Du eine Variable in einer Session gespeichert hast, dann ist doch der Variablenname der nächsten
Page nicht bekannt?
$_SESSION ist eine wunderschöne, superglobale Variable, üblicherweise ein Array. Das kann man überall im Direktzugriff verwenden, lesend wie schreibend. Es ist unnötig - und für die meisten Fälle auch verwirrend, bis hin zu überflüssig fehlerträchtig - wenn man am Skriptanfang alle benutzten Variablen der Session aus $_SESSION ausliest, und sie am Skriptende dort wieder hineinschreibt. Wenn man aus Versehen eine Variable vergißt - sowohl beim Lesen als auch beim Schreiben - dann führt das zu ätzenden Programmfehlern, deren Ursache mit Sicherheit nicht leicht erkennbar ist.
Außerdem: Wenn dein Einwand stimmen würde, wieso weißt du dann im zweiten Skript, dass du $_SESSION['USERNAME'] verwenden mußt, um auf den in der Session gespeicherten Usernamen zuzugreifen? Wenn du nicht weißt, dass es 'USERNAME' heißt - wie willst du es herausfinden?
- Sven Rautenberg
--
Die SelfHTML-Developer sagen Dankeschön für aktuell 21335,05 Euro Spendengelder!