loginscript

bspainkf36

Erfahrenes Mitglied
hey leute :)

hab ein "kleines" problem mit meinem loginscript, welches zwar die sessions mit richtigem inhalt setzt, aber sie nicht auslesen kann :(

hier die codestücke



die loginfunktion
PHP:
function login($member_nick, $member_password, $tbl_member)
	{
		if(isset($member_nick) == true) 
    	{ 
		    //Verbinde zu Datenbank
		    $db_handle = db_connect();
			    		 		
	 		$result_login = mysql_query("SELECT member_nick,member_password FROM $tbl_member WHERE member_nick = '$member_nick'") or die(mysql_error());
		
			if($login_name_vorhanden=mysql_num_rows($result_login)!=0)
			{
				$member_password = md5($member_password);
		  
				while($row_login = mysql_fetch_object($result_login)) 
        		{ 
        			if($row_login->member_nick == $member_nick && $row_login->member_password ==$member_password)  
            		{ 
                		session_register($member_nick);
						$meldung=""; 
            		} 
					else 
						$meldung="incorect pass"; 	
				}
			}
			else
			{
				$meldung="user not found";
			}
			
			db_close($db_handle);
		}
		return $meldung;
	}

index
PHP:
if(isset($_POST['login']) || !empty($_POST['login']))
	{
		$loginmeldung=login($_POST['username'], $_POST['password'], $tbl_member);
	}

//anderer quellcode ...

if(session_is_registered("user_s"))
							{  
								echo "Hallo $user_s, wie gehts?";
							}
							elseif(!session_is_registered("user_s"))
							{
								echo"
									<table border=0 cellspacing=0 cellpadding=0> 
   										<tr> 
											<td background=images/single.gif width=12 rowspan=2 >&nbsp;</td>
  	    									<td>$loginmeldung</td> 
        								</tr> 
									</table>
									<form name=form method=post action=index.php> 
										<table border=0 cellspacing=0 cellpadding=0> 
    										<tr> 
												<td background=images/single.gif width=12 rowspan=2 >&nbsp;</td>
  	    										<td><input class=username type=text name=username></td> 
        									</tr> 
        									<tr> 
         										<td><input class=password type=password name=password size=9><img src=images/images/single.gif width=1 height=1><input type=submit name=Submit value=login><input type=hidden name=login value=login></td> 
        									 </tr>
											 </tr><td background=images/single.gif height=10></td></tr>
     									</table> 
 									</form>
									";
					   		}

die session wird mit richtige inhalt (benutzernamen) gesetzt, jedoch wird immer das formular zur benutzerdaten eingabe ausgegeben :(

hoffe, dass ihr mir weiterhelfen könnt && wollt :)

danke gruß kon
 
Nur als Tipp: du solltest $_SESSION verwenden (PHP > 4.1.0).
Dann hast du die session_register Probleme auch nicht.

PHP:
if(session_is_registered("user_s"))

Diese Zeile sieht mir komisch aus. Weil du nirgends eine session_register ("user_s") Anweisung hast.
 
so habs jetzt ein wenig abgeändert, jedoch funktionier ist leider trozdem noch nicht :( die session wird gesetzt, jedoch kann sie nicht ausgelesen werden.

die funktion login
PHP:
function login($user_s, $member_password, $tbl_member)
	{
		if(isset($user_s) == true) 
    	{ 
		    //Verbinde zu Datenbank
		    $db_handle = db_connect();
			    		 		
	 		$result_login = mysql_query("SELECT member_nick,member_password FROM $tbl_member WHERE member_nick = '$user_s'") or die(mysql_error());
		
			if($login_name_vorhanden=mysql_num_rows($result_login)!=0)
			{
				$member_password = md5($member_password);
		  
				while($row_login = mysql_fetch_object($result_login)) 
        		{ 
        			if($row_login->member_nick == $user_s && $row_login->member_password ==$member_password)  
            		{ 
                		session_register("user_s");
						$meldung=""; 
            		} 
					else 
						$meldung="incorect pass"; 	
				}
			}
			else
			{
				$meldung="user not found";
			}
			
			db_close($db_handle);
		}
		return $meldung;
	}

der index

PHP:
if(!session_is_registered("user_s") && (isset($_POST['login']) || !empty($_POST['login'])))
	{
		$loginmeldung=login($_POST['user_s'], $_POST['password'], $tbl_member);
	}


// weiterer code ...

if(session_is_registered("user_s"))
							{  
								echo "Hallo" . $_SESSION["user_s"] . ", wie gehts?";
							}							
							else
							{
								echo"
									<table border=0 cellspacing=0 cellpadding=0> 
   										<tr> 
											<td background=images/single.gif width=12 rowspan=2 >&nbsp;</td>
  	    									<td>$loginmeldung</td> 
        								</tr> 
									</table>
									<form name=form method=post action=index.php> 
										<table border=0 cellspacing=0 cellpadding=0> 
    										<tr> 
												<td background=images/single.gif width=12 rowspan=2 >&nbsp;</td>
  	    										<td><input class=username type=text name=user_s></td> 
        									</tr> 
        									<tr> 
         										<td><input class=password type=password name=password size=9><img src=images/images/single.gif width=1 height=1><input type=submit name=Submit value=login><input type=hidden name=login value=login></td> 
        									 </tr>
											 </tr><td background=images/single.gif height=10></td></tr>
     									</table> 
 									</form>
									";
					   		}
 
Was won_gak andeuten wollte:

  • session_register("variable"); sollte ab jetzt $_SESSION["variable"] = $variable
  • session_is_registered("variable"); sollte nun heißen: isset ($_SESSION["variable"]);

Probier das mal auf diese Weise umzubauen.
 
@Karl Förster: Danke. Genau das wollte ich andeuten ;)

und hier:

http://de3.php.net/manual/de/ref.session.php

Zitat PHP-Handbuch:
Aus Gründen der Verbesserung der Sicherheit und der Lesbarkeit des Codes wird die Verwendung von $_SESSION (oder $HTTP_SESSION_VARS bei PHP 4.0.6 oder niedriger) empfohlen. Mit $_SESSION werden die Funktionen session_register(), session_unregister() und session_is_registered() nicht benötigt. Auf die Session-Variablen kann wie auf jede normale Variable zugegriffen werden.
 
Zuletzt bearbeitet:
Zurück