php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
htaccess passwörter verwalten


 
Moqui
01-02-2003, 12:51 
 
ich hab ein vezeichnis mit .htaccess geschützt.

die user und die passwörter stehen wie fast immer in einer .htpasswd datei.
Wie kann ich mit PHP machen, dass ich ein Passwort von einem user ändern kann?

die htpasswd sieht ja so aus

user1:cryptedpw
user2:cryptedpw
user3:cryptedpw

wie kann ich jetzt zum beispiel das passwort von user2 ändern?

muss ich das teil per fopen öffnen?! und wie weiter?

 
Abraxax
01-02-2003, 12:59 
 
theoretisch könntest du das öffnen und neu schreiben.
du musst das pw eben nur verschlüsseln.

das beste ist, wenn du das proggi zum pw setzen/ändern/neu als systembefehlt ausführst.

wenn es linux ist, findest du das ding unter
/usr/bin/htpasswd


.... # /usr/bin/htpasswd --help

Usage:
htpasswd [-cmdps] passwordfile username
htpasswd -b[cmdps] passwordfile username password

htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don't update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
On Windows, TPF and NetWare systems the '-m' flag is used by default.
On all other systems, the '-p' flag will probably not work.

 
Moqui
01-02-2003, 13:03 
 
also öffnen und neu schreiben

das klingt logisch

ABER: wie lösche ich die Zeile raus, inder der Benutzer definiert wurde?

gibts ein befehl, der eine Zeile löscht, in der ein bestimmter String vorkommt?

 
Abraxax
01-02-2003, 13:09 
 
die datei liest du ja mit file() ein, nehme ich mal an. da kommst dann ein array raus. jetzt brauchst du nur den arrayindex zu löschen, wo der user fott soll.

dann das array (zeilenweise) wieder in die datei schreiben. beim ändern des pws machst du das ja mal ähnlich. oder?

 
mrhappiness
01-02-2003, 13:11 
 
function change_pw($htpasswd,$username,$newpass)
{
$datei=file($htpasswd);
$eintraege=count($datei);
for ($i=0;$i<$eintraege;$i++)
{
$eintrag=explode(':',$datei[$i]);
if (!strtolower($eintrag[0])==strtolower($username))
continue;
$salt=substr($eintrag[1],0,2);
$eintrag[1]=crypt($newpass,$salt);
$datei[$i]=implode(':',$eintrag);
break;
}
$fp=fopen($htpasswd,'wb');
fwrite($fp,implode('\n',$datei));
flocse($fp);
}sollte gehen

 
Moqui
01-02-2003, 13:16 
 
ich liebe dieses Forum

danke jetzt war ich 10 mins online und hab meine antworten.

thx

 
Moqui
01-02-2003, 13:27 
 
der lerneffekt war bei mir == 0;

kann mir mal jemand das script erklären, ich kenn die funktionen garnet, z. B. strtolower() <-- sagt mir garnix

mein WeaverSlave sagt "Make a string lowercase" <-- sagt mir aber auch nix

und wenn ichs richtig verstanden hab liest file() eine Datei zeilenweise?! ich kannte bis jetzt nur fread und freads...

 
Abraxax
01-02-2003, 13:28 
 
file() liest dir die datei in ein array ein. jeder index ist eine zeile der datei.

strtolower() - Make a string lowercase - mache alle buchstaben klein.

 
Abraxax
01-02-2003, 13:31 
 
nochmal zum ausführlichen nachlesen.... :D

file()
http://de.php.net/manual/de/function.file.php

strtolower()
http://de.php.net/manual/de/function.strtolower.php

das php.net kann ich dir nur empfehlen :teach:

http://de.php.net/manual/de/

 
mrhappiness
01-02-2003, 13:32 
 
@Abraxax
Du bist zu gut für diese Welt :D

 
Abraxax
01-02-2003, 13:33 
 
@happy.
du aber auch... :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:02 Uhr.