PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Session-Problem...



gzuki
13-12-2002, 09:32
Mmmmm. Großes Problem das mich meine Nerven kostet.... Ich starte im ersten Script die Session und registriere auch gleich eine Variable. Diese Variable wird auch gleich mit Werten belegt. Auf der nächsten Seite versuch ich die Session mit session_start() wieder aufzunehmen. Denkste funzt nur wenn ich das Cookie annehme. Wenn das Cookie nicht angenommen wird startet der PHP-Trottel gleich wieder ne neue Session. Ja ich habe mir schon viele Seiten über Sessions reingezogen und habe viele möglichkeiten ausprobiert. Das will aber nicht funzen.... Meine Nerven sind am Ende. In dem Verzeichniss in dem die Cookies gespeichert sind ist auch zu erkennen das die Variable mit einem Wert belegt ist und Ordnungsgemäß registriert wurde. Ja es wird die SID an die nächste Seite mit übergeben und trotzdem funzt die SCH... nicht. BITTE helft mir sonst dreh ich noch durch.........

Gaert
13-12-2002, 09:49
wenn du session_start aufrufst muss die Session Variable Vorhanden sein!

Gib einfach mach die Session Variable direkt vor session_start() aus (meistens $PHPSESSID). Warscheinlich ist sie bei dir leer...
Wenn du session_start() z.B. in einer Funktion aufrufst, dann vergiss nicht $PHPSESSID mit global reinzuholen.

gzuki
13-12-2002, 10:16
Heul. Es geht immer noch nicht...
Das ist der Code von der Startseite: ( der fett gedruckte Teil ist der Problemfall... Beim Senden der anderen Header auf sich selbst (die Datei heißt authent.php) funtzt es und er will keine neue Session starten aber dann...)
<?php
session_start();
session_register("session");
$sessionid = $HTTP_POST_VARS[PHPSESSID];
$login =$HTTP_POST_VARS[login];
$aktion =$HTTP_POST_VARS[aktion];
$nachricht="";
if ( isset( $aktion ) && $aktion == "login" )
{
if ( empty( $login ) || empty( $login[pass] ) || empty( $login[org] ) )
{
$nachricht .= "Sie müssen alle Felder ausfüllen<br>\n";
header( "Location: ../daten/authent.php?".SID );
}
elseif ( ! ( empty( $login[benutzer] ) || empty( $login[pass] ) || empty( $login[org] ) ))
{
global $session, $logged_in;
$session[logged_in] = false;
$db = "systemx";
$connect = pg_connect("dbname=$db user=$login[benutzer] password=$login[pass]");
$authent = "select * from stationen where station='$login[org]';";
if ( $result = pg_exec ($connect, $authent) )
{
$row = pg_numrows($result);
if ( $row < 1 )
{
header( "Location: ../daten/authent.php?".SID );
exit;
}
elseif ( $row >0 )
{
global $PHPSESSID;
$session[id] = $HTTP_POST_VARS[PHPSESSID];
$session[org] = $login[org];
$session[benutzer] = $login[benutzer];
$session[pass] = $login[pass];
$session[logged_in] = true;
$_SESSION['session']=$session;
[B]header( "Location: ../uebersicht.php?".SID );
exit;
}
}
$session[logged_in] = true;
$nachricht .= "Falsches Passwort, versuchen Sie es nochmal<br>\n";
}
}


?>

und auf der uebersicht.php wie folgt:
( session_name() gibt PHPSESSID aus)

<?php
global $PHPSESSID;
session_start();
.....
?>

gzuki
13-12-2002, 12:07
sorry die session wird schon ein skript vorher gestartet.... das übergeben funtzt da aber auch....:

<?php
session_start();
session_register("session");
?>
<form action='../phpz/anmeldung.php' method='post'>
<input type='hidden' name='<?php print session_name(); ?>' value='<?php print session_id(); ?>'>
<input type='hidden' name='aktion' value='login'>
<table align='center' class='auth'><tr><td class='auth' onMouseOver="status='Stationsname eintragen';">Station</td><td class='auth'><input type='text' name='login[org]' value='<?php print $form[org]; ?>' width='50'></td></tr>
<tr><td class='auth' onMouseOver="status='Benutzernamen eintragen';">Benutzername</td><td class='auth'><input type='text' name='login[benutzer]' width='50' value='<?php print $form[benutzer]; ?>'></td></tr>
<tr><td class='auth' onMouseOver="status='Passwort eintragen';">Passwort</td><td class='auth'><input type='password' name='login[pass]' width='50' value='<?php print $form[pass]; ?>'></td></tr>
<tr><td class='auth' onMouseOver="status='Eingaben löschen';"><button class='auth' type=reset><img src='<?php echo $buttoncancel; ?>' alt='reset'> löschen</button></td>
<td class='auth' onMouseOver="status='absenden';"><button class='auth' type='submit' target='haupt'><img src='<?php echo $buttonok; ?>' alt='anmelden'> anmelden</button></td></tr>
</table>

</form>

Gaert
13-12-2002, 12:35
Also nochmal...
Ist bei der uebersicht.php die $PHPSESSID angekommen oder nicht?
Mach mal ein echo $PHPSESSID vor dem session_start();

Und versuchs eventuell mal mit


header( "Location: ../uebersicht.php?PHPSESSID=" . $_REQUEST['PHPSESSID']);

gzuki
13-12-2002, 13:55
Also in dem obrigen Beispiel siehst du beim ersten senden -- header( "Location: ../daten/authent.php?".SID ) --des HEADERS funktionier die ganze Sache. Da habe ich auch die $PHPSESSID zur verfügung (hier wird das Formular an das 2.Beispiel zurückgegeben). Bei dem 2. Senden des HEADERS an die uebersicht funtzt nix mehr. Ich habe demzufolge auch keine $PHPSESSID zur Verfügung und PHP will gleich eine neue Session starten........Danke schon mal für die Aufmerksamkeit ich hoffe ich ziehe dich nicht mit in den Wahnsinn.....

gzuki
13-12-2002, 14:09
stop stop stop stop stop Ich bin blöd!!!!!!!!!!!!!!!! Nicht mehr drüber nachdenken! Ich bin blöd! Ich schreib gleich mal was ich falsch gemacht habe!

gzuki
13-12-2002, 14:17
So. Jetzt funztz..... Wenn Dummheit bestrafft werden würde dann wäre ich für die nächsten 5 Mill. Jahr im Knast.... Tut mir leid dich belästigt zu haben. Ich hab das Script noch durch ein anderes geleitet wo die Seite in 2 Frames aufgeteilt wird. von da aus ist dann die Session nicht weitergeleitet wurden..... MMMMM ich hoffe ich flieg dafür nicht aus dem Forum...........

Gaert
13-12-2002, 16:51
Quatsch... :D sowas is jedem mal passiert.

Ich hab mich am Anfang auch Stundenlang mit den Session Funktionen rumgeschlagen... jetzt hab ich mir ein gescheites Framework dafür geschrieben und denk nicht mehr groß drüber nach.