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 />?\>
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.
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)
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!
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()).
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“.