php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.09.2004, 15:19  
Gast
 
Beiträge: n/a
Standard Problem mit Login Formular

Habe ein Problem mit meinem Login Script.
Es würde eigentlich super Funktionieren, ich wollte aber noch eine zusätzliche Funktion einbauen, dass das Script erkennt, ob der User bereits eingeloggt ist oder nicht.
Nun funktioniert das Script nicht mehr, wenn ich mich mit den richtigen Daten einlogge passiert nichts.
Hier einmal das ganze script:
PHP-Code:
<?php 
if ($logg==out)
    {
    
session_start(); 
    
session_unset ("logedin"); 
    
session_destroy(); 
    
?>
    Erfolgreich ausgeloggt! 
    <?php
    
}
elseif (
$logg==in)
    {
    
?>
    <form action="member.php" method="post"> 
    <table width="200" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
    <td class="text">Name:</td> 
    <td><input type="text" name="name"></td> 
    </tr> 
    <tr> 
    <td class="text">Password:</td> 
    <td><input type="password" name="pass"></td> 
    </tr> 
    <tr> 
    <td colspan="2" align="center"> 
    <input type="submit" name="login" value="Login"> 
    </td> 
    </tr> 
    </table> 
    </form> 
    <?php
    session_start
(); 
    
$trennzeichen '|';  
    if(
$login)
        { 
        
$name $_POST['name']; 
        
$pass $_POST['pass']; 
        
$pass md5($pass);  
        if(
file_exists("datenbank/".$name.".txt")) 
            { 
            
$file file("datenbank/".$name.".txt"); 
            
$true TRUE
            }  
        else 
            {
             echo  
'Benutzername nicht gefunden'
            
$true FALSE
            }  
        if(
$true
            { 
            
$arr explode($trennzeichen$file['0']); 
            
$a_name $arr['0']; 
            
$a_pass $arr['1'];  
            if(
$a_name == $name && $a_pass == $pass
                { 
                
$logedin TRUE
                
session_register("logedin");
                 echo 
"Login erfolgreich!
Bitte klicken Sie <a href=\"member.php\">hier</a> um zur Startseite zu gelangen."

                } 
            else 
                { 
                echo 
"Die Daten waren falsch."
                } 
            } 
        }
    }
if(
session_is_registered("logedin") && $_SESSION['logedin']) 
    { 
    
?>
    Sie sind eingeloggt
    [url="member.php?logg=out"]Ausloggen[/url]
    <?php 
    

else 
    { 
    
?>
    Sie sind ausgeloggt
    [url="member.php?logg=in"]Einloggen[/url]
    <?php  
    

?>
Habe schon versucht, die if(session_is_registered("logedin") schleife am anfang der Datei unterzubringen, aber da komme ich auch nicht auf das gewünschte Ergebnis.
Kann mir da mal jemand helfen, vieleicht habe ich ja irgend etwas vergessen, was die funktion des scriptes beeinflusst, aber zu keiner fehlermeldung führt, weil die bekomme ich ja nicht.

Vielen dank schon im Voraus.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.09.2004, 15:27  
Gast
 
Beiträge: n/a
Standard

soweit ich noch weiss muss "session_start()" immer ganz am anfang des dokuments stehen und es darf nicht vorher kommen.

--update--
hab nachgeschaut. nur bei cookie basierenden sessions
 
Alt 16.09.2004, 15:39  
Gast
 
Beiträge: n/a
Standard

ich vergleich dazu die sessionid die ich zu beginn in der db speichere.

sessions.inc
PHP-Code:
function logged_in() 

    
$sql="SELECT UserId 
    FROM users 
    WHERE UserSession='"
.session_id()."' 
    LIMIT 1"

    
$resultmysql_query($sql); 
      return ( 
mysql_num_rows($result)==1); 

und checke so, ob eingeloggt:

skript.php
PHP-Code:
<? 
session_start
(); 
include (
"sessions.inc");
echo 
'Sie sind '
if (!
logged_in()) 
    echo 
'nicht ';
echo 
'eingeloggt.'
?>
hat nix mit deinem script zu tun aba vielleicht hilft es dir ja n büschen.
 
Alt 16.09.2004, 15:50  
Gast
 
Beiträge: n/a
Standard

Also so funktioniert es einwandfrei:

PHP-Code:
<form action="member.php" method="post"> 
<table width="200" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td class="text">Name:</td> 
<td><input type="text" name="name"></td> 
</tr> 
<tr> 
<td class="text">Password:</td> 
<td><input type="password" name="pass"></td> 
</tr> 
<tr> 
<td colspan="2" align="center"> 
<input type="submit" name="login" value="Login"> 
</td> 
</tr> 
</table> 
</form> 
<?php
session_start
(); 
$trennzeichen '|';  
if(
$login)
    { 
    
$name $_POST['name']; 
    
$pass $_POST['pass']; 
    
$pass md5($pass);  
    if(
file_exists("datenbank/".$name.".txt")) 
        { 
        
$file file("datenbank/".$name.".txt"); 
        
$true TRUE
        }  
    else 
        {
        echo  
'Benutzername nicht gefunden'
        
$true FALSE
        }  
    if(
$true
        { 
        
$arr explode($trennzeichen$file['0']); 
        
$a_name $arr['0']; 
        
$a_pass $arr['1'];  
        if(
$a_name == $name && $a_pass == $pass
            { 
            
$logedin TRUE
            
session_register("logedin");
            echo 
"Login erfolgreich!
Bitte klicken Sie <a href=\"index.php\">hier</a> um zur Startseite zu gelangen."

            } 
        else 
            { 
            echo 
"Die Daten waren falsch."
            } 
        } 
    }
?>
Aber wo baue ich jetzt das script ein, das mir ausgibt, ob user online ist oder nicht, und ausloggen soll er auch wieder können.
 
Alt 16.09.2004, 16:02  
Gast
 
Beiträge: n/a
Standard

@cHrisR

im unterschied zu dir benutze ich eine textdatei, in der der username und das passwort gespeichert ist.

aber ich glaube ich weis worauf du hinaus willst, ich soll das script, das überprüft ob user online, einfach in eine seite die danach geladen wird hineinstecken. werd ich gleich mal probieren ?
 
Alt 16.09.2004, 16:11  
Gast
 
Beiträge: n/a
Standard

ob du in ner textdatei, db oder in deiner schublade speicherst is eigentlich nebensächlich .

ich löse das immer mit einer datei in die ich sämtliche functions die ich brauch (login, logout, checkuser, usw) reinpacke, diese includiere und voilá .. ich kann mit den functions arbeiten .

ich poste dir mal all meine benötigten funktionen:
PHP-Code:
function connect() 

    
$conmysql_connect('server','user','pass') or die(mysql_error()); 
     
mysql_select_db('hofladendb',$con) or die(mysql_error()); 


function 
check_user($name$pass)

    
$sql="SELECT UserId 
    FROM users 
    WHERE UserName='"
.$name."' AND UserPass=MD5('".$pass."') 
    LIMIT 1"

    
$resultmysql_query($sql) or die(mysql_error()); 
    if ( 
mysql_num_rows($result)==1
    { 
        
$user=mysql_fetch_assoc($result); 
        return 
$user['UserId']; 
    } 
    else 
        return 
false


function 
login($userid

    
$sql="UPDATE users 
    SET UserSession='"
.session_id()."' 
    WHERE UserId="
.$userid
     
mysql_query($sql); 


function 
logged_in() 

    
$sql="SELECT UserId 
    FROM users 
    WHERE UserSession='"
.session_id()."' 
    LIMIT 1"

    
$resultmysql_query($sql); 
      return ( 
mysql_num_rows($result)==1); 


function 
logout() 

    
$sql="UPDATE users 
    SET UserSession=NULL 
    WHERE UserSession='"
.session_id()."'"
     
mysql_query($sql); 


 
connect(); 
?> 
und wie gesacht, vom ding her egal ob db oder datei, das prinzip bleibt das gleiche.

viel spass beim tüfteln, ich mach feierabend .
 
Alt 16.09.2004, 16:22  
Gast
 
Beiträge: n/a
Standard

danke, werd mich mal auf die arbeit stürzen. meld mcih sobald ich es geschafft habe

vieleicht klappts ja, wenn ich auch mit hilfe von funktionen arbeite wie du
thx bigfolder
 
Alt 16.09.2004, 16:48  
Gast
 
Beiträge: n/a
Standard

okey ich habs geschafft, sieht jetzt so aus und funktioniert super.

Ps die datei heist member.php (für die weiterleitungen)

PHP-Code:
<?php
if (PHP_SELF==TRUE)
    {
    
session_start(); 
    if(
session_is_registered("logedin") && $_SESSION['logedin']) 
        { 
        echo 
"Sie sind eingeloggt.
<a href=\"member.php?logg=out\">Ausloggen</a>"

        } 
    else 
        { 
        echo 
"Sie sind nicht eingeloggt.
<a href=\"member.php?logg=in\">Einloggen</a>"

        }
    }
if (
$logg=="out")
    {
    
session_start(); 
    
session_unset ("logedin"); 
    
session_destroy(); 
    echo 
'<meta http-equiv="refresh" content="0; URL=http://mitglied.lycos.de/bigfolder/member.php?PHP_SELF=TRUE">';
    }
elseif (
$logg=="in")
    {
    
?>
    <form action="member.php?logg=in" method="post"> 
    <table width="200" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
    <td class="text">Name:</td> 
    <td><input type="text" name="name"></td> 
    </tr> 
    <tr> 
    <td class="text">Password:</td> 
    <td><input type="password" name="pass"></td> 
    </tr> 
    <tr> 
    <td colspan="2" align="center"> 
    <input type="submit" name="login" value="Login"> 
    </td> 
    </tr> 
    </table> 
    </form> 
    <?php
    session_start
(); 
    
$trennzeichen '|';  
    if(
$login)
        { 
        
$name $_POST['name']; 
        
$pass $_POST['pass']; 
        
$pass md5($pass);  
        if(
file_exists("datenbank/".$name.".txt")) 
            { 
            
$file file("datenbank/".$name.".txt"); 
            
$true TRUE
            }  
        else 
            {
            echo  
'Benutzername nicht gefunden'
            
$true FALSE
            }  
        if(
$true
            { 
            
$arr explode($trennzeichen$file['0']); 
            
$a_name $arr['0']; 
            
$a_pass $arr['1'];  
            if(
$a_name == $name && $a_pass == $pass
                { 
                
$logedin TRUE
                
session_register("logedin");
                echo 
'<meta http-equiv="refresh" content="0; URL=http://mitglied.lycos.de/bigfolder/member.php?logg=true">'
                } 
            else 
                { 
                echo 
"Die Daten waren falsch."
                } 
            } 
        }
    }
?>
Nochmals vielen Dank an alle die mir geantwortet haben.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit meinem Login System DJ Nuno PHP Tipps 2008 9 16.10.2007 16:44
Problem mit Formular FrankTheTank PHP Tipps 2008 7 04.10.2007 13:38
Problem mit interaktiven Formular max-dhom HTML, Usability und Barrierefreiheit 0 19.09.2006 10:28
POST Problem bei Formular PHP Tipps 2006 5 03.02.2006 23:36
Sessions Problem Mehrseitiges Formular PHP Tipps 2006 6 02.02.2006 18:59
Problem mit Formular CityHubter PHP Tipps 2006 7 20.01.2006 16:09
Formular Problem mit Übertragung (SunOS) PHP Tipps 2005-2 12 07.09.2005 11:26
Problem mit Formular! PHP Tipps 2005-2 5 12.08.2005 19:20
login problem PHP Tipps 2005 19 01.01.2005 21:52
[Erledigt] problem mit login skript | mysql | cookie PHP Tipps 2004-2 13 07.12.2004 19:01
problem bei file 2x über ein formular weiterzureichen. Promaetheus PHP Tipps 2004-2 2 07.11.2004 00:49
Problem mit Formular + Mail To+ PHP-Seiten weiterleitung HTML, Usability und Barrierefreiheit 3 27.08.2004 11:06
[Erledigt] Formular, Submit, PHP - Hab ein kleines Problem PHP Tipps 2004 2 10.07.2004 13:50
Locales PHP Problem Formular Daten PHP Tipps 2004 6 11.06.2004 15:44
Login Problem PHP Tipps 2004 4 04.06.2004 18:46


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:56 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.