Forum
Tipps
News
Menu-Icon

Loign mit session PHP

Hallo
Ich wollte jetzt mal ein Login mit sessions erstellen, so nun habe ich noch ein paar Problem.
Nachdem ich mir etliche Scripts/ Tutorials angeschaut habe, bin ich zum Entschluss gekommen hier zu fragen, denn es gibt dort ja mehrere Herangehensweisen und mein Script sollte zu 100 % sicher sein.

1.Hat jemand einen gutes tutorial, wo der Login sicher ist?
2.Wie sicher kann  das überhaupt sein ?
 Ich habe scripts gesehen, wo man z.B. die Session ID in eine tabelle einer datenbank  gespeichert hat.
  Ist das sinnvoll?
Dann habe ich wieder welche gesehen wo nur die Benutzer-Id aus der user-tabelle an die url gehängt wurde.
Also aber so was kann man doch ziemlich schnell erraten oder ?
User_id=1 z.b dürfte in sehr vielen Systemen der administartator sein.

Also was ist hier das sinnvollste?


Und noch was:

Also bei mir sollen die user unterschiedlich rechte und ränge haben.

Also die datenbanktabelle  so:

Tabelle: User
    id
    name
   passwort(md5)
   email
freigeschaltet (TRUE oder FALSE)
   ect
  raenge
  rechte


So , also ich nehme jetzt mal mein Beispiel :
Von einer Zeltlagerseite.
Dort gibt es

Gruppenleiter
Gruppenkinder
Lagerleiter

Das wären dann die ränge ,

die rechte wären dann:
user
moderator
admin

so also jeder user hat somit einen rang und ein recht.
Ist das so denn sinnvoll gewählt?Also die richtige Vorgehensweise?
Folgendes soll damit geleistet werden:
Gruppenleiter sollen einen eigene bereich haben,
moderatoren sollen etwas ändern können.

Also ich denke das ist richtig so, oder?
Ich will nur nicht schon falsch anfangen, dann hat man wieder alles umsonst gemacht

Gruß
Der_webi


Antworten zu Loign mit session PHP:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo |

Das sind echt viele Fragen für einen Thread ;D

Also vorweg: ich habe kein Tutorial. Wenn du aber schon viele angeschaut hast, dann nimm dir doch die besten Ansätze aus jedem und bau dir etwas eigenes.

Zitat
2.Wie sicher kann  das überhaupt sein ?

Vergiss die 100%ige Sicherheit. Wenn es die gäbe bzw. wenn Programmierer diese realisieren könnten, würden keine Pentagon-Rechner und andere Nettigkeiten geknackt werden. Zudem möchte ich - bitte nicht übel nehmen - anzweifeln, dass dein Anliegen eine Sicherheitsstufe benötigt, die mit den sichersten Systemen der Welt auf einer Stufe steht ;)

Session-Daten in einer Datenbank speichern ist eine schöne Sache und vor allem dann nützlich, wenn es um Geschwindigkeit geht. Normalerweise werden die Session-Daten in Dateien auf dem Server gespeichert. Betreibst du aber sowas wie einen stark frequentierten Online-Shop, dann lohnt sich die DB-Variante.

Eine an die URL angehängte User-ID hat damit erstmal nichts zu tun. Das kann sonstwas für Gründe haben. Und das reine Wissen um die Nutzer-ID des Admins bringt dir eigentlich nicht viel. Du hast ja deswegen noch kein Passwort ;)
Allerdings ist es in den meisten Fällen nicht nötig, eine User-ID an die URL anzuhängen. Es gibt ja Session-Variablen.

Dein Rechtesystem sieht soweit auch ganz brauchbar aus. Allerdings würde ich eine Tabelle "Benutzergruppen" (oder so) anlegen, wo der Name der Gruppe sowie deren Rechte enthalten sind. Wenn du diese Angaben für jeden Nutzer separat speicherst, kommst du in Teufels Küche - von der Redundanz ganz abgesehen.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Danke

Das sind echt viele Fragen für einen Thread ;D

Jap aber alle zum selben Thema  ;D;D;D
daher  ein Thread

Zur sicherheit:
Ja also so sicher wie z.b ebay oder so muss das natürlich nicht sein, aber ich dachte, da an sowas wie hier im forum oder so ;D;D
Naja auch wohl etwas kleiner ;D

So um noch mehr fragen zu stellen.

Also bis jetzt läuft das alles so bei mir:
function logged_in()
{
    $sql="SELECT UserId
    FROM users
    WHERE UserSession='".session_id()."'
    LIMIT 1";
    $result= mysql_query($sql);
      return ( mysql_num_rows($result)==1);
}

function login($userid)
{
    $sql="UPDATE users
    SET UserSession='".session_id()."'
    WHERE UserId=".$userid;
     mysql_query($sql);
}
## auf der index.php
####################
if (!logged_in())
{

echo 'inhalt für nicht user';
}
else
{
inhalt für user
}

#beim login
###################

if (isset($_POST['login']))
{
    $userid=check_user($_POST['username'],       $_POST['userpass']);
    if ($userid!=false)
        {
        login($userid);
         } 
          else
          {
         echo 'Ihre Anmeldedaten waren nicht korrekt!';
          }
}

##check user ist nur sowas zum user checken halt^^
##alsounwichtig für die session

So also hier wird dann in die datenbank tabelle users die session id hereingetragen.

So jetzt mal ganz stumpf:
Ist das eine gute lösung?

 achja die index.php ist eine datei wo alles gemacht wird, also navigation und so
also steht dann oben auf der index,php
session_start()
dann wird halt gekuckt ob der login richtig ist und so.
und wenn ich das dann halt auf einer seite brauche. die included wird mit index.php?p=forum

dann wird z.b forum.php includet und erscheint also auf der html seite, in dem teil wo es hin soll ;)

auf dieser seite soll für user dann z.b ein anderer teil sein als für gäste


Dein Rechtesystem sieht soweit auch ganz brauchbar aus. Allerdings würde ich eine Tabelle "Benutzergruppen" (oder so) anlegen, wo der Name der Gruppe sowie deren Rechte enthalten sind. Wenn du diese Angaben für jeden Nutzer separat speicherst, kommst du in Teufels Küche - von der Redundanz ganz abgesehen.

also das mit den rechten, nicht das mit den rängen(gruppenleiter.leitungsteam)?



vielen Dank
der_webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Zitat
also das mit den rechten, nicht das mit den rängen(gruppenleiter.leitungsteam)?

Rechte und Gruppen sind in meinen Augen logisch verknüpft. Es würde sich anbieten, beide zusammen in eine Tabelle zu schmeißen - weitere Normalisierung ist denke ich nicht notwendig.

Was deine Sessions betrifft: ich glaube, du machst da einen grundlegenden Fehler. Wenn du deine Session-Daten statt in Dateien lieber mit der Datenbank verwalten willst, dann musst du den ganzen Session-Handler umschreiben (siehe Funktion session_set_save_handler())! Beispiele dazu findest du sicher bei php.net oder sonstwo im Netz, bestimmt auch komplette Implementierungen für Datenbanken.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo

Was deine Sessions betrifft: ich glaube, du machst da einen grundlegenden Fehler. Wenn du deine Session-Daten statt in Dateien lieber mit der Datenbank verwalten willst

session daten in datenbank =
session_id in datenbank speichern, wenn ich das also alscookie  spiechern würde, wo wäre der unterschied?
Was meinst du mit Dateien?


Gruß
der_webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
session daten in datenbank =
session_id in datenbank speichern

Auch, aber nicht nur. Die Session-ID dient nur zur Identifikation der Session. Die Session-Daten bestehen aus weit mehr. Oder was meinst du, warum es eine Session-ID gibt? Diese ID allein bringt dir doch rein gar nichts.


wenn ich das also alscookie  spiechern würde, wo wäre der unterschied?

Ich denke, dass du momentan gegen den Baum läufst, weil du die Session-Problematik nicht ganz verstanden hast. Ist nicht böse gemeint, aber man erkennt das an deinen Fragen. Und damit dein Projekt auch erfolgreich wird, solltest du dir nochmal paar Grundlagen dazu reinziehen :)


Was meinst du mit Dateien?

Ich habs bereits geschrieben: Sessions werden, sofern man nicht programmiertechnisch eingreift, in Dateien gespeichert.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ich denke, dass du momentan gegen den Baum läufst, weil du die Session-Problematik nicht ganz verstanden hast. Ist nicht böse gemeint, aber man erkennt das an deinen Fragen. Und damit dein Projekt auch erfolgreich wird, solltest du dir nochmal paar Grundlagen dazu reinziehen

ja das finde ich auch nicht böse, weil ich das selbst ganz gut merke, das ich überhaupt noch keinen "Schnall" habe.

Nur mal so , was ich bis jetzt verstanden habe:

eine session wird gestartet
in diese session werden jetzt daten reingeschrieben, z.b benutername, email  ect.
so nu kann ich aus dieser session die daten abfragen.

richtig? ;D ich glaube schon.

Naja ich schon mir das ganze hier noch mal an
http://tut.php-q.net/

wenn ich dann noch fragen habe melde ich mich nochmal.

vielen dank für deine geduld
der_webi

 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
eine session wird gestartet
in diese session werden jetzt daten reingeschrieben, z.b benutername, email  ect.
so nu kann ich aus dieser session die daten abfragen.

richtig? ;D ich glaube schon.

Japp, richtig! :)

Es ist aber vielleicht für dich momentan interessanter und auch wichtiger, die Technik des Speicherns einer Session herauszufinden, und wie eine Session mit einem Nutzer verknüpft wird. Dann wird dir nämlich auch klar, was Cookies damit zu tun haben, und warum die reinrassige DB-Speicherung von Sessions nicht mit dem Schreiben einer Session-ID in die Datenbank abgegolten sind.

Nur mal so als Anregung: Erzeuge mal ganz einfach eine Session bei dir, lege ein paar Session-Variablen an und schaue dann im entsprechenden Verzeichnis mal nach den Session-Dateien. Einfach mal öffnen und gucken, was so drin steht ;)

Hinweis: Bei einer normalen PHP-Installation findest du den Session-Ordner unter ./PHP/sessiondata, bei XAMPP unter ./xampp/tmp.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Danke nochmal
Ich probiere das gleich mal aus.

Ist das denn sicher mit COOKIES zu arbeiten?
Weil jeder hat ja auch nicht die Cookies aktiviert .

gruß
der_webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Cookies sind eigentlich erste Wahl bei der Arbeit mit Sessions. Hat der Nutzer Cookies deaktiviert, wird's mitunter schwierig. Zwar kann man in der php.ini folgende Einstellung setzen:

session.use_only_cookies = 0

Das würde bewirken, dass bei deaktivierten Cookies die Session-ID an die URL angehängt wird. Wird aber nicht allzu gern gemacht, aus Sicherheitsgründen eben.

Aber wenn man nicht Herr über den Server ist, kann man das natürlich nicht beeinflussen.

greez 8)
JoSsiF


« 2 Bilder verknüpfenUS-Gericht entscheidet gegen Mithaftung für Inhalteanbieter »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Login/Logout
Als Login, beziehungsweise Logout wird das An- und Abmeldung vom Zugriff auf geschützte Daten oder Rechner bezeichnet. Diese Methode wird meistens genutzt um private...

AppleScript
AppleScript ist eine Programmiersprache von Apple für Skripte und Programme auf Systemebene. Im Gegensatz zu den Unix-Shellscripts, die seit OS X ebenfalls mögl...

Javascript
JavaScript ist eine weit verbreitete Skriptsprache, die ursprünglich von Netscape für das DOM-Scripting für Webseiten entwickelt wurde. Sie hat sich seitde...