Session-Start/Name (Verständnissprobleme)
Markus
- php
Hallo an alle. Ich bin leider noch nicht so erfahren mit Sessions in PHP und habe leider ein Verständnissproblem.
Ziel:
Ich möchte eine Session starten, die einen festen Namen hat und diese Session während des gesammten Logins an die Seiten übertragen.
Bisher habe ich dies so gelöst:
--------------------------------------------------------------
Eine Include.php, die auf jeder Seite per include geladen wird:
// Beginn Include.php
<?php
$db_name="db_name_xxx"; //Datenbank Name
$db_host="localhost"; //Datenbank Host
$db_user="user_xxx"; //Datenbank Username
$db_passwort="xxx"; //Datenbank Passwort
$verbindung = @mysql_connect($db_host,$db_user,$db_passwort);
if (!$verbindung) {
print '<p>KEINE SQL-VERBINDUNG</p>';
exit;
}
$db =mysql_select_db($db_name,$verbindung);
session_start();
?>
// Ende Include.php
--------------------------------------------------------------
Eine Login.PHP:
// Beginn Login.php
<?php
include('include/include.php');
$query=@mysql_query("SELECT * FROM login WHERE user='".$_POST["user"]."' AND pass='".$_POST["pass"]."'");
$row = @mysql_fetch_array($query);
if ($_POST["pass"]==$row["pass"]) {
session_start();
$_SESSION["userid"]=$row["id"];
$_SESSION["username"]=$row["user"];
header("Location: index.php?session=".session_id());
}
?>
// Ende Login.php
--------------------------------------------------------------
Die index.php lädt per include die nötigen Inhalte:
// Beginn index.php
<?php
include('include/include.php');
if ($_SESSION['userid']!='') {
if ($go==seite1) { include('php/seite1.php'); }
if ($go==seite2) { include('php/seite2.php'); }
} else {
echo "NICHT EINGELOGGT!";
}
?>
// Ende index.php
--------------------------------------------------------------
Nun zu meinen Fragen:
Ich werde einfach nicht schlau aus den ganzen Beispielen auf den PHP-Seiten und möchte somit gerne meine letzte Möglichkeit probieren, dieses Problem endlich zu verstehen ;-)
Ich danke euch für eure Hilfe
Mit freundlichen Grüßen
Markus
hi,
- Wie vergebe ich der Session einen eindeutigen Namen?
Eindeutig in Bezug auf was?
Was gefällt dir an dem Sessionnamen, den PHP per Default nutzt, nicht?
- Muss "session_name(NAMEDERSESSION);" auf jeder Seite vor "session_start();" stehen (also in der include.php)?
Steht das etwa nicht im Manual? (Rhetorische Frage)
- Muss ich den Namen der Session bei "session_start();" in den Klammern angeben?
Steht etwa nicht im Manual, ob die Funktion session_start einen Parameter übergeben bekommen möchte, und wenn was für einen? (Rhetorische Frage)
- Wenn ich die Session in ein Popup übergeben möchte, muss ich dies mit z.B. "popup.php?session_id();" machen?
Gibt es im Manual bzgl. des Themas Übermittlung der Session-ID auf der Übersichtsseite zu Sessions nicht eine recht ausführliche Erklärung? (...)
- Muss der Name der Session mit bei "popup.php?session_id();" in den Klammern stehen?
Steht nicht im Manual, zu welchem Zweck diese Funktion einen Parameter übergeben bekommen sollte, und zu welchem keinen? (...)
Ich werde einfach nicht schlau aus den ganzen Beispielen auf den PHP-Seiten und möchte somit gerne meine letzte Möglichkeit probieren, dieses Problem endlich zu verstehen ;-)
Deine immer und stets allererste Möglichkeit, dich zu Informieren, sollte das Manual sein. Und man kann glaube ich durchaus behaupten, dass die Erklärungen dort, zumindest was deine hier gestellten Fragen angeht, ausführlich und verständlich genug sein sollten - sofern man sie aufmerksam und mit Verstand liest.
gruß,
wahsaga
Was gefällt dir an dem Sessionnamen, den PHP per Default nutzt, nicht?
Ich nutze leider 2 verschiedene Seiten die getrennt mit dem selben System laufen. Wenn ich nun im selben Browser-Fenster die URL zu der 2. Seite wechsel wird leider auch die selbe Session übergeben, womit ich gleich eingeloggt bin und natürlich die falsche ID in der Session steht.
Steht das etwa nicht im Manual? (Rhetorische Frage)
Ich muss mich glaube ich leider entschuldigen. Ich beziehe mich auf ein Tutorial, welches mir leider nicht die gewünschten Antworten liefert (http://tut.php-q.net/sessions.html). Auch durch die Erklärung auf PHP.net kann mir nicht klar erklären, ob "session_name(NAME)" auf jeder Seite vor "session_start();" aufgerufen werden muss.
Gibt es im Manual bzgl. des Themas Übermittlung der Session-ID auf der Übersichtsseite zu Sessions nicht eine recht ausführliche Erklärung? (...)
Da ich leider noch nicht die notwendige Erfahrung habe und ich nicht einmal weiß, ob ich die SID mit "index.php?SESSION=session_id;", oder "index.php?session_id;" übetragen muss, habe ich diese Frage gestellt.
Deine immer und stets allererste Möglichkeit, dich zu Informieren, sollte das Manual sein. Und man kann glaube ich durchaus behaupten, dass die Erklärungen dort, zumindest was deine hier gestellten Fragen angeht, ausführlich und verständlich genug sein sollten - sofern man sie aufmerksam und mit Verstand liest.
Leider scheine ich mir die Erklärung auf den falschen Seiten durchzulesen. Bisher konnte mir keiner dieser Erklärungen meine Fragen klar beantworten.
Leider habe ich trotz lesen der Erklärung von PHP.net und dem Tutorial (http://tut.php-q.net/sessions.html) noch immer nicht die 100%ige sicherheit über die korrekte Lösung.
------------------------------------------------------
Um meine Frage zu verkürzen:
"
session_name("TEST");
session_start();
"
... in jeder Seite am Anfang aufrufen, um eine eindeutige Session zu vergeben?
Mfg
Markus
hi,
Auch durch die Erklärung auf PHP.net kann mir nicht klar erklären, ob "session_name(NAME)" auf jeder Seite vor "session_start();" aufgerufen werden muss.
Auch Deshalb muss session_name() bei jeder Anfrage aufgerufen werden (und bevor session_start() oder session_register() aufgerufen wurden) verschafft dir diesbezüglich keine Klarheit ...?
Dein Schriftdeutsch erweckte den Anschein, dass es auch mit dem Lesen in dieser Sprache nicht allzu sehr hapern sollte - aber vielleicht müssen wir ja doch eine andere Sprachversion für dich aussuchen ...?
Da ich leider noch nicht die notwendige Erfahrung habe und ich nicht einmal weiß, ob ich die SID mit "index.php?SESSION=session_id;", oder "index.php?session_id;" übetragen muss, habe ich diese Frage gestellt.
Dann sei doch so gut zu erklären, was genau du an den Erläuterungen im Abschnitt Übermittlung der Session-ID nicht verstehst.
"Alternativ können Sie die Konstante SID verwenden, die definiert ist, nachdem die Session gestartet wurde. Falls der Client kein geeignetes Session-Cookie gesendet hat, hat sie die Form session_name=session_id."
Und ein Beispiel zur Verwendung von SID als GET-Parameter in einem Link findet sich dort auch noch.
Leider scheine ich mir die Erklärung auf den falschen Seiten durchzulesen. Bisher konnte mir keiner dieser Erklärungen meine Fragen klar beantworten.
Das ein Manual nicht immer auf jede spezifische Frage, die _du_ dir stellst, zu 100% eingehen kann, sollte klar sein.
Mit ein bisschen Nachdenken solltest du dir die Antworten aber erschließen können.
gruß,
wahsaga