htaccess mit formular

Da ich schon absehen kann, dass du mir nicht glaubst, kannst du ja mal folgenden Link ausprobieren:

http://www.nasicunion.de/tutor/login.php

Der PHP-Code lautet:

PHP:
<?php
if (isset($_POST['Name']) AND isset($_POST['Password'])) {
    $pwfile = file(".htpasswd");
    $Pass = crypt($Password, "21");
	echo "<br>Ihr eingegebenes Passwort lautet verschlüsselt:";
	echo $Pass;
	echo "<BR>";
    $user_OK = false;

    foreach ($pwfile as $zeile) {
        $LoginData[] = explode(":", $zeile);
    }
    for ($i = 0; $i < count($LoginData); $i++) {
        if (($_POST['Name'] == $LoginData[$i][0]) AND $Pass == $LoginData[$i][1]) {
            $user_OK = true;
            break;
        }
        else {
			echo "<BR>Der Verleich mit den Login-Daten Nr. ".($i + 1);
			echo " war nicht erfolgreich!<BR>";
			echo "Das erforderliche Password hieße:".$LoginData[$i][1]."<BR>";
			echo "Der erforderliche Username hieße:".$LoginData[$i][0]."<BR>";
			$user_OK = false;
		}
    }
    if ($user_OK == true) {
        echo "Login erfolgreich!<BR><BR><BR>";
        echo "<A HRef=\"javascript:window.open('file.php', 'Admin')\">Hier geht's weiter</A>";
    }
    else {
        echo "Login nicht erfolgreich!<BR><BR><BR>";
        echo "<A HRef=\"javascript:history.back()\">Hier geht's zurück</A>";        
    }
}
else {
    echo "<HTML><Body>Bitte geben Sie als Name und Passwort 'test' oder 'hallo' ein!<Form Name=\"Login\" Method=\"POST\" Action=\"$PHP_SELF\">"
            ."Name:		<Input Type=\"Text\" Name=\"Name\"><BR>Passwort:	<Input Type=\"Password\" Name=\"Password\"><BR>"
            ."<Input Type=\"Submit\" Value=\"Login\"></Form></Body></HTML>";
}
?>

Die Datei .htpasswd, die im selben Verzeichnis liegt sieht so aus:
test:21CAplOLEsGLE
hallo:21bug8oWWKwEI

Keine Leerzeichen/Leerzeilen oder sonstwas.
Hab' ich da jetzt nur einen dämlichen Fehler gemacht, oder warum ist die verschlüsselte Ausgabe des Passwortes absolut identisch, wird aber nicht als dieses erkannt?! :confused:
Das gilt, wie gesagt, nur beim ersten Namen (also test).
Wenn man hallo eingibt, ist das Passwort zwar auch gleich, dieses wird aber erkannt.
 
So, erstmal vielen Dank an rootssw!

Aber es hat bei mir nicht ganz geklappt, denn obwohl User und Passwort korrekt sind und ich demnach eingeloggt bin, kommt beim Aufrufen der geschützten Seite das Popup-Browserfenster für die erneute Eingabe der Daten.

Woran kann das liegen?
 
Dazu wäre es sehr hilfreich, wenn man das Script mal sehen könnte.
Was meinst du denn mit Popup-Browserfenster?
Das Script, dass hier vorliegt, oder das normale Popup-Fenster, dass kommt, wenn man in einem geschützten Bereich will?
Wenn zweiteres nämlich der Fall ist, dann hast du genau das gemacht, was ich schon befürchtete:
Versuchst du evtl. mit diesem Script das normale .htaccess-Schutz Browser-Fenster zu umgehen, und stattdessen deine eigene Seite (also das Script hier) aufzurufen?! :(
Das würde so nämlich nicht funktionieren!
Dazu müsste man das Script nämlich umschreiben.
Oder hab' ich mich doch geirrt und du meintest was ganz anderes?
 
Also ich hab des Problem jetzt so gelöst: http://$Name:$Password@www

Und so sieht das Script aus, welches in einer normal zugänglichen Datei ist. Nach einem erlfolgten Login erscheint ein Link welches ein kleines Popup-Fenster öffnet und die Daten wie oben erwähnt übergibt.

PHP:
<?php

if (isset($_POST['Name']) AND isset($_POST['Password'])) {

    $pwfile = file("secure/.passwd");

    $Pass = crypt($Password, '13');

    $user_OK = false;



    foreach ($pwfile as $zeile) {

        $a = strpos($zeile, ":");

        $fName = substr($zeile, 0, $a);

        $fPassword = substr($zeile, $a + 1, 13);

        

        if ($_POST['Name'] == $fName AND $Pass == $fPassword) {

            $user_OK = true;

            break;

        }

        else {$user_OK = false;}

    }

    if ($user_OK == true) {

        echo "Sie wurden erfolgreich eingeloggt! <a href=\"javascript:fenster=window.open('http://$Name:$Password@www.schittenhelm-metallhandwerk.de/secure/','','width=550,height=400');fenster.focus();\">Zum geschützten Bereich</a>";

    }

    else {

        echo "Benutzername oder Passwort war falsch! Bitte erneut eingeben! <A HRef=\"javascript:history.back()\">Zurück</A>";
        

    }

}

else {

    echo "<Form Name=\"Login\" Method=\"POST\" Action=\"$PHP_SELF?vai=content/login&poi=img/oL\">
     " ."   <table width=\"45%\" border=\"0\">
 " ."  <tr>
   " ."        <td>Name:</td>
  " ."   <td align=\"right\"><input type=\"Text\" name=\"Name\"></td>
   " ."</tr>
  " ." <tr>
   " ."        <td>Passwort:</td>
  " ."   <td align=\"right\"><input type=\"Password\" name=\"Password\"></td>
 " ."  </tr>
 " ."  <tr>
 " ."    <td>&nbsp;</td>
  " ."   <td align=\"right\"><input name=\"Submit\" type=\"Submit\" value=\"Einloggen\"></td>
 " ."  </tr>
 " ."</table>
 " ."</Form>";

}

?>

Einige Sachen werden hier verändert, aber ich denke des Wichtigste erscheint korrekt?!
 
Achja, genau das meinte ich.
Ich bin mal deinem Link gefolgt (http://www.schittenhelm-metallhandwerk.de/secure/).
Dieses Verzeichnis ist durch die Datei .htaccess geschützt.
Das ist doch überhaupt kein Wunder, dass das Dialog kommt!
Du müsstest die Datei .htaccess aus diesem Verzeichnis nehmen, und dieses Script in das Verzeichnis packen.
Mit dem Script, so wie es hier vorliegt, kriegst du aber keinen vernünftigen Schutz hin. du müsstest es also noch so umschreiben, dass man nicht einfach, wenn man den Link kennt, diesen in den Browser eingibt, und dann auf die ungeschützte Seite trifft.
Auf diese Weise, wie das Script jetzt arbeitet, kann es garnicht den Dialog abschalten, da es ja immer auf das geschützte Verzeichnis zugreift und dort immer die .htaccess greift.
Ich hoffe, du kannst das nachvollziehen.:rolleyes:
 
Kanns schon nachvollziehen aber ich übergebe doch die Daten für die .htaccess. Wenn du über das Script das Fenster öffnest kommt kein Dialog. Und wenn du denk Link hast kannst du aber ohne User und Pass nicht rein. Weil ja die htaccess da drin ist.. also versuch Folgendes: http://www.schittenhelm-metallhandwerk.de > Login mit User: mel Pass: nekcif

Dann siehst du wie ichs mein.


Des mit den 46 Minuten ist übrigens ein Fake!
 
Ich hab' den Fehler entdeckt.
Ich hab's auf meinem Server bereits funktionierend laufen. Ich schreib's jetzt noch für deinen um.

Bitte warten...
Please stand by...;-)
 
Soo, jetzt sollte es doch klappen!
Dein Fehler war, dass du den Link nicht richtig eingesetzt hast. Ich hab' das ja per JavaScript:window.open() geöffnet.
Du hast dieses aber nicht gelöscht, sondern einfach mitten rein geklatscht!
Der Link kann ja garnicht richtig geöffnet werden.

Hier nun das Script:

PHP:
<?php
if (isset($_POST['Name']) AND isset($_POST['Password'])) {

    $pwfile = file("secure/.passwd");

    $Pass = crypt($Password, '13');

    $user_OK = false;

    foreach ($pwfile as $zeile) {

        $a = strpos($zeile, ":");

        $fName = substr($zeile, 0, $a);

        $fPassword = substr($zeile, $a + 1, 13);

        if ($_POST['Name'] == $fName AND $Pass == $fPassword) {
            $user_OK = true;
            break;

        }
        else {$user_OK = false;}
    }

    if ($user_OK == true) {
        echo "Sie wurden erfolgreich eingeloggt! <a href=\"http://$fName:$fPassword@www.schittenhelm-metallhandwerk.de/secure/\" target=\"_blank\">www.schittenhelm-metallhandwerk.de/secure/</a>";
    }
    else {
        echo "Benutzername oder Passwort war falsch! Bitte erneut eingeben! <A HRef=\"javascript:history.back()\">Zurück</A>";
    }
}
else {

    echo "<Form Name=\"Login\" Method=\"POST\" Action=\"$PHP_SELF?vai=content/login&poi=img/oL\">
     " ."   <table width=\"45%\" border=\"0\">
 " ."  <tr>
   " ."        <td>Name:</td>
  " ."   <td align=\"right\"><input type=\"Text\" name=\"Name\"></td>
   " ."</tr>
  " ." <tr>
   " ."        <td>Passwort:</td>
  " ."   <td align=\"right\"><input type=\"Password\" name=\"Password\"></td>
 " ."  </tr>
 " ."  <tr>
 " ."    <td>&nbsp;</td>
  " ."   <td align=\"right\"><input name=\"Submit\" type=\"Submit\" value=\"Einloggen\"></td>
 " ."  </tr>
 " ."</table>
 " ."</Form>";

}
?>
 
Das war kein Fehler denn ich benutze ein Script zum öffnen des Popupfensters. Schau mal im Header der Datei. Da wird das entsprechende Script geladen.

Aber trotzdem Danke ;-)
 
Zurück