Problem mit sessions auf localhost!

mokaschitta

Mitglied
Hi!
Also ich hab mal ein simples Loginscript geschrieben was auch ansich funktioniert. Allerdings werden komischerweise die sessions nicht übergeben. sie funktionieren nur auf der login.php selber. wenn ich sie nun beispielsweise an eine geheim.php weitergebe, werden sie dort nicht mehr ausgegeben. Mein localhost ist ein Windows-server mit einem apache server mit der php version 4.0.5 . Ich speicher die sessions in einem Ordner namesn C:\Sessions . Dort werden auch sessions erstellt sobald man die login.php aufruft. Ich kann die definierten Variablen dann auch auf der .php wo ich sie definiert hab aufrufen. Nur die übergabe klappt halt nicht. Hier mal der code den ich dazu geschrieben hab:

PHP:
<?
session_start();
include("dbconnect.php");
If($login=="go") {
$sql = "SELECT * from test_member where nick='$nick' && pw='$passwort'";

$result = mysql_query ($sql); 

if (mysql_num_rows ($result) > 0) 
{ 
$row = mysql_fetch_array ($result); 
 $_SESSION["name"] = $row["name"];
 $_SESSION["vname"] = $row["vname"];
 $_SESSION["pw"] = $row["pw"];
 $_SESSION["dis"] = $row["discription"];
 $_SESSION["user_id"] = $row["ID"];
header ("Location: intern.php"); 
} else {
echo"Die Logindaten sind falsch!";
}
}
?>
<FORM METHOD=POST ACTION="<?=$PHP_SELF?>">
<INPUT TYPE="text" NAME="nick"><br>
<INPUT TYPE="password" name="passwort"><br>
<INPUT TYPE="submit" name="login" value="go">
</FORM>

checklog.php
PHP:
<?php 
session_start (); 
if (!isset($_SESSION["user_id"])) 
{ 
  header ("Location: login.php"); 
} 
?>

intern.php
PHP:
<?
include("checklog.php");
echo "Login successful! You are loged in as&nbsp&nbsp;<b>"; echo $_SESSION["name"]; echo"</b><br>";
echo "<a href='upload.php'>Add release!</a>";
echo "<br><a href='logout.php?&logout=1'>Logout</a>";
?>

Also ich seh da kein Fehler drin. Hab irgendwie das gefühl, dass das an meiner serverkonfiguration liegt :(
 
das du die SessionID aber auch an jede der PHP-Dateien übergeben musst bzw die SessionID aus einem, sofern denn gesetzt, Cookie auslesen musst hast du aber schon berücksichtigt?
also um in intern.php auf die gleiche Session zuzugreifen, müsste dein Locationforward so aussehen:
header ("Location: intern.php?phpsessid=".session_id());

wobei der session_name (hier: phpsessid) analog dem aus der PHP-INI( session.name = PHPSESSID) sein muss.

Hoffe das hilft dir weiter
 
hmmm ne das hab ich ehrlichgesagt nicht berücksichtigt. In meinem php Buch stand sowas aehnliches, ich dachte jedoch, dass das bei den neueren PHP versionen nicht mehr nötig sei. ich probier es einmal. danke im Voraus
 
hmmm also das mit der PHP.ini stimmt überein. Dennoch klappt das nicht...muss ich session_id() definieren oder passiert das automatisch? und bei der Datei die die Session daten erhalten soll. Muss bei der auch noch was geändert werden oder reicht da session_start() ?
 
na durch dein session_start() wird die Session ja bereits erzeugt.
Du musst dann eigentlich nur die SessionID übergeben, so auch in einem
Auszug aus der Befehlsreferenz von PHP zu session_start():

PHP:
<?php
// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal']   = 'cat';
$_SESSION['time']     = time();

// Works if session cookie was accepted
echo '<br /><a href="page2.php">page 2</a>';

// Or maybe pass along the session id, if needed
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>

aber du kannst dir auch mal das Sessions Tutorial hier im Forum anschauen,
vielleicht hilft dir das auch weiter.
 
Zuletzt bearbeitet:
hmmm danke. So hab ich das auch schon probiert. Ich weiss jetzt zumindest den ungefähren Fehler...Wo er genau ist muss ich nun wohl durch Probieren herausfinden :>
 
Hmmmm ich hab nun noch mal probiert die SID in einer URL zu übergeben. Allerdings funktioniert das auch nicht. Die SID wird auch nicht in der URL angezeigt. Mir fällt echt nichts mehr ein was ich ausprobieren könnte :(
 
dann mach doch nach deinem session_start() in der "Hauptdatei" ein
die("SessionID: ".session_id());
dann solltest du eigentlich die SessionID sehen.

Btw kann es aber uach nichts schaden, deine PHP-Version mal upzudaten ;)
 
die sessionID wird tatsächlich ausgegeben...dennoch will das nicht mit der URL. Aber ich glaub ich hab das problem. Kann es sein, dass die nach dem login (nach dem Absenden fuer das formular )nicht mehr da ist? Ich probier mal die mit nem hiddenfield zu übergeben ^^ :D
 
ja wieso, wenn kein login=go übergeben wurde, wird auch keine Session angelegt sondern das Formular angezeigt. Und erst wenn dieses Abgeschickt wurde, werden ja die Logindaten überprüft und die Session angelegt oder nicht?
 
Zurück