zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Login mit Session - irgentwie krieg ichs nicht.

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 18.09.2007, 11:07
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard Login mit Session - irgentwie krieg ichs nicht.

Servus!

Ich hab eine Adminscript, das über require ein Login aufruft:
PHP-Code:
<?php ---------
# Datenbankverbindung öffnen
$conn = @mysql_connect $servername$username$passwd );
if (!
$conn) {
    echo 
"Keine Verbindung zur Datenbank: ".mysql_error()." möglich";
    exit;
}
if ( ! @
mysql_select_db$dbname ) ) {
    echo 
"Kann Datenbank nicht erreichen: ".mysql_error();
    exit;
}

if ( 
$_POST['login'] ) {
    
$sql "SELECT * FROM pass WHERE name = '".$_POST['username']."'  AND pass = '".$_POST['password']."'";
    
$erg mysql_query($sql);
    while ( list ( 
$id$name$pass$fullname$recht ) = mysql_fetch_array $erg ) ) {
        
$sname $name;
        
$spass $pass;
        
session_start();
        
$_SESSION['isAdmin'] = 1;
        
$_SESSION['recht'] = $recht;
        
$_SESSION['user'] = $fullname;
    }
}

if ( isset ( 
$_SESSION['isAdmin'] ) && $_SESSION['isAdmin'] == ) {
$isAdmin =  $_SESSION['isAdmin'];
$admin $_SESSION['user'];
$adminrecht $_SESSION['recht'];
} else {
include 
"head.html";
echo 
"</head>\n<body>\n";
?>
    <form method="post" action="">
    <fieldset>
    <legend>Web´nEasy CMS 2.0</legend>
    <p class="text2">Bitte melden Sie sich an:</p>
    <label for="username">Benutzer</label>
    <input type="text" name="username" id="username" class="field" />
    <label for="password">Passwort</label>
    <input type="password" name="password" id="password" class="field" />
    <input type="submit" name="login" value="login" />
    </fieldset>
    </form>
</body>
</html>
<?php    
}
?>
Ich denke mir, ich frage ab ob die Session Variable 'isAdmin' gesetzt und 1 ist oder nicht. Wenn nicht dann kommt das Formular auf.

Aber irgentwo denke ich zu kompliziert, denn wenn ich im Adminscript eine Aktion auslöse, verlangt der von mir gleich wieder einen Login, nachdem ich den mache führt er allerdings die ausgelöste Aktion aus.
Im Adminscript frage ich so nach:
PHP-Code:
<?php ----
# nur wenn isAdmin gesetzt ist wird der nachfolgende Code ausgeführt.
if (  $isAdmin == ) {
    if(
$_GET['logout'] == 1) {
        
session_unset();
        
header"Location:index.php" );
    }
    
# head anzeigen
    
include ( "head.html" );....
Irgentwie ist es ziemlich lästig sich jedesmal zu registrieren

Wo denke ich falsch, sodass der sich die Session nicht merkt?

Danke.
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 18.09.2007, 11:23
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard



Bin draufgekommen, schaut jetzt so aus:
PHP-Code:
<?php
# Datenbankverbindung öffnen
$conn = @mysql_connect $servername$username$passwd );
if (!
$conn) {
    echo 
"Keine Verbindung zur Datenbank: ".mysql_error()." möglich";
    exit;
}
if ( ! @
mysql_select_db$dbname ) ) {
    echo 
"Kann Datenbank nicht erreichen: ".mysql_error();
    exit;
}

if ( 
$_POST['login'] ) {
    
$sql "SELECT * FROM pass WHERE name = '".$_POST['username']."'  AND pass = '".$_POST['password']."' LIMIT 0,1";
    
$erg mysql_query($sql);
    list ( 
$id$name$pass$fullname$recht ) = mysql_fetch_array $erg );
    
$sname $name;
    
$spass $pass;
    
session_start();
    
$_SESSION['isAdmin'] = 1;
    
$_SESSION['recht'] = $recht;
    
$_SESSION['user'] = $fullname;
}
session_start();
if ( isset ( 
$_SESSION['isAdmin'] ) && $_SESSION['isAdmin'] == ) {
$isAdmin =  $_SESSION['isAdmin'];
$admin $_SESSION['user'];
$adminrecht $_SESSION['recht'];
} else {
include 
"head.html";
echo 
"</head>\n<body>\n";
?>
    <form method="post" action="">
    <fieldset>
    <legend>Web´nEasy CMS 2.0</legend>
    <p class="text2">Bitte melden Sie sich an:</p>
    <label for="username">Benutzer</label>
    <input type="text" name="username" id="username" class="field" />
    <label for="password">Passwort</label>
    <input type="password" name="password" id="password" class="field" />
    <input type="submit" name="login" value="login" />
    </fieldset>
    </form>
</body>
</html>
<?php    
}
?>

Hab die session_start() oberhalb der Abfrage vergessen einzutragen....
Trotzdem, wenn Ihr einen Tipp habt, bitte Posten, Danke!
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 18.09.2007, 12:14
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Du solltest im übrigen nicht session_unset() verwenden für den Logout, siehe: PHP: session_unset - Manual
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #4 (permalink)  
Alt 18.09.2007, 12:35
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Zitat:
Zitat von Boris Beitrag anzeigen
Du solltest im übrigen nicht session_unset() verwenden für den Logout, siehe: PHP: session_unset - Manual
Hey Danke!
Wär ins Auge gegangen.
Mit Zitat antworten
  #5 (permalink)  
Alt 18.09.2007, 13:06
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Noch ein paar Hinweise, die vielleicht auch unbegründet sein können: Informiere dich über SQL-Injektionen und warum Register Globals gefährlich sein kann. Zudem solltest du Passwörtern niemals als Klartext speichern. Ein Salted-Hash-Wert reicht dort aus und schützt gleichzeitig das Originalpasswort.
__________________
Markus Wulftange
Mit Zitat antworten
  #6 (permalink)  
Alt 18.09.2007, 13:45
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.07.2007
Beiträge: 286
Chrunchy wird schon bald berühmt werden
Standard

Wenn du das session_start() vor die if ($_POST['login']... Abfrage setzt, sparst du dir die Angabe innerhalb der Schleife und den möglicherweise doppelten Aufruf.

Zitat:
Zitat von paracelsus Beitrag anzeigen
PHP-Code:
if ( isset ( $_SESSION['isAdmin'] ) && $_SESSION['isAdmin'] == 
Ich frage mich gerade, wie $_SESSION['isAdmin']=1 sein kann, ohne gesetzt zu sein.

Ich denke if ($_SESSION['isAdmin'] == 1) reicht vollkommen.

Ansonsten schließe ich mich Gumbo an.
Keine Userangabe ungeprüft in ein SQL-Statement übernehmen.
Passwörter immer verschlüsselt speichern und auch verschlüsselt prüfen. Ich nutze md5().
__________________
Gruß Chrunchy

"Eine Theorie ist eine Vermutung mit Hochschulbildung" (James Earl Carter)

Geändert von Chrunchy (18.09.2007 um 13:48 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 18.09.2007, 14:06
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Zitat:
Zitat von Chrunchy Beitrag anzeigen
Ich frage mich gerade, wie $_SESSION['isAdmin']=1 sein kann, ohne gesetzt zu sein.

Ich denke if ($_SESSION['isAdmin'] == 1) reicht vollkommen.
Es sollte eher geprüft werden, ob „$_SESSION['isAdmin']“ überhaupt existiert, da falls sie existiert den Wert „1“ besitzt.
__________________
Markus Wulftange
Mit Zitat antworten
  #8 (permalink)  
Alt 18.09.2007, 14:15
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Zitat:
Zitat von Gumbo Beitrag anzeigen
Es sollte eher geprüft werden, ob „$_SESSION['isAdmin']“ überhaupt existiert, da falls sie existiert den Wert „1“ besitzt.
Da hast Du recht, ist noch ein Fragment der Herumprobiererei.
Sql Injections sind mir bekannt, weniger die Verschlüsslerei.
Was ich nicht dachte war, das SQL inject. auch über Eingabefelder und POST möglich seien, kam gar nicht auf die Idee.
Mit Zitat antworten
  #9 (permalink)  
Alt 18.09.2007, 14:34
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

SQL-Injektionen können durch alle von außen kommende Benutzereingaben verursacht werden. Und das nicht nur durch die offensichtlichen (per GET- oder POST-Methode) sondern auch die „verdeckten“ wie Cookies oder anderen Werten aus der HTTP-Anfrage (dort insbesondere die Header-Felder).
__________________
Markus Wulftange
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 18.09.2007, 14:37
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Zitat:
Zitat von Gumbo Beitrag anzeigen
SQL-Injektionen können durch alle von außen kommende Benutzereingaben verursacht werden. Und das nicht nur durch die offensichtlichen (per GET- oder POST-Methode) sondern auch die „verdeckten“ wie Cookies oder anderen Werten aus der HTTP-Anfrage (dort insbesondere die Header-Felder).
Danke, damit ist klar was ich zu tun hab ... grml.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit dem Positionieren der Login Div Cybertronic CSS 26 06.10.2009 22:51
MUSS ich die Session Id übergeben tichy Serveradministration und serverseitige Scripte 1 15.02.2009 18:52
Ich benötige Hilfe und Anregungen zum Session Layout/User Login etc. andreas-k Serveradministration und serverseitige Scripte 5 07.07.2008 21:26
SESSION / COOKIE - Konflikte poppihasi Serveradministration und serverseitige Scripte 1 23.12.2007 14:29
LogIn mit Session – es klappt nicht Kirsten Serveradministration und serverseitige Scripte 10 24.08.2006 15:49


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:40 Uhr.