Funktion leer im Formular

Braver Willy

Grünschnabel
Hej ihr,

ich hab eigentlich nur eine Verständnisfrage. Ich hab mir aus verschiedenen Tuts was nach meinen Bedürfnissen zusammengebastelt. Dabei ist ein komischer Fehler aufgetreten. Ich hab in einem Login-Script ein Formular mit POST-Daten. In dieses Forumlar wird per include-Befehl die settings.php eingelesen, in der wiederum per include die function.php eingelesen wurde. In der function.php werden wie der Name schon sagt einige Funktionen definiert, u.a. die Funktion set_login_sessions.

Mein Problem ist jetzt, das beim Laden der login.php alle Funktionen da sind, nachdem das Formular abgeschickt (also wiedergeladen) wird aber nicht mehr. Ich erhalte einen Undifend index, der sich auf die set_login_session bezieht. Ich kann das Problem umschiffen, indem ich die set_login_session direkt in die login.php schreibe. Dann geht auch alles. Da ich aber aus den Tuts was lernen will, würde ich gerne wissen, woran das liegt. Jemand eine Idee...hab ich vielleicht eine falsche Reihenfolge benutzt?

Die Funktion sieht so aus
PHP:
function set_login_sessions ( $user_id, $password, $remember )
	{
		//start der session
		session_start();
		
		//setzen der sessions
		$_SESSION['user_id'] = $user_id;
		$_SESSION['logged_in'] = TRUE;
		
		//Daten speichern an?
		if ( $remember ) {
			setcookie ( "cookie_id", $user_id, time() + KEEP_LOGGED_IN_FOR, COOKIE_PATH );
			setcookie ( "authenticate", md5 ( getIP () . $password . $_SERVER['USER_AGENT'] ), time() + KEEP_LOGGED_IN_FOR, COOKIE_PATH );
		}
	}

Das Forumlar sieht so aus
HTML:
<form class="form" <?php echo "\"action='$_SERVER[PHP_SELF]'\""; ?> method="post">

			<input type="hidden" name="_submit_check" value="1"/> 
		
			<div style="margin-top:12px; margin-bottom:10px">
				<img src="images/username.gif" alt="username" border="0" />
				<input class="input" type="text" name="username" id="username" size="25" maxlength="40" value="" />
			</div>
			<div style="margin-bottom:6px">
				<img src="images/password.gif" alt="password" border="0" />
				<input class="input" type="password" name="password" id="password" size="25" maxlength="32" />
			</div>
			<?php if ( ALLOW_REMEMBER_ME ):?>
			<div style="margin-bottom:6px">
				<input type="checkbox" name="remember" id="remember" />
				<label for="remember">Eingaben speichern?</label>
			</div>
			<?php endif;?>
			<input type="image" name="Login" value="Login"  class="submit-btn" src="images/btn.gif" alt="submit" title="submit" />
			<br class="clear" />
			<a href="register.php">Register</a> / <a href="forgot_password.php">Password recovery?</a>
			
		</form>
 
Eine "Undefined Index..." Meldung bekommst du, wenn du auf einen Array Eintrag zugreift, der nicht existiert bzw. nicht gesetzt ist.

Wo wird denn der include vorgenommen?

[phpf]session_start[/phpf] sollte übrigens immer am Anfang der Datei vorkommen.

PHP:
<?php echo "\"action='$_SERVER[PHP_SELF]'\""; ?>

Das geht übrigens auch schöner ;)

PHP:
<?php echo 'action="'.$_SERVER['PHP_SELF'].'"; ?>

Weiterhin solltest du deine Erinnerungsfunktions keinesfalls an die IP binden, da diese sich bei manchen Providern sogar bei jedem Seitenaufruf ändert.
Auch sollte das Passwort in keiner Form an den Benutzer gesendet werden.
 
Zurück