• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Sicherer Passwortschutz mit PHP und JS

Status
Für weitere Antworten geschlossen.

Yogu

Neues Mitglied
Hallo erstmal,

Ich wusste nicht, wo ich es posten soll, hab aber gedacht, hier passt es besser:

Ich will ein sicheres Login-Formular mit den FORM-Tags von HTML erstellen, das ganze mit JavaScript auswerten (z.B. auf leere Felder), die Inhalte dann irgendwie an PHP schicken, und von da aus dann die weitere Bearbeitung machen.

HTML:
<html>
<head>
  <title>A Secret Homepage</title>
  <script type="text/javascript">
    function login()
    {
      // Irgendein JS-Programm
      document.write("<? /* irgendein PHP-Programm */ ?>");
    }
  </script>
</head>
<body>
  <form name="loginfrm">
    Username: <input name="user"><br>
    Password: <input name="pass"><br>
    <input type="button" name="send" onclick="javascript:login()" value="Login">
  </form>
</body>
</html>
Irgendwie so

PS: Warum macht der eigentlich so eine komische Code-Ansicht?
 
Damit man es besser lesen kann (präformatierter Text incl. Synthaxhighlighting)

Das meinte ich eigentlich nicht, sondern dass der fast alles in eine Zeile schreibt. Ich hab eigentlich für jeden Abschnitt eine neue Zeile eingegeben.

Bsp:
<html>
<head>
<tilte>Something</title>
</head>
<body>
some text
</body>
</html>

Aber darum geht es mir eigentlich nicht. Fands nur komisch.

Eigentlich wollte ich wissen:

:arrow: (siehe oben)
 
Wieso mit JS?
Das ist nur umständlich. Mach es mit PHP und MySQL. Speicherst Namen in die Datenbank und das Passwort verschlüsselst du mit einer Checksumme (MD5).

Dann fragst du ab, und dann, wenns stimmt, startest du ne Session.



Mfg, matibaski
 
Wieso mit JS?
Das ist nur umständlich. Mach es mit PHP und MySQL. Speicherst Namen in die Datenbank und das Passwort verschlüsselst du mit einer Checksumme (MD5).

Wenn das so einfach geht, auch gut. Ich dachte nur, zum Auswerten der Eingabefelder wird JavaScript benötigt. Geht das denn irgendwie mit PHP?

Ich würde mich auch sehr über ein Beispiel freuen ;-)
 
ja das geht 'irgendwie' mir PHP

Hier hast du ein kleines Beispiel
PHP:
<?php
session_start();
$password = 'password'; //Das Passwort das eingegeben werden soll
if(isset($_POST['pass']) && $_POST['pass'] == $password)
  $_SESSION['login'] = true;
if(!isset($_SESSION['login']) || $_SESSION['login'] != true)
{
  ?>
  <h3>Passwort benötigt!</h3>
  <form action="" method="post">
  Passwort: <input type="password" name="pass" value=""><br>
  <input type="submit" name="sub" value="einloggen">
  </form>
  <?php
}
?>
Bei diesem Beispiel definierst du einmal das Passwort das angegeben werden muss in der Variable $password. Hat ein Benutzer das Formular für das Passwort abgesendet und das Passwort stimmt, so wird die $_SESSION['login'] auf true gesetzt. Nun kannst du überall mittels
PHP:
if($_SESSION['login'] == true)
prüfen, ob der Benutzer eingeloggt ist.
Sollte er nicht eingeloggt sein spricht das Script die 2. if-schleife an und gibt das Formular zum eintragen des Passwortes aus.

greez
 
Also hier noch eine Schritt für Schritt Methode:

Man erstellt ein Formular mit dem Passwortfeld und dem Login-Feld:
HTML:
<form name="login" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
Passwort:<br />
<input type="password" name="passwort" value="" /><br />
<br />
<input type="submit" name="login" value="Login" />
</form>
Lass dich bei action= nicht durch den PHP Code irritieren. Es wird einfach nochmals an dieselbe Datei geschickt, wenn man auf Login geklickt hat.

Nun muss man prüfen, ob der Benutzer schon angemeldet ist. Wenn nein, dann erscheint der obige Code. Wenn doch, erscheint der Inhalt, der geschützt ist, und man erstellt eine Session.

Also so:
PHP:
<?php
session_start(); // Die Session muss immer in der 1. Zeile stehen
#####################
$passwort = "deinpasswort"; // Hier dein Loginpasswort
#####################

if(!isset($_REQUEST['login'])) // Wenn nichts abgeschickt wurde, bzw. wenn er nicht angemeldet ist,
{
 // Formular ausgeben
 echo' 
 <form name="login" method="post" action="' . $_SERVER['PHP_SELF'] . '">
 Passwort:<br />
 <input type="password" name="passwort" value="" /><br />
 <br />
 <input type="submit" name="login" value="Login" />
 </form>
 ';
}
// Wenn doch, dann prüfen ob das Passwort stimmt.
elseif($_REQUEST['passwort'] == $passwort)
{
 $_SESSION['login'] == true; // Session setzen.
?>
<!--
Hier kannst du deinen HTML Code einfügen, oder Text, usw...
Achte darauf, dass wenn du eine Weiterleitung zu einer anderen Seite machst, dass du die Session abfragen sollst, oder wenn du eine einfügst.
-->
<?php
}
// Wenn das Passwort nicht stimmt,
elseif($_REQUEST['passwort'] !== $passwort)
{
 echo'Das Passwort ist falsch!'; // Meldung herausgeben
}
?>
Ich hoffe, jetzt ist es dir klar.


MfG, matibaski


edit:
Habe dentext nicht ganz gelesen von Frank. Also die Session wie oben Abfragen

@Frank:
Es gibt keine if-Schleife! Das nennt man eine if-Abfrage :D


MfG, matibaski
 
Geht das eigentlich auch, wenn ich für nen Bestimmten Nickname nen bestimmtes Passowrt zuweise?

Wenn ja wie, könnt ihr mir Bitte helfen?

Mit Beispiel wäre nett!

Marcel
 
Bei mir kommen folgende Fehlermeldungen:

PHP:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output startet at C:\Programme\xampp\htdocs\Login.php:8) in C:\Programme\xampp\Login.php on line 9
 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output startet at C:\Programme\xampp\htdocs\Login.php:8) in C:\Programme\xampp\htdocs\Login.php on line 9
 
 
'} elseif($_REQUEST['passwort'] == $passowrt) {§_SESSION['login'] == true; ?>

Kann mir da jemand helfen?

habe den Code von matibaski genommen!

Und wie muss die automatische Weiterleitung aussehen, wenn das Passwort richtig ist?
 
Zuletzt bearbeitet:
Hast du den gesamten oder nur Teile davon genommen?
Denn ich sehe keinen Fehler in matibaski's Code. Sollte alles stimmen.


LG script-man
 
jap habe den genommen!

Will ja auch die möglichkeit haben, das es mehrere Versionen an Passwörtern gibt, bzw. mit Nutzername einbauen!

So das ein Nutzername nur ein Passwort hat!
Weisste wie?

Kannste mir sowas mal schreiben?
Und mit der meta-Weiterleitung, die geht auch nicht richtig!
 
Also ich würde, wenn es nicht funktioniert, mit ob_start(); und ob_end_flush(); arbeiten.

Bei PHP.net gibts eine gute Erklärung dazu:
PHP: ob_start - Manual & PHP: ob_end_flush - Manual

Wenn du das durchgelesen hast, kannst du deinen, oder matibaski's, Code abändern, indem du ob_start() und ob_end_flush() verwendest.

Ich hoffe, ich konnte dir helfen.


LG script-man
 
Ich habe jetzt was anderes gemacht und zwar mit

PHP:
if( ($username="name1" AND $passwort="passwort1")
                                             OR
  ($username="name2" AND $passwort="passwort2") )

Warum geht das nicht mit dem OR?

Oder hat jemand eine andere Lösung?
 
Informiere Dich mal über Operatoren und ihre Funktion.
PHP:
= != == ;ugl
Kleiner Tipp:
PHP:
if( ($username="name1" AND $passwort="passwort1")
in dieser Zeile tust Du nichts anderes als $username und $passwort einen wert zuzuweisen. Deine Bedingung ist also immer TRUE
 
Ähm danke, aber kannst du mir das mal bitte näher erklären, weil ich habe von PHP keine Ahnung!

Was muss ich machen, damit das funktioniert!
 
Das sieht etwa so aus, wenn du checken willst, ob $user1 mit dem user1 übereinstimmt:
PHP:
if($user1 == "user1" AND $passwort1 == "passwort1") {
// Dann hier was
}
LG script-man
 
Also ich stelle mich eindeutig zu dumm dafür an!
Gibt es nicht ey :evil:

uff reg!

Ich stelle jetzt den ganzen PHP-Code rein!

PHP:
<html>
<head>
<title>Login</title>
<meta name="author" content="Marcel">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<?php
$username = $_POST["username"];
$passwort = $_POST["passwort"];
 
if($username=="user1" AND $passwort=="passwort1")
                                  OR
  ($username=="test" AND $passwort=="test")
 
   {
   echo "Zugriff erlaubt";
   }
else
   {
   echo "Zugriff fehlgeschlagen";
   }
?>
 
 
</body>
</html>
 
Da ist schonwas falsch. Ich wundere mich, wieso ich das dort oben nicht gesehen habe :)

Also so würde es richtig sein. Gibt aber mehrere Möglichkeiten:
PHP:
 <html>
<head>
<title>Login</title>
<meta name="author" content="Marcel">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<?php
$username = $_POST["username"];
$passwort = $_POST["passwort"];
 
if($username=="user1" AND $passwort=="passwort1") { echo "Zugriff erlaubt"; }
elseif($username=="test" AND $passwort=="test";) { echo "Zugriff erlaubt"; }
else {
 echo "Zugriff fehlgeschlagen";
 }
?>
 
 
</body>
</html>
LG script-man

edit:
Ich rate es dir aber an, mit einer Datenbank zu arbeiten. Wer hat schon lust, immer alles einzeln einzutragen und den Code zu ergänzen?
Schlussendlich, wenn du 100 Mitglieder hast, dann hast du einen Bombencode, und musst für jedes Mitglied einen neuen Code schreiben.

LG script-man
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben