php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.10.2006, 13:28  
Benutzer
 
Registriert seit: 30.12.2003
Beiträge: 30
schorsch
Standard frage zu login script

wie kann ich amchen das auf einer seite manche bereiche nur user oder nur admins sehen oder nur gäste??


so wird die seite für user geschützt das nur user oder admins diese seite betreten können
Code:
<?php
session_start();
if(!isset($_SESSION['USER_NAME']) || $_SESSION['USER_NAME'] == "") {
	header("location:login.php");
	die();
}
?>

und so das nur admins sie betreten dürfen
Code:
<?php
session_start();

if(!isset($_SESSION['IS_ADMIN']) || $_SESSION['IS_ADMIN'] == "NO") {
	header("location:index.php");
	die();
}
?>
nun möchte ich wissen wich ich es amchen kann das nur bestimmte teile der seite für user oder admins sichtbar sind zb so


//
das hier sieht der user
//

//
das hier der admin
//

//
das sieht ein gast
//
das sieht wieder nur ein admin
//

das hier sehen admins und user aber keine gäste

//



so zum beispiel wer kann mir helfen[/code]
__________________
gruß schorsch
schorsch ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.10.2006, 14:02  
Erfahrener Benutzer
 
Registriert seit: 08.06.2004
Beiträge: 865
RudiS
Standard

Hier findest du ein Beispiel aus einem guten Tutorial: http://tut.php-q.net/login.html
Das kannst du dann anpassen.
mfg RudiS
__________________
Kunst kommt von Können und nicht von wollen, denn sonst würde es ja Wunst heißen.
RudiS ist offline  
Alt 08.10.2006, 14:37  
Benutzer
 
Registriert seit: 30.12.2003
Beiträge: 30
schorsch
Standard

möchte gerne dieses login script weiter verwenden vieleicht weiß jemand wie man das mit dem script machen kann !
__________________
gruß schorsch
schorsch ist offline  
Alt 08.10.2006, 14:56  
Erfahrener Benutzer
 
Registriert seit: 08.06.2004
Beiträge: 865
RudiS
Standard

Nun gut, das geht eigentlich ganz einfach:
PHP-Code:
<?php
    session_start
();
    
    
// am Anfang als Gast initialisieren:
    
if ( empty( $_SESSION['mode'] ) )
    {
        
$_SESSION['mode'] = 'guest';
    }
    
    if ( 
/* login ausgeführt */ )
    {
        
// beim Login als Status admin oder Benutzer setzen
        
if ( /* ist admin */ )
        {
            
$_SESSION['mode'] = 'admin';
        }
        elseif ( 
        {
            
$_SESSION['mode'] = 'user';
        }
    }
    
    
// ...
    
    // hier Daten nur für Admins anzeigen:
    
if ( $_SESSION['mode'] == 'admin' )
    {
?>
        Hi Admin, ...
<?php
    
}
    
    
// hier Daten für Nutzer und Admins anzeigen:
    
if ( $_SESSION['mode'] != 'guest' )
    {
?>
    Hallo Nutzer, ...
<?php
    
}
    
    
// hier daten nur für Gäste:
    
if ( $_SESSION['mode'] == 'guest' )
    {
?>
    Hallo Gast, ...
<?php
    
}
    
    
// hier Daten für alle:
?>
    Hallo ...
<?php
    
    
// ...
    
?>
Das kannst du dann erweitern und anpassen.
Das mit dem header() Location solltest du nicht machen, das ist unnötig. Lade einfach gleich die passende Seite.
mfg RudiS
__________________
Kunst kommt von Können und nicht von wollen, denn sonst würde es ja Wunst heißen.
RudiS ist offline  
Alt 09.10.2006, 16:41  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.037
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

ich weiss nicht, obs gut oder schlecht ist, aber ich schreibe stehts eine login() und über prüfe jedesmal den user + pw (md5), so könnte man vermeiden, dass durch eine unachtsamkeit eine session einfach nur auf "on" gesetzt wird, ausserdem habe ich den benutzernamen.
notyyy ist offline  
Alt 09.10.2006, 16:55  
Erfahrener Benutzer
 
Registriert seit: 08.06.2004
Beiträge: 865
RudiS
Standard

Sessions werden ja nur auf dem Server gespeichert, es reicht also wenn du z. B. die Benutzer-Id oder den Benutzernamen speicherst. Du brauchst das nicht immer wieder überprüfen.
Beim einloggen musst du dann nur die Rechte des Benutzers speichern (Gast, Benutzer, Admin) und bei jeder Seite zeigst du dann die passenden Daten an.
Am besten verwendest du dafür noch ein Template-System, dann wird der ganze Code schön vom Design getrennt: http://www.phpfriend.de/forum/ftopic60245.html#415745
Lies dich einfach mal gut in Sessions ein und passe dann mein Skript (oder ein anderes) an deine Bedürfnisse an.
mfg RudiS
__________________
Kunst kommt von Können und nicht von wollen, denn sonst würde es ja Wunst heißen.
RudiS ist offline  
Alt 09.10.2006, 20:57  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard Re: frage zu login script

Zitat:
Zitat von schorsch
Code:
<?php
session_start();
if(!isset($_SESSION['USER_NAME']) || $_SESSION['USER_NAME'] == "") {
	header("location:login.php");
	die();
}
?>
Les dich tatsächlich mal in Sitzungssteuerung ein. Und nicht in dem von "RudiS" verlinkten Tutrial. Das ist in dem Punkt nämlich ganauso schrottig, um nicht zu sagen fahrlässig, wie Dutzende andere im Netz (und auch zwischen je zwei Buchdeckeln). Hier wäre das Stichwort Session-Fixation.

Da du dann schon einiges an Code zusammen hast, was auf jeder Seite eingebunden werden mss, solltest du diesen auslagern oder besser gleich alle Anfragen an ein zentrales Skript einlaufen lassen.

user_name = ""? Wie kommt es dazu?

Location-Header sind absolut zu setzen (siehe rfc 2616 Section 14.30). Location groß und nach dem Doppelpunkt ein Leerschlag.

Daneben ist noch eine Frage, ob du absichtlich Cookies erzwingst oder warum du die Session-ID bei deiner Weiterleitung nicht mitgibst.

@"RudiS":
Das Tutorial ist in dem Punkt wie gesagt ziemlich übel. Ich hab den Autor vor Monaten mit einer Liste on Verbessrungsvorschlägen angeschrieben (hauptsächlich wirklich sicherheitsrelevantes Zeug) ... keine Reaktion.

Und, eine Weiterleitung macht da mitunter schon Sinn - auch wenns hier natürlich Wurscht ist.

Basti
Basti ist offline  
Alt 09.10.2006, 21:16  
Erfahrener Benutzer
 
Registriert seit: 08.06.2004
Beiträge: 865
RudiS
Standard

@Basti: Danke für den Tipp, dann werde ich dieses Tutorial nicht mehr vorschlagen. Hast du zufällig eine Übersicht/Tutorial/Info was man bei Sessions beachten muss (Session Injection, ....)? Kann ruhig auch komplex sein, nur dass ich nicht irgendwas bei meinen Sessions falschmache, obwohl ich es auch nicht so mache, wie bei http://tut.php-q.net
Danke nochmal für die Info,
mfg RudiS
__________________
Kunst kommt von Können und nicht von wollen, denn sonst würde es ja Wunst heißen.
RudiS ist offline  
Alt 10.10.2006, 08:27  
Erfahrener Benutzer
 
Registriert seit: 03.04.2006
Beiträge: 222
&lt;Daniel&gt;
Standard

Schau dir das mal an:
http://forum.developers-guide.net/sh...5608fdc6&t=688

Gruß <3
&lt;Daniel&gt; ist offline  
Alt 10.10.2006, 10:16  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Naja, Corvin beschreibt dort ja nur die versehentliche Weitergabe der SID im Referer und die Gefahl des Mitlesend ser SID durch den "Man in the Middle". Gegen ersteres hilft ein Dereferer (Seite mit Meta-Tag-Weiterleitung ohne Session-ID), über den jeder externe Link abgewickelt wird. Letzteres ... klar, da hilft nur SSL.

Was noch?

Zusammenfassendes
http://www.westpoint.ltd.uk/advisori...nston_GSEC.pdf
http://phpsecurity.org/ch04.pdf
http://shiflett.org/articles/the-truth-about-sessions
http://phpsec.org/projects/guide/4.html

Im Einzelnen:

Session-Fixation -> bei jedem neuen Start der Session und bei jedem Statuswechsel des Benutzers (Login etc.) die Session-ID wechseln und alte Session zerstören (session_regenerate_id(true));

http://www.acros.si/papers/session_fixation.pdf
http://shiflett.org/articles/security-corner-feb2004

Session-Hijacking -> Client-Fingerprint;

http://shiflett.org/articles/security-corner-aug2004

Shared-Hosts -> Session-Daten sicher vor anderen Kunden auf dem Server abspeichern (session.save_path); Auch nötig, um mehrere Anwednungen mit unterschiedlichen Enstellungen laufen zu lassen;

http://news.php.net/php.internals/10849

register_globals -> Globale Variablen überschreiben Session-Werte! Abschalten oder gleich in Objekt kopieren und erst am Ende wieder in $_SESSION packen;
PHP-Code:
<?php
// register_globals = on

$_Session['test'] = true;
$test false;
var_dump($_SESSION['test']); // -> false
?>
Abgesehen natürlich vom "Stanard-Loch":
PHP-Code:
<?php
if ($sent 'login') {
    
$user login($username$password);
    if (
$user)
        
$login true;
}

if (
$login)
    
doSomethingOnlyAllwedToUsers();
?>
Datenverlust -> Vor jeder Weiterleitung Session explizit speichern (session_write_close())

Session korrekt beenden -> Siehe Handbuch;

Sonst noch sinng:
Session-Laufzeit explizit festlegen;
Immer erst Cookies probieren, dann erst Weitergabe der SID per Parameter und Hidden-Field;

Weitere Quellen:
http://www.phpwact.org/security/web_...ation_security
http://www.christopher-kunz.de/PHP-Security.75.0.html
http://www.owasp.org/index.php/Categ...SP_PHP_Project
http://www.sitepoint.com/print/php-security-blunders

Jo, das wars, was mir grad so einfällt.

Basti

PS:
Achso, bei CSRF-Angriffen wird die Session des "Opfers" benutzt, um mit dessen Rechten Aktionen durchzuführen. Hier sind Cookies wiederum nachteilig. Ich hab hier mal eine kleine Demo veröffentlicht - ich glaub im "Werbung"-Forum.
Basti ist offline  
 


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
Neues Login Script funzt nicht! michi174 PHP Tipps 2006 9 31.05.2006 16:42
Login script Problem Marian Datenbanken 8 30.03.2006 20:16
Login Script mit Cookies Disasterp1ece PHP Tipps 2006 2 21.03.2006 13:40
Suche Login Script PHP Tipps 2006 6 02.03.2006 11:09
[Erledigt] kurze frage zu screen in einem shell script Server, Hosting und Workstations 4 16.12.2005 21:22
login script macht pobs fadass PHP Tipps 2007 9 04.12.2005 10:53
Frage zum script PHP Tipps 2007 8 24.11.2005 22:10
Frage: Suche Fehler in diesem Script... PHP Tipps 2005-2 14 25.10.2005 19:24
popups blocken, newsletter script und frage zu db's PHP Tipps 2005-2 2 28.09.2005 07:00
Frage bezüglich eines script PHP Tipps 2005-2 5 02.08.2005 08:47
Fehlersuche ! Login Script ! PHP Tipps 2005-2 3 23.06.2005 15:06
login script spuckt PHP Tipps 2005 13 28.01.2005 16:37
Login Script Tschuu PHP Tipps 2004-2 5 12.11.2004 22:33
Kleines Prob mit Login Script PHP Tipps 2004 2 09.07.2004 01:39
Fehler im Login Script PHP Tipps 2004 3 06.07.2004 20:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php login script für einzelne kunden seiten anpassen, admin und user login script, php login script ssl

Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 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.