Session-Login-Aktualisierungsproblem

Miraculixx

Erfahrenes Mitglied
Hi!

Ich hoffe ihr könnt mir hier helfen:
Ich habe in php einen Login geschrieben (mit Username/Passwort)
Nach dem Absenden des Formulars kommt man wieder auf die selbe seite
PHP:
login.php?login=yes

Der Parameter wird abgeprüft
PHP:
if(isset($_GET["login"]))
und in der DB wird gecheckt ob der Login richtig war.
Wenn ja, dann wird auf die nächste seite weitergeleitet:
PHP:
header("Location: http://ets.n-design.biz/start.php");

Auf dieser start.php wird ganz zu beginn wieder die Login-Seite eingebunden, nur um zu checken, ob der user noch angemeldet ist:
PHP:
<?php
error_reporting(E_ALL);
include "login.php";
?>

In der login.php sollte dann eigentlich über alle if-abfragen weitergegangen werden, da ja der user schon angemeldet ist, allerdings macht er das nicht sondern zeigt wieder das login-fenster an :( Wenn ich aber dann manuell auf die start.php gehe, dann wird sie normal angezeigt, und nicht mehr das login-fenster.

Kann mir eventuell jemand sagen, woran das liegt, oder was ich ändern soll?
Herzlichen Dank schon mal im voraus.

hier noch die gesamte login.php:
PHP:
<?php
session_start();
error_reporting(E_ALL);
include_once("connection.php");
include_once("functions.php");

if(isset($_GET["login"]))
{
	$select = "SELECT id, name FROM ets_user WHERE name like '".$_REQUEST["user"]."' AND pwd = '".md5($_REQUEST["pwd"])."' and active = 1";
	$result = db_query($select);
	
	if(mysql_num_rows($result) > 0)
	{
		$data = mysql_fetch_array($result);

		$_SESSION["user_id"] = $data["id"];
		$_SESSION["user_name"] = $data["name"];
		
		mysql_free_result($result);
		
		header("Location: http://ets.n-design.biz/start.php");
		exit;
	}
	else
	{
		header("Location: http://ets.n-design.biz/login.php?show=wronglogin");
		exit;
	}
}
else if(isset($_GET["logout"]))
{
	$_SESSION["user_id"] = "";
	$_SESSION["user_name"] = "";
	header("Location: http://ets.n-design.biz/login.php?show=logout");
}
else if(!isset($_SESSION["user_id"]) || $_SESSION["user_id"] == "")
{
	?>
	<html>
		<head>
			<link rel=stylesheet type=text/css href="http://people.freenet.de/jameseb.de/H18designorange/CSS/css.css">
			<title>Login</title>
		</head>
		<body background="http://n-design.biz/ets/img/background.gif">
			<p align="center"><font class=headline>Login</font></p>
			<br><br>
		
			<?php
			if(isset($_GET["show"]))
			{
				if($_GET["show"] == "wronglogin")
					echo "<b style='color:#FF0000'>Du hast falsche Login-Daten eingegeben! Bitte nochmals versuchen.</b>";
				if($_GET["show"] == "wronguser")
					echo "<b style='color:#FF0000'>Dieser Benutzername existiert nicht oder wurde noch nicht freigeschalten!</b>";
				if($_GET["show"] == "wrongpwd")
					echo "<b style='color:#FF0000'>Benutzername oder Passwort ist falsch!</b>";
				if($_GET["show"] == "regok")
					echo "<b>Registrierung abgeschlossen. Melde dich hier an:</b>";
				if($_GET["show"] == "logout")
					echo "<b>Du wurdest erfolgreich abgemeldet</b>";
				echo "<br/> <br/> <br/>";
			}
			?>
		
			<form action="http://n-design.biz/ets/login.php?login=yes" method="POST">
			<table width=300 border=0 cellpadding=0 cellspacing=0>
			<tr>
				<td align=right>
					Username:&nbsp;
				</td>
				<td align=right>
					<input type=text name=user class=button>
				</td>
			</tr>
			<tr>
				<td align=right>
					Passwort:&nbsp;
				</td>
				<td align=right>
					<input type=password name=pwd class=button>
				</td>
			</tr>
			<tr>
				<td colspan=2 align=right>
					<input class=button type=submit value=Login>
				</td>
			</tr>
			</table>
			</form>
			
			
			<br><br>
			<p><a href="http://n-design.biz/ets/show_users.php">Freigeschaltete Benutzer</a></p>
			<a href="http://n-design.biz/ets/register.php">Registrieren</a>
		</body>
	</html>
	<?php
	exit();
}
?>
 
Miraculixx hat gesagt.:
Der Parameter wird abgeprüft
PHP:
if(isset($_GET["login"]))
und in der DB wird gecheckt ob der Login richtig war.

Du brauchst die Variable "login" nicht zu überprüfen - das ist unnötig.

Wenn sich jemand eingeloggt hat werden die Variablen
PHP:
$_SESSION["user_id"] = $data["id"];
        $_SESSION["user_name"] = $data["name"];
gesetzt. Dementsprechend brauchst Du in der start.php nur zu prüfen, ob diese beiden Variablen gesetzt sind.

PHP:
if (!isset($_SESSION)) {
  session_start();
}

  if((empty($_SESSION["user_id"])) OR (empty($_SESSION["user_name"]))) {
header("Location: login.php");  
die;
}
 
Thx für die Antwort - ich habs mal so geändert.
Aber es hat nichts geholfen - zu dem Zeitpunkt, an dem ich in der start.php nun die session überprüfe, steht (eigenartigerweise) noch nix drin. das heißt es wird wieder auf die login.php verlinkt :(

so ich habs jetzt geschafft :)
der fehler lag darin, dass ich die seite in einem frame geladen habe, und in diesem frame auch andere seiten auf anderen servern geladen habe, dadurch ging die session immer verloren...
thx trotzdem für die hilfe! :)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück