[PHP] Erst Passwort dann Inhalt anzeigen...?!

smaak

Well-known member
7 Mai 2006
2.811
357
Moinsen!

Ich wollte mal Fragen ob es möglich ist, z.B. eine admin.php mit einem passwort zu versehen und erst nach der richtigen eingabe den inhalt der admin.php anzuzeigen. Also es sollte quasi eine "einDatei"-Lösung sein. Sprich die Abfrage und der Inhalt in der gleichen admin.php

Für Antworten oder besser noch einem Code wäre ich überaus dankbar! Wenns gehen sollte auch noch ohne Datenbank, da es eh nur einen User geben wird und der weder nen Namen noch ne ID oder so haben wird. Das PW kann man ja in der Datei selber festlegen!

Danke! :ugly:

PS: Ich habe schon gegooglet und die Suche benutzt, aber immernoch nicht das gefunden was ich suche! :(
 
Klar geht das, auch wenns natürlich keine schöne Lösung ist, das Passwort in der Datei festzulegen.
Wenn mit $_REQUEST kein Passwort übergeben wird oder es das falsche ist, zeigst du ein Loginformular an, ansonsten halt das was die admin.php tun soll.

PHP:
if(isset($_REQUEST["pwd"]) && $_REQUEST["pwd"] == "blablubb")
{
        // adminkram anzeigen
}
else {
       echo 'Bitte einloggen <form>...</form>';
}

So in der Art.
Kannst natürlich auch einfach per htaccess schützen, ist im Zweifelsfall einfacher und sicherer als so ne Lösung.
 
Grob skizziert ginge das so:
PHP:
<?php
  session_start();

  // Überprüfen, ob Admin noch nicht eingeloggt
  if (empty($_SESSION['admin'])) {
    // Formular anzeigen
    if (empty($_POST)) {
      showLoginForm();
      die;  // Wichtig!! Skript beenden!
    }
    else 
    // Formular auswerten
    {
      if ($_POST['password'] == 'strenggeheim') {
        $_SESSION['admin'] = time();
      } else {
        echo "Passwortfehler";
        die;  // Wichtig!! Skript beenden!
      }
    }
  }

  showAdminSite();
?>
 
PHP:
<form action="admin.php" method="post">
Passwort:<input type="password" name="passwort">
<input type="submit" value="Login">
</form>

<?php
$password = $_POST["passwort"];
 
if($password == "deinpasswort")
{
  echo "Du bist eingeloggt";
}

?>
 
Ich würde dir aber dann raten das Passwort nicht im cleartext zu lassen sondern mit einem hash algorithmus vorher bearbeiten ;) ...
Beispielsweise $password = md5(str_rot13(md5($_POST['pass'])));

Grüße,
artemissays
 
Code:
<form action="admin.php" method="post">
Passwort:<input type="password" name="passwort">
<input type="submit" value="Login">
</form>

<?php
$password = md5(str_rot13(md5($_POST['meinpasswort'])));

if($password == "deinpasswort")
{
  echo "Du bist eingeloggt";
}

?>

Also würde das ganze dann so aussehen oder?

Und noch ne Frage: Der Inhalt der Admin.php kommt dann quasi zwischen die Klammern in der jetz das echo "Du bist eingeloggt" steht oder?

Vielen vielen Dank schonmal an alle!

PS: per .htaccess geht nicht, weil die Datei wie alle anderen im includes-Ordner liegt und dann würde ich ja das ganze Verzeichnis sperren!
 
Nein, du musst das Passwort in der If-Anweisung natürlich auch erst mit den Algorithmen verschlüsseln, also müsste das so aussehen:
PHP:
<form action="admin.php" method="post">
Passwort:<input type="password" name="passwort">
<input type="submit" value="Login">
</form>

<?php
$password = md5(str_rot13(md5($_POST['meinpasswort'])));

if($password == md5(str_rot13(md5("meinpasswort"))))
{
  echo "Du bist eingeloggt";
}

?>
 
Jetzt hab ich ein Prob.!

ich include meine Seiten (index.php?seite=admin) etc. und wenn ich das passwort eingebe, will der auf ne andere Seite oder so, kommt aber nur "Objekt nicht gefunden"! Habe jetzt den Code den Hotwave gepostet hat.

Ich und php, ich glaube ich sollte es lassen! Sry Jungs, aber ich brauche noch nen kleinen Tipp! :roll:
 
PHP:
<form action="index.php?seite=admin" method="post">
Passwort:<input type="password" name="passwort">
<input type="submit" value="Login">
</form>

<?php
$password = md5(str_rot13(md5($_POST['meinpasswort'])));

if($password == md5(str_rot13(md5("meinpasswort"))))
{
  echo "Du bist eingeloggt";
}

?>
Die action-Tag nach dem form zeigt, wo du nach eingabe des Passworts landest.
 
Hotwave schrieb:
Die action-Tag nach dem form zeigt, wo du nach eingabe des Passworts landest.

Habe ich auch gerade festgestellt und das kann man wunderbar im Quelltext nachlesen! :ugly:

Hmm, ist nich so das gelbe vom Ei, denn das kann dann ja jeder abtippen! :ugly:

Noch jemand nen Tipp? Sollte wie gesagt wenns geht alles aus einer Datei bestehen!

Danke!
 
Hä? Wo liegt dein Problem? Überprüf' einfach in der Admindatei nochmal ob derjenige sich eingeloggt hat und gut ist o_O
 
Mein Problem liegt darin das ich Null Ahnung von PHP habe und ich zum Glück auch nur dieses eine kleine Stückchen Code brauche damit nicht jeder auf diese sogenannte Adminseite kann. Meine allerletzte Frage: Wie überprüfe ich das denn in der Admindatei?!

Danke euch und eurer Geduld mit mir! :)
 
Noch jemand ne Idee dazu? Denn nach eingabe des Passworts lande ich auf einer leeren Seite obwohl die Seite samt Inhalt existiert!

PHP:
<form action="index.php?seite=admin" method="post">
Passwort:<input type="password" name="passwort">
<input type="submit" value="Login">
</form>

<?php
$password = md5(str_rot13(md5($_POST['meinpasswort'])));

if($password == md5(str_rot13(md5("meinpasswort"))))
{
  echo "Du bist eingeloggt";
}

?>
 
Du greifst auf $_POST['meinpassort'] zu, das Feld oben heißt aber nur "passwort", also abändern in $_POST['passwort'].
 
Wo oben meinst Du? Meinst Du oben in dem Eingabefeld? Denn da kann man sowas garnicht eintragen oder?
 
PHP:
<form action="index.php?seite=admin" method="post">
Passwort:<input type="password" name="passwort">
<input type="submit" value="Login">
</form>

<?php
$password = md5(str_rot13(md5($_POST['passwort'])));

if($password == md5(str_rot13(md5("passwort"))))
{
  echo "Du bist eingeloggt";
  if($_GET["seite"] == "admin")
  {
    echo "Du bist auf der Seite: Admin";
  }
  //Hier kannst du jetzt noch so viele "Seiten" einbauen wie du möchtest
  //Beispiel:
  /*
  if($_GET["seite"] == "Newsletter")
  {
    echo "Du bist auf der Seite: Newsletter";
  }
  */
  else
  {
   echo "Wähle eine Seite: <a href=\"index.php?seite=admin\">Admin</a>";
  }
}

?>

Soweit verstanden?
 
Verstanden schon! Nur kann ich ein beliebiges Passwort eingeben und lande immer auf der in der form oben verlinkten Seite! Das soll ja auch so, nur halt das das Passwort auch funzt! :-?
 
Was soll eigentlich das unsinnige Hashen des Passwortes in Euren Codes? Das Passwort steht doch immer noch im Klartext im Code...