adminbereich
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
augenblick
bruder
code
eingabe
empfehlen
gefahr
header
http
kollision
krieg
login
methode
punkt
richtigen adresse
session
sinn
system
url
verwenden
video
-
guten abend allerseits
ich habe wiedereinmal zeit gefunden, meine website weiterzuentwickeln und möchte nun einen adminbereich erstellen, in dem ich als admin beiträge verfassen kann, änderungen vornehmen kann etc.
ich habe in meinem website-nachschlagewerk ein bisschen nachgeblättert und unter PHP den Punkt Sessions gefunden.
nun wollte ich fragen, ob ich da an der richtigen adresse bin.
mfg nicolas-k -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
vielen dank für die videos, werde sie morgen lesen weil ich jetzt noch ausgehe :D
ich habe anhand eines beispieles aus meinem nachschlage-werk folgenden code produziert
login.php
<?php if($_POST["submit"]=="login"){ if($_POST["admin_user"]=="nicolas-k" && $_POST["admin_password"]=="goswitzerland") { session_start(); $_SESSION["access"] ="open"; $_SESSION["name"] = "nicolas"; header("Location: about.php?" . session_name() . "=" . session_id()); } else { print("Die Login-Daten waren leider falsch!"); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <form action="galerie.php" method="post" enctype="multipart/form-data"> <p>USER:<input type="text" name="admin_user" /></p> <p>PASSWORD:<input type="password" name="admin_password"></p> <p><input type="submit" name="submit" value="login"/></p> </form> </body> </html>
about.php
<?php session_start(); if (isset($_SESSION["access"]) && $_SESSION["access"] != "open") { header("Location: http://www.google.ch/"); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <h1>willkommen im geschützten bereich</h1> </body> </html>
wenn ich das richtig verstehe, sollte man die seite about.php nur als eingeloggter nicolas-k password goswitzerland zu sehen kriegen!
jedoch kriegt auch z.b. mein bruder den inhalt der seite about.php zu sehen.
was mache ich falsch?
-
Bei deinem Bruder wird in der Session nix mit "access" drinstehen.
isset($_SESSION["access"])
ergibt also immer false.
Die Kombination mit AND
(isset($_SESSION["access"]) && $_SESSION["access"] != "open")
ist logischerweise also auch falsch.
Daher geschieht keine Weiterleitung.
Stattdessen müsstest du schreiben:
(!isset($_SESSION["access"]) || $_SESSION["access"] != "open")
oder auch
(!(isset($_SESSION["access"]) && $_SESSION["access"] == "open"))
Zu der Umformung siehe De Morgan'sche Gesetze
lg Vex
Beitrag zuletzt geändert: 28.7.2012 20:44:36 von vexi -
manchmal sollte ich wohl lieber ne pause machen damit nicht soviele schluder fehler entstehen...
vielen dank da hätte ich wohl jetzt noch lange gesucht...
was ich aber immer noch nicht verstehe ist, dass die session variablen gar nicht weiter gespeichert werden!
also mich leitet die about.php seite trotz login automatisch weiter ....
UPDATE: habe herausgefunden dass in meiner php.ini stand:
session.use_only_cookies=1
wenn dieser wert steht, wird die session id nicht über die url von session_start() übernommen
Beitrag zuletzt geändert: 29.7.2012 20:06:24 von nicolas-k -
Du könntest den Adminbereich auch per .htaccess schützen.Das ist einfacher als es per PHP mit den ganzen Sessions und so zu machen. Hier gibts nen Generator dafür: http://www.onlyfree.de/generatorhtaccess.php
Beitrag zuletzt geändert: 30.7.2012 13:13:36 von germanplayking -
Ich schütze meinen Login immer mit beiden Methoden!
.htaccess
&
Sessions
Ich würde Dir empfehlen das Passwort noch mit MD5 zu verschlüsseln!
lg alex -
Jop, benutze Sessions, verschlüssel die Passwörter mit md5. Wichtig: Direkt bevor du irgendwas mit dem Passwort machst verschlüsseln und nur verschlüsselte PWs übertragen oder für Vergleiche benutzen - niemals unverschlüsselte.
$PW = md5($_POST['eingabe']);
Dann noch ein Hinweis zu session_start(); - ich vermute du wirst das ganze auf Cookies basierend aufbauen. Dann solltest du wissen, dass session_start() zu allererst vor irgendetwas anderem aufgerufen werden muss.
"Um Cookie-basierte Sessions zu verwenden muss session_start() aufgerufen werden, bevor irgend etwas an den Browser geschickt wird." von http://de3.php.net/manual/de/function.session-start.php.
Bau dir also eine index.php wo ganz oben ein session_start() steht, über die du dann die jeweils benötigten Dateien über GET referenziert einbindest include($site . ".php"); und dann hast du ein gut funktionierendes System. -
md5 ist unsicher, weil Kollisionen einfach und schnell zu berechnen sind.
SHA512 ist sicherer, und ähnlich einfach zu verwenden.
$PW = hash("sha512",$_POST['eingabe'])
-
Ja ok das ist richtig MD 5 gilt als unsicher ich nutze es immer noch aber jawol!
SHA-224/256/384/512
Die Zahl steht für die Länge des Hash-Wertes in Bit.
Da der Hash somit umfangreicher wird, sinkt die Gefahr von Kollisionen.
Diese Methode des Hashings ist daher für das Speichern sicherer Passwörter zu empfehlen.
<?php
// Erzeugung von Hash Passwort
$password = "deinPW";
$hash = hash('sha256', $password);
echo $password . ' : ' . $hash;
// Prüfung
$hash = get_user_hash($_POST['username']); // aus db laden
if ($hash == hash('sha256', $_POST['password'])) // Prüfung ob Passwort stimmt
{
echo "PW Stimmt";
}
?> -
@ nicolas-k
wenn Du dir dieses Tuto
http://www.php-resource.de/tutorials/tutorial,38,Login-mit-Hilfe-von-PHP-und-mySQL,1.htm
durchliest
und Dir
"session_start(), inculde_once(..), serialize(...)"
erarbeitest (was glaube ich sehr schnell bei Dir geht ;) ), dann hast Du ein "login-System", welches sehr viele nutzen, aber deshalb muß es ja nicht schlecht sein.
@Rest
Die Diskussion über die Sicherheit von MD5 und sha512 halte ich für unpassend im Sinne der Fragestellung!
Auch auf die Gefahr hin, daß diese Antwort mal wieder wegen "Unghörlichkeit" gelöscht wird, es bringt nicolas-k im Augenblick nicht weiter...
-
Das Thema wurde ausreichend behandelt (Tutorials, Codesnippets), deshalb mach ich hier mal zu.
Bei Rückfragen einfach eine PN an mich. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage