Jugend mosht
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 06.05.2008, 22:33   #1
TP-Member
 
Registriert seit: Feb 2008
weiß_nix macht alles soweit korrekt

Session bleibt im Script nicht erhalten(Loginsystem)


guten abend zusammen...

ich hab ein loginsystem programmiert(Quelltext folgt unten) das noch nicht so ganz das tut was ich gern hätte...
man kann sich ein und aus loggen, registrieren usw.
nur wenn ich mich z.b. auf der startseite einlogge und dann z.b. auf den link scripts klicke werd ich "automatisch" wieder ausgeloggt...
der button logout verschwindet und das anmeldefenster erscheint wieder...
das kommische an der sache ist das in der datenbank die session trotzdem erhalten bleibt...

danke schon mal für eure hilfe...

gruß sascha

PS: verbesserungsvorschläge (sicherheit usw.) nehme ich gerne an

die index.php

PHP-Code:
<?
    
//Startet die Session
    
session_start();
    
    if (isset(
$_GET["seite"])) {
        
$seite $_GET["seite"];
    } else {
        
$seite "home";
    }

?>

<html>
<head>
<title>** Sascha Wetzel **</title>
<link href="main.css" rel="stylesheet" type="text/css">
</head>

<body onload="">
    <div id="seite">
        <div id="banner">
            <div id="bannerinline">Webdesign</div>
        </div>

        <div id="div">
            <div id="navi">
                <div id="link">
                    <a href="?seite=home">Home</a>
                    <br>
                    <a href="?seite=ueber_mich">&Uuml;ber mich</a>
                    <br>
                    <a href="?seite=projekte">Projekte</a>
                    <br>
                    <a href="?seite=scripts">Scripts</a>
                    <br>
                    <a href="?seite=kontakt">Kontakt</a>
                    <br>
                    <a href="?seite=impressum">Impressum</a>
                </div>
                <div id="news">
                    <div id="newsinline">
                        News:<br>
                            <marquee>
                            Hier kommt nun ein Text!!!
                            </marquee>
                    </div>
                </div>
                <div id="login">
                    <div id="logininput">
                        <?
                            
include "module/login.php";
                            echo 
$l;
                        
?>    
                    </div>
                </div>
            </div>
            <div id="inhalt">
                <div id="inhalt_2">
                    <?
                        
include "module/".$seite.".php";
                    
?>
                </div>
            </div>
        </div>
        <div id="copy">
            Style &copy; by Sascha Wetzel
        </div>                
    </div>
</body>

</html>

die login.php

PHP-Code:
<?
//Läd die Datei basicFunction und verbindet zur Datenbank
include "incl/inc/basicFunction.php";
dbconnect();

if (isset(
$_POST["user"]) && isset($_POST["pass"])) {

//Übergibt Daten aus dem Formular und verschlüsselt das Passwort MD5
$benutzername $_POST["user"];
$passwort_uv $_POST["pass"];
$passwort_v md5($passwort_uv);
    
    
//Lade in die $query alle Daten aus t_users und 
    
$query  "SELECT COUNT(*) as cnt from t_users where username='$benutzername' and passwort='$passwort_v' LIMIT 1";
    
$result =  mysql_query($query);
    
    
//Erstellt aus $relult ein assozives Array und läd es in $cnt
    
$cnt mysql_fetch_assoc($result);

    
$cnt $cnt['cnt'];
    
    
    
//Wenn $cnt gleich 1 ist soll er dem Login zustimmen und einloggen
    
if ($cnt == 1) {
        
eingeloggt($benutzername);
        
$h username();    
        
$l "<div id=\"logout\"><a href=\"?seite=logout\">Logout</a></div>";

    
//Wenn $cnt nicht 1 ist kommt eine Fehlermeldung und der Loginbereich wird nochmals angezeigt
    
} else {
        
$e "<span style=\"color: red;\">Sie haben einen falschen Benutzernamen oder ein falsches Passwort eingegeben.<br></span>";    
        echo 
formular();
    }
    
    
  
//Gibt den Loginbereich aus basicFunction aus
} else {
        echo 
formular();
}
?>

die basicFuntion.php

PHP-Code:
<?
//Datenbankverbingung
function dbconnect()
{

    
$server "localhost";

    
$user "...";
    
    
$password "...";

    
$sDatabase "...";


    
$con mysql_connect($server$user$password) or die(mysql_error());

    
mysql_select_db($sDatabase$con) or die(mysql_error());

}

//Frägt ab ob man Eingeloggt ist
function gateKeeper($session)
{

    
$query  "SELECT * from t_users where session = '$session' LIMIT 1";
    
$result =  mysql_query($query);

    
$RowCnt mysql_num_rows($result);
    
    if (
$RowCnt == 1) {
        return 
true;
        echo 
"<div id=\"logout\"><a href=\"?seite=logout\">Logout</a></div>";

    } else {
        return 
false;
    }

}

//Setzt die Session zurück
function logout() 
{

    
$query  "UPDATE t_users SET session = '' where ID = '".getUserID."' ";
    
mysql_query($query);

}

//Erzeugt eine Session
function eingeloggt($benutzername)
{

    
$sql="UPDATE t_users SET session='".session_id()."' where username='".$benutzername."'";
    
mysql_query($sql);
    
}

//Sucht die Anrede und den Username in der Datenbank
function username()
{

    
$query  "SELECT * from t_users where session = '".session_id()."' LIMIT 1";
    
$result =  mysql_query($query);
    
    
$user mysql_fetch_assoc($result);
    return 
$user['anrede'] . '&nbsp;' $user['nachname'];
}

//Gibt das Formular zum Einlogen aus
function formular()
{

    echo 
"<form action=\"index.php\" method=\"post\">
        <a style=\"font-size:14px; top: 0px; left: 0px;\">Login:</a>
        <a style=\"position: relative; top: 20px; left: -45px;\">Username:</a>
        <a><input name =\"user\" style=\"width: 115px; position: relative; top: 20px; left: 0px;\"></a>
        <a style=\"position: relative; top: 20px; left: 1px;\">Password:</a>
        <a><input name =\"pass\" style=\"width: 115px; position: relative; top: 20px; left: 0px;\"></a>
        <a><input name=\"login\" type=\"submit\" value=\"Login\" style=\"position: relative; top: 25px; left: 60px;\"></a>
        <a href=\"?seite=register\" style=\"position: relative; top: 30px; left: 2px;\">Registrieren</a>
        </form>"
;
    
}

function 
logged_in()
{
    
$sql="SELECT ID FROM t_users WHERE session='".session_id()."'LIMIT 1";
    
$result mysql_query($sql);
    return (
mysql_num_rows($result)==1);
}


function 
kontakt()
{
    
'<div style="margin: auto; border: 1px solid yellow;">
        <table>
            <hr />
                <form action="?seite=kontakt.php" method="post">
                    <tr>
                        <td>Name:</td>
                        <td><input name="Name" size="20" type="text"></td>
                    </tr>
                    <tr>
                        <td>E-Mail:</td>
                        <td>
                            <input name="E_Mail" size="20" type="text">
                        </td>
                    </tr>
                    <tr>
                        <td>Betreff:</td>
                        <td>
                            <select name="Betreff" size="1">
                                <option>Hilfe</option>
                                <option>Kritik</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>Nachricht:</td>
                        <td>
                            <textarea cols="25" name="Message" rows="5">
                            </textarea>
                        </td>
                    </tr>
                    <tr>
                        <td>Wünsche Antwort:</td>
                        <td>
                            Ja <input name="Antwort" checked type="radio" value="ja">    
                            Nein <input name="Antwort" type="radio" value="nein">
                        </td>
                    </tr>
                    <tr>
                        <td align="center" colspan="2">
                            <input name="send" type="submit" value="Abschicken">    
                            <input name="reset" type="reset" value="Löschen">
                        </td>
                    </tr>
                </form>
        </table>
    </div>'
}
?>
weiß_nix ist offline   Mit Zitat antworten


Alt 07.05.2008, 07:18   #2
TP-Moderator
 
Benutzerbild von StephanF
 
Registriert seit: Feb 2003
Ort: Erfurt
StephanF ist ein richtiges Arbeitstier - DANKEStephanF ist ein richtiges Arbeitstier - DANKEStephanF ist ein richtiges Arbeitstier - DANKEStephanF ist ein richtiges Arbeitstier - DANKE
Wo ist den der Teil in deinem Script, in dem Du den eingeloggten User in der Session speicherst.

und hier mal gucken
__________________
Schöne Grüße aus Thüringen
Stephan Page

Stell Dir vor, hier steht was und keiner liest es!! schon entdeckt?? F1 ist ne geile Taste
Ich beantworte keine E-Mails. Bitte alle Fragen ins Forum

schon gehört??? Das Internet ist voll, die lassen keinen mehr rein!!

Geändert von StephanF (07.05.2008 um 07:27 Uhr). Grund: geschlafen :)
StephanF ist offline   Mit Zitat antworten
Alt 07.05.2008, 10:14   #3
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKE
Und du solltest dein Loginscript gegen mysql-injections absichern. So ist das System sehr anfällig.
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline   Mit Zitat antworten
Alt 07.05.2008, 16:18   #4
TP-Member
 
Registriert seit: Feb 2008
weiß_nix macht alles soweit korrekt
Zitat:
Zitat von StephanF Beitrag anzeigen
Wo ist den der Teil in deinem Script, in dem Du den eingeloggten User in der Session speicherst.

und hier mal gucken

äm ich weiß nich genau was du meinsch...

meinsch du den scriptteil...
PHP-Code:
//Erzeugt eine Session
function eingeloggt($benutzername)
{

    
$sql="UPDATE t_users SET session='".session_id()."' where username='".$benutzername."'";
    
mysql_query($sql);
    

oder das...
PHP-Code:
function logged_in()
{
    
$sql="SELECT ID FROM t_users WHERE session='".session_id()."'LIMIT 1";
    
$result mysql_query($sql);
    return (
mysql_num_rows($result)==1);

weiß_nix ist offline   Mit Zitat antworten
Alt 07.05.2008, 16:19   #5
TP-Member
 
Registriert seit: Feb 2008
weiß_nix macht alles soweit korrekt
Zitat:
Zitat von Adromir Beitrag anzeigen
Und du solltest dein Loginscript gegen mysql-injections absichern. So ist das System sehr anfällig.
was macht die funktion mysql-injections..???
weiß_nix ist offline   Mit Zitat antworten
Alt 07.05.2008, 16:40   #6
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Wenn Du Glück hast ganz tolle Sachen.
SQL-Injection
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 07.05.2008, 16:45   #7
TP-Member
 
Registriert seit: Feb 2008
weiß_nix macht alles soweit korrekt
Zitat:
Zitat von webcreate Beitrag anzeigen
Wenn Du Glück hast ganz tolle Sachen.
SQL-Injection
okay...dann werd ich mir das mal zu gemüte führen..
weiß_nix ist offline   Mit Zitat antworten
Alt 08.05.2008, 07:30   #8
TP-Moderator
 
Benutzerbild von StephanF
 
Registriert seit: Feb 2003
Ort: Erfurt
StephanF ist ein richtiges Arbeitstier - DANKEStephanF ist ein richtiges Arbeitstier - DANKEStephanF ist ein richtiges Arbeitstier - DANKEStephanF ist ein richtiges Arbeitstier - DANKE
Zitat:
äm ich weiß nich genau was du meinsch...
ich meine das ganze Script. Einfach nehmen, anpassen an eigen Vars und Tabellen und der Drops ist gelutscht. Und für die Sicherheit, die meine beiden Vorredner angesprochen haben, haste auch gleich was getan.
__________________
Schöne Grüße aus Thüringen
Stephan Page

Stell Dir vor, hier steht was und keiner liest es!! schon entdeckt?? F1 ist ne geile Taste
Ich beantworte keine E-Mails. Bitte alle Fragen ins Forum

schon gehört??? Das Internet ist voll, die lassen keinen mehr rein!!
StephanF ist offline   Mit Zitat antworten
Alt 10.05.2008, 14:04   #9
TP-Member
 
Registriert seit: Feb 2008
weiß_nix macht alles soweit korrekt
Zitat:
Zitat von StephanF Beitrag anzeigen
ich meine das ganze Script. Einfach nehmen, anpassen an eigen Vars und Tabellen und der Drops ist gelutscht. Und für die Sicherheit, die meine beiden Vorredner angesprochen haben, haste auch gleich was getan.
ich hab mir mein dein Script angeschaut...
isch echt gut... ich hab nur ein paar verständnisprobleme...
hoff du kannsch sie mir mir relativ schnell beantworten...

1.

PHP-Code:
    // Maskierende Slashes aus POST entfernen
    
$_POST get_magic_quotes_gpc() ? array_map'stripslashes'$_POST ) : $_POST;
    
//Leerzeichen entfernen
    
$_POST['username'] = trim($_POST['username']);
    
$_POST['passwort'] = trim($_POST['passwort']); 
warum entfernsch du die slashes und leerzeichen...???
geschwindigkeit von der datenbank...???

2.

PHP-Code:
//Die Eingaben aus dem Formular überprüfen, 
function check_user($name$pass

    
//ob es diesen User wirklich gibt, 
    //dass Passwort liegt mit einem md5 String in der Datenbank
    
$sql="SELECT id FROM ".Tab1.
        WHERE username='"
.mysql_real_escape_string($name)."' 
        AND passwort=MD5('"
.mysql_real_escape_string($pass)."')
        LIMIT 1"

wo kommen die variablen $name und $pass her...???
was macht die funktion mysql_real_escape_string()...???
habe keine verständliche erklärung im netz gefunden...!!!

danke gruß sascha
weiß_nix ist offline   Mit Zitat antworten
Alt 10.05.2008, 14:24   #10
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
1a)
Da Anführungsstriche oft mit einem Slash maskiert werden, dieses entfernt man dann halt vor dem Eintrag in die DB, denn man wendet später ja auch noch mysql_real_escape_string an und da wurde man dann mehrfach maskieren.

1b)
trimm entfernt nicht alle Leerzeichen sondern whitespaces am Anfang und Ende.
Welchen Sinn sollte ein whitespace bei diesen Angaben haben? So schützt man die Eingaben um evtl. Fehleingaben zu eliminieren.

2)
Das sind die Parameter der function:
function check_user($name, $pass)

mysql_real_escape_string Das ist nicht verständlich?
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 10.05.2008, 14:31   #11
TP-Member
 
Registriert seit: Feb 2008
weiß_nix macht alles soweit korrekt
Okay Frage 1 beantwortet...
Frage zwei teilweiße...
mir isch schon klar, dass $name und $pass Parameter sind...
ich weiß nur nich wo die her kommen...
die müssen ja irgendwo ihre zuweißung bekommen ham...
weiß_nix ist offline   Mit Zitat antworten
Alt 10.05.2008, 14:34   #12
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts