Php-session funktioniert nur teilweise

Hallo,

Ich hab ein Problem bezüglich meiner Website. Ich habe eine SessionID eingebaut, die aber nur teilweise funktioniert. Sie leitet mich richtig weiter für 2 sek. aber dann nimmt er dann verwirft er die session wieder. Ich hoffe ich habe es verständlich erklärt und hoffe mir kann jemand weiterhelfen.

<?php include("../inc/connections.inc"); ?><?php $passwort=md5($_POST['fpasswort']);<br />$sql = "SELECT \* FROM benutzer WHERE email = '".$\_POST['femail']."' AND passwort = '".$passwort."' AND status = 2";
$query = mysql\_query($sql, $link) or die("Fehler: ".mysql\_error()); 

$num = mysql\_numrows($query);
?\>
<?php if ($num==1) {<br /> $row = mysql\_fetch\_array($query); 
 $\_SESSION['bid']=$row['benutzer\_id'];
 $\_SESSION['email']=$row['email'];

 echo('Login erfolgreich! Bitte warten...');
 ?\><?php }<br />else { 
 echo('Login nicht erfolgreich! Bitte warten...');
 ?\><?php }<br />?\>

Hallo!

Hast du auch irgendwo ein session_start() drin? Sonst wird ja jedesmal eine neue Session erstellt.

Nico

Hallo!

Hast du auch irgendwo ein session_start() drin? Sonst wird ja jedesmal eine neue Session erstellt.

Nico.

Hallo Masterchief,

so weit ich das sehen kann hast Du die PHP und HTML
Dateien falsch beendet bzw. wieder begonnen.

Versuch es mal so:

<?php if ($num==1) {
$row = mysql\_fetch\_array($query); $\_SESSION['bid']=$row['benutzer\_id']; $\_SESSION['email']=$row['email']; echo('Login erfolgreich! Bitte warten...'); echo 'language="javascript"\>window.location.href="acp\_home.ph p";'; } else { echo('Login nicht erfolgreich! Bitte warten...'); echo 'window.location.href="/home.php"; '; } ?\> Oder wenn du zuvor noch keine ausgabe machst müsste es auch so funktionieren: <?php if ($num==1) {
$row = mysql\_fetch\_array($query); $\_SESSION['bid']=$row['benutzer\_id']; $\_SESSION['email']=$row['email']; header("location: acp\_home.php"); } else { header("location: /home.php"); } ?\> Allerdings darfst Du dann wie gesagt vor diesem Script keine Ausgabe erzeugen, sondern der Teil muss ganz oben stehen. Es kann sein, dass Du Ziel Adresse evtl. als komplette URL einbauen musst -\> http://www.deineDomain.de/acp\_home.php Falls es nicht funktioniert bitte noch mal melden.

Hallo,

ich hab dir hier noch ein Beispiel gemacht, dass mit
2 Dateien auskommt (die DB Verbindung ist mit PDO
realisiert, die Verbindung und die Abfrage musst du
evtl. auf deine Bedürfnisse umbauen)

  1. Datei -> index.php
<?php session_start();
if ($\_SESSION['online']=="1") { $username = $\_SESSION['username']; header("location: [http://www.domain.de/inhalt.php"](http://www.domain.de/inhalt.php%22)); } else { $\_SESSION['username'] = $username; ?\>Login-Prozedur Bitte einloggen: Benutzername: Passwort: <?php }
?\> 2. Datei -\> logincheck.php <?php session_start();
if(isset($\_POST['username'])) { $username = $\_POST['username']; } if(isset($\_POST['userpwd'])) { $userpwd = $\_POST['userpwd']; } // verbindung zur db aufbauen require\_once 'db.inc.php'; // username und userpwd aus db holen $stmt = $db-\>prepare("SELECT username, userpwd FROM user WHERE username = :username AND userpwd = > userpwd"); $stmt-\>bindParam(':username', $username, PDO::stuck\_out\_tongue:ARAM\_STR); $stmt-\>bindParam(':userpwd', $userpwd, PDO::stuck\_out\_tongue:ARAM\_STR); $stmt-\>execute(); $user = $stmt-\>fetchAll(PDO::FETCH\_ASSOC); if(count($user) == 1) { $\_SESSION['id'] = $user[0]['id']; $\_SESSION['username'] = $user[0]['username']; $\_SESSION['userpwd'] = $user[0]['userpwd']; $\_SESSION['online'] = "1"; // weiterleiten auf navigationsseite - wenn login erfolgreich header("location: [http://www.domain.de/inhalt.php"](http://www.domain.de/inhalt.php%22)); } else { print (''); print (''); print ('Benutzername oder Passwort falsch! '); print ('[Zurück...](index.php)'); } ?\> Viel Freude damit!

Ja das hab ich ganz oben vor dem html tag auf jeder seite außer hier. da wird ja die session id erst erstellt.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke an die hilfreichen Tipps.

Ich hab einfach am Beginn der Seite das session_star(); vergessen. Das war alles. :smile: Wird hoffentlich nicht wieder vorkommen. Typischer Anfängerfehler. :smiley:

Hallo,

du musst eine Session mit start_session(); in jeder
Datei starten, damit die Daten verfügbar sind.

Hallo,

Ich hab ein Problem bezüglich meiner Website. Ich habe

eine

SessionID eingebaut, die aber nur teilweise

funktioniert. Sie

leitet mich richtig weiter für 2 sek. aber dann nimmt

er dann

verwirft er die session wieder. Ich hoffe ich habe es
verständlich erklärt und hoffe mir kann jemand

weiterhelfen.

<?php include("../inc/connections.inc"); ?> <?php :blush:passwort=md5($_POST['fpasswort']);
$sql = "SELECT \* FROM benutzer WHERE email = '".$\_POST['femail']."' AND passwort = '".$passwort."'

AND

status = 2";
$query = mysql_query($sql, $link) or die("Fehler:
".mysql_error());

$num = mysql_numrows($query);
?>

<?php :if ($num==1) {
$row = mysql\_fetch\_array($query); $\_SESSION['bid']=$row['benutzer\_id']; $\_SESSION['email']=$row['email']; echo('Login erfolgreich! Bitte warten...'); ?\> <?php : }
else { echo('Login nicht erfolgreich! Bitte

warten…’);

?><?php : }
?>

Wird denn die Session-ID auch korrekt weitergegeben? Das passiert entweder durch einen Cookie oder per Url. Du kannst ja mal testhalber die Session-Id ausgeben lassen. Wenn die in den Dateien unterschiedlich ist, wird die irgendwo nicht korrekt weitergegeben oder nicht verwendet (fehlendes session_start()).

Nico

Hallo Masterchief,

Du hast mich als Experten ausgewählt, aber leider kann ich Dir nicht helfen. Ich arbeite schon lange nicht mehr mit PHP und bin daher zienlich „eingerostet“.

Viel Erfolg auf anderem Wege.
Gruß Lora