Guten Abend,
also mir kommt dein Code ziemlich spanisch vor.Vielleicht kannst du etwas genauer erklären, was du mit deinem Code vorhast, bzw. was passieren soll? Also zB. willst du die Nutzerdaten in einer Datei speichern? Wenn ja, wozu legst du dann ein Array an mit dem du das eingegebene vergleichst?
Desweiteren sollten die Passwörter in irgendeiner verschlüsselt bzw. gehasht sein. Aber nochmal zurück zum Anfang:
ok, jetzt hab ich deinen Gedankengang kapiert. Sorry, aber da muss man erstmal draufkommen =)
Also zunächst: so macht man es eher nicht.
Benutzer und Passwort in der PHP Datei selbst zu speichern ist keine gute Idee.
Das prinzipielle Vorgehen ist oft folgendes:
Der Nutzer füllt ein Formular aus, und sendet es ab (so wie du es gemacht hast).
In der Auswertung der eingegebenen Daten wird nun überprüft, ob ein Benutzer existiert und ob das Passwort stimmt. (entweder man fragt eine Datenbank, oder zB eine Datei, o.ä.)
Sollte das Passwort korrekt sein, kann man nun den geschützten Inhalt anzeigen.
Das macht man meistens eher mit einem include. das ganze mit fopen zu machen ist nicht sinnvoll, vlt nichtmal möglich, hab es noch nie ausprobiert.
in deinem Fall zum Beispiel
Wenn man nun mehrere Seiten hat, die alle geschützt sein sollen, muss man (um nicht immer wieder das Passwort überprüfen zu müssen) sich irgendwie merken, dass der Benutzer die Seiten sehen darf. Das macht man überlicherweise in Session-Variablen (kann man auch per Cookies machen).Code:<?php include('hansmuster123.html');
Und wenn man soweit ist, kann man dann auf jeden geschützte Seite quasi eine Art
einfügen.Code:if($benutzerOK) { //geschützt } else { echo "Access Denied"; }
Deinem bisherigen Code zu urteilen nach, ist das jetzt vermutlich etwas viel auf einmal, aber vielleicht kannst du mit den Stichworten was anfangen und dich mal dran versuchen.
Vielleicht habe ich mich aber auch komplett unverständlich ausgedrückt, dann frag einfach nach
Gruß jerry1
Ergebnis 1 bis 10 von 19
- 05.01.2010, 19:40 #1
Loginscript selbst erstellt
Hallo,
Weiss jemand was mit diesem Script nicht stimmt?(Ich bin noch nicht lange in Webprogramierung zuhause)
Die Variablen werden Mittels HTML POST versendet und funktionieren soweit einwandfrei.<?php
$vorname = $_POST["vorname"];
$password = $_POST["password"];
$datei = fopen(hansmuster123.html,r);
$benutzer = array(
"Franz"
);
$passwort = array(
"Franz" => "1.1.01"
);
if($vorname==$benutzer and $password==$passwort[$vorname]);
{
echo $datei
}
?>
Ich will eigentlich ein einfaches Loginscript erstellen.
PS: Wie ihr sehen könnt wird im if ein beliebiger Wert des Arrays benutzer abgefragt. Geht das denn so überhaupt???
- 06.01.2010, 21:43 #2Idared
- Registriert
- 02.2005
- Beiträge
- 28
- 07.01.2010, 19:28 #3Ich habe dir mit Rot einmal ausgebessert, was du sicher verändern musst. Allgemein empfehle ich immer gerne http://tut.php-q.net , ist ein super gutes Tutorial. Habe es auch dort erlernt!Code:
<?php $vorname = $_POST["vorname"]; $password = $_POST["password"]; $datei = fopen('hansmuster123.html', 'r'); $benutzer = array( "Franz" ); $passwort = array( "Franz" => "1.1.01" ); if (in_array($benutzer, $vorname) AND $password == $passwort[$vorname]) { echo $datei; } else { echo 'Kein Zugriff'; } ?>
Dein $benutzer ist ein sogennantes Array. Wenn du einmal Mathematik gehabt hast, ist dir der Begriff Matrix sicher geläufig. Ein Array hat eine sehr ähnliche Funktionsweise. Du musst also prüfen, ob der Vorname in dieser Matrix vorhanden ist. Dies geschiecht mit in_array().
Dies ist eine nicht sehr sichere Variante, die du da aufgebaut hast, normalerweise würde man das Passwort noch verschlüsseln, aber das lasse ich mal so sein hier.
- 08.01.2010, 17:37 #4
Ich habe glaube ich in deinem Script noh ein Fehler gefunden und zwar:
Du hast die Beiden vertauscht.<?php
$vorname = $_POST["vorname"];
$password = $_POST["password"];
$benutzer = array(
"Franz"
);
$passwort = array(
"Franz" => "1.1.01"
);
if (in_array($vorname, $benutzer) AND $password == $passwort[$vorname]) {
echo "hallo";
} else {
echo 'Kein Zugriff';
}
?>
Mfg
Tim Rohner
- 08.01.2010, 17:55 #5
Was ist eigentlich an meinem Loginscript unsicher?
Und wie kann ich es jetzt machen, dass sich PHP die Variabeln merkt und sie an eine Weitere Seite schickt? Reicht es wenn ich vor jede Seite diesen Anfang setze...
...oder muss ich jedes mal alle Arrays neu eintragen?<?PHP
$datei = "<html>
hallo
</html>";
if (in_array($vorname, $benutzer) AND $password == $passwort[$vorname]) {
echo $datei;
} else {
echo 'Kein Zugriff';
}
?>
- 08.01.2010, 20:26 #6
PHP oder der Apache hat einen Fehler, PHP fällt aus oder Apache meint, .php-Dateien müssen nicht mehr an den Interpreter gesendet werden.
Folge: Es könnte der Quellcode ausgegeben werden. Und in deinem Fall direkt das Passwort bzw. alle zugehörigen (gesicherten) Seiten.
Und ja, ich habe die beiden vertauscht. Unabsichtlich.
- 25.01.2010, 10:31 #7
Na hallo,
Ich bin mir nicht sicher ob du das genannte Tut bereits angeschaut hast.
Persönlich empfehle ich dir jedoch folgenden Aufbau für deine Seiten (nur mal als Einstieg, lässt sich beliebig ausbauen):
index.php (enthält Abfragen und baut deine Site zusammen)
./module/blabla.html
Nun kannst du in der index site nur deinen php Code schreiben. Die Abfrage nach dem Passwort und die Abfrage nach den Rechten (falls eingeloggt). Macht alles viel übersichtlicher.
Falls dein User nun Rechte hat, dann baust du dir aus einer URL die so aussieht den include zusammen: www.gaga.de/index.php?module=blabla
Nun kannst du mit der get variabel den Parameter module auslesen und diesen in deinen include einbauen.
$site_module = $_GET["module"];
include("./module/".$site_module.".html");
Mit dieser Konstellation greift der User immer auf deinen index.php zu... Dadurch brauchst du die Überprüfung nur einmal zu programmieren (der Rest wird mittels der URL immer selbst zusammengesetzt).
Betreffend Daten speichern empfehle ich dir http://ch.php.net/manual/de/book.session.php und die Stichworte session_start / ¨$_session[""] / session_destroy...
Viel Glück und bei Fragen ansonsten auch per PN...
Gruss"... sehr dunkel die andere Seite ist... seehhhhr dunkel"
"Sei still Yoda, und iss deinen Toast!"
- 25.01.2010, 20:18 #8
Anstatt einfach $ste_module = $_GET['module"] und dann einbinden empfehle ich noch eine Abfrage durchzuführen, ob die Datei überhaupt vorhanden ist und basename() um wirklich keinen Pfad dabei zu haben. Viel sicherer!
x-trem sicher wäre noch die Eingrenzung nach erlaubten und unerlaubten Schemen, aber das wäre zu viel für den Moment.
- 27.02.2010, 08:50 #9Doppelter Prinzenapfel
- Registriert
- 11.2007
- Beiträge
- 442
Code:$vorname = $_POST["vorname"];
sowas ist nicht besonders sicher. Alle Variabeln die von einem Benutzer kommen könnten auch manipuliert sein oder gar php code enthalten daher solltest du diese bevor du die Variabeln weiter verwendest auf jeden Fall überprüfen!
Und noch nen kleiner Tipp, verwerfe deine Variante die ist nämlich nicht wirklich schön gelöst. Mach das wie oben schon gesagt wurde lieber mit Sessions und Cookies etc. dazu gibt es jede Menge Codes und Tuts im Internet einfach mal bei Google suchen!"Die Schweinegrippe ist wie das iPhone, zuerst ist es total schwer dranzukommen und danach hat es jeder."
-Oliver Pocher-
- 27.02.2010, 09:48 #10
Und noch ein Tipp, der mir gleich ins Auge gesprungen ist:
Das ist gefährlich hoch 10, 2 Variablen nur duch einen Buchstaben unterscheidbar zu halten!Code:$password==$passwort...
Benenne das lieber in $possible_logins oder so um, und das sagt dann auch den Inhalt noch besser aus.
Aber es stimmt schon, lieber das Passwort verschlüsselt abspeichern, dann in ner extra Datei oder von mir aus auch direkt im Skript. Es gibt da verschiedene Möglichkeiten, zB. md5.
Ähnliche Themen
-
Mac erstellt Adressbucheinträge
Von sesamkorn im Forum OS XAntworten: 0Letzter Beitrag: 02.09.2009, 23:37 -
brauche hilfe - wer erstellt HP ?
Von proteus im Forum Web-ProgrammierungAntworten: 0Letzter Beitrag: 26.10.2007, 12:58 -
Womit erstellt ?
Von Stussy-23 im Forum Web-ProgrammierungAntworten: 4Letzter Beitrag: 14.06.2007, 16:33 -
Wie erstellt man Quicktime VRs?
Von plaetzchen im Forum Grafikbearbeitung & LayoutAntworten: 2Letzter Beitrag: 05.01.2006, 12:56


Zitieren



