hilfdirselbst.ch
Facebook Twitter gamper-media

"Geht nicht" ist keine gültige Fehlermeldung!

« « 1 2 » »  
Anonym
Beiträge: 22827
1. Dez 2002, 20:14
Beitrag #1 von 29
Bewertung:
(5718 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Ich denke, das hat mit dem alten Thema (siehe http://www.hilfdirselbst.ch/...18&topic_id=3615 ) nix mehr zu tun, deshalb mach ich mal nen neuen Threat draus... Damit jeder weiß, worum es geht: Ein Bereich einer Website ist mit .htaccess und .htpasswd geschützt und die Benutzer sollen ihre Passwörter selbstständig ändern können.

Also Ollli, ich hab mir dein "Anfängerscript" mal zu Gemüte geführt, check es aber doch nicht so ganz. Nur mal im groben, Schritt für Schritt:

Du hast eine Seite mit einem Formular mit 4 Eingabefeldern:
Benutzername; Altes Passwort; Neues Passwort; Neues Passwort wiederholen

Die eingegebenen Daten werden mit POST an das Script übergeben. Dieses vergleicht den Benutzername und das alte Passwort mit den Daten in der Datei, die die Zugangsdaten enthält. Sind die Daten vorhanden/korrekt, wird das alte Passwort ersetzt und es kommt eine Bestätigungsseite. Soweit sogut.

Jetzt mal zum eigentlichen Script - ich kommentier mal etwas :)
Langsam, ausführlich und der Reihe nach, soweit ich eben weiß...
(Hab SelfHTML neben mir legen, ich versuch mal selber rauszu-
kriegen, was das Zeug alles bewirkt ;)

$passwd_pfad = "/....../ollli/.htpasswd";
$passwdbackup = "/......./ollli/.htpass2";
# Damit werden die Adressen in Variablen gespeichert.

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
# Damit werden die übertragenen Formulardaten ausgelesen.
# Read heißt lesen, STDIN weiß ich nimma (01)
# $ENV ist eine CGI-Umgebungsvariable,
# CONTEN_LENGTH enthält die Anzahl der Zeichen, die mit POST
# übertragen wurden.
# Diese Daten werden im Skalar (in der Variablen) $buffer ge-
# speichert.
# Damit ergibt sich Frage (01): Was war nochmal STDIN?

@pairs = split(/&/, $buffer);
# Im Arrey @pairs werden die übertragenen Daten aus $buffer
# gesplittet und einzeln gespeichert. Also z.B.
# my @pairs = ("Benutzername", "Klaus", "Altes_Passwort", ...);
# Frage 02: Wäre es hier nicht sinnvoller, einen Hash zu "dekla-
# rieren"? Also z.B. my %Daten = split(...); Und was heißt /&/ ?

foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/<([^>]|\n)*>//g;
$FORM{$name} = $value;
}
# foreach ist eine Schleife, die Listen und Arrays durchläuft.
# In diesem Fall wird der Array @pairs durchlaufen, und der
# jeweils aktuelle Wert des Schleifendurchlaufs wird im Skalar
# $pairs gespeichert. Ich glaub, jetzt weiß ich auch, warum du
# oben keinen Hash verwendest, den kann man nicht so einfach mit
# foreach durchlaufen.
# Aber was macht die Schleife? Bitte das Zeug in der geschweiften
# Klammer mal erklären (3). Was heißt /=/ ? und der ganze Rest?
# Das ist mir irgendwie schon zuviel :(

- - - - - - - - - - - - - - - - - -
Erst mal soweit. Wenn du mir hier kurz weiterhilfst, mach ich weiter. Ich weiß, dass die Schleife die Daten in Formularfeldernamen und Werte trennt, aber die Befehle verstehe ich nicht so recht.
- - - - - - - - - - - - - - - - - - Top
 
X
Anonym
Beiträge: 22827
1. Dez 2002, 20:17
Beitrag #2 von 29
Beitrag ID: #18190
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Ich bin nicht annonym, bin Hanü!!!!
Wenn kommen endlich die Cookies?!

Gruß Andreas

P.S. hab die Antwort offline verfasst, dann eingewählt und gesendet. So ein Mist ;)
als Antwort auf: [#18188] Top
 
Ollli
Beiträge: 458
2. Dez 2002, 00:47
Beitrag #3 von 29
Beitrag ID: #18201
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Hi Hanü!

Ist nicht so schlimm wegen dem Script. Als ich jetzt durchgegangen bin habe ich mir teilweise auch an den Kopf gegriffen.
Aber ich habe hier mal eine kommentierte Version des Scriptes, die dich hoffentlich zufrieden stellt ;-)
Wenn nicht, dann meld dich einfach nochmal!

--- Code ---
#!/usr/local/bin/perl

$passwd_pfad = "/....../ollli/.htpasswd";
# ist klar
$passwdbackup = "/......./ollli/.htpass2";
# genauso klar

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
# Einlesen der gesendeten Daten
# STDIN ist der StandardInput, sprich die Daten, die empfangen werden

@pairs = split(/&/, $buffer);
# splittet die Daten auf, sprich aus
# name=ollli&pass1=123456&pass2=123456&passold=654321
# wird @paris = ("name=ollli","pass1=123456" .....
# es wird also ein array erzeugt, wobei immer nach dem "&" abgeschnitten wird
# und das "&" auch noch entfernt wird

foreach $pair (@pairs)
# für jedes Array-Element
{
($name, $value) = split(/=/, $pair);
# jetzt kommt die Aufteilung
# in feldname und dem dazugehörigen Wert diesmal ist "=" das Trennzeichen
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/<([^>]|\n)*>//g;
# diese Anweisungen eben haben die Inhalte der Fomulare wieder
# "brauchbar" gemacht - es wurden zum Beispiel die + durch Leerzeichen
# ersetzt oder html-tags entfernt und die Hex-Codes zu den ent-
# sprechenden Zeichen umgewandelt
$FORM{$name} = $value;
# hier kommt dann dein gewünschter Hash ;-)
}

# die folgenden Variablenzuweisungen sind eigentlich nicht nötig, doch
# damals hielt ich es eben für nötig ;-)
$passold = $FORM{'passold'};
$pass1 = $FORM{'pass1'};
$pass2 = $FORM{'pass2'};
$name = $FORM{'name'};
$i = 0;
# frag mich nicht, warum ich diese Zeile eingebaut hatte, die kannste
# rauslöschen


&candc;
# prozeduraufruf oder auch Aufruf der Subroutine ;-)

sub austausch()
# Prozedur für Passwortänderung
{
open(PWL, "$passwd_pfad") || &error("Kann Passwort-Datei nicht öffnen: $!");
@pwl = <PWL>;
close(PWL) || &error("Kann Passwort-Datei nicht schließen: $!");
# die drei Zeilen erklärten sich von selbst, oder?
open(BKP,">$passwdbackup") || &error("Kann Sicherungsdatei nicht öffnen: $!");
#noch fix ein Backup anfertigen, sowas ist immer wichtig
open(PWL,">$passwd_pfad") || &error("Kann PWL-DAT nicht öffnen: $!");
foreach $line (@pwl) # jetzt jede Zeile der Datei durchgehen
{
print BKP $line;
# die Zeile komplett ohne Änderungen ins Backup schreiben
($user, $pw) = split(/:/,$line);
# jetzt username und pw trennen
chomp($pw);
# newline am Ende des pw entfernen
if($user eq $name && $pw eq $cpassold)
# verlgeichen der Daten
{
print PWL "$name:$cpassnew\n";
# neue Daten schreiben, wenn Vergleich
# erfolgreich war
}
else
{
print PWL $line;
# anderfalls die Zeile aus der alten Datei übernehmen
}
}
# Statusvericht --> der ist ja variabel
print "Content-type: text/html\n\n";
print "<html><head><title>Alles glatt verlaufen</title></head>\n";
print "<body>Das Passwort wurde geändert!</body>";
print "\n</html>";
}

sub candc()
# Prozedur zum Checken der Eingaben und zum verschlüsseln vom pw
{
$vorhanden = "nein";
# für spätere Abfrage nötig
$cpassold = crypt($passold, "YL");
# eingegebenes pw verschlüsseln
if($pass1 ne $pass2)
# die neuen pws vergleichen
{
&error("Die beiden neuen Passw&ouml;rter stimmen nicht &uuml;berein, bitte korrigieren Sie");
# Fehlermeldung wenn sie unterschiedlich sind
}
else
{
open(PWL,"/data1/virtualave.net/ollli/.htpasswd") || &error("Kann PWL-DAT nicht öffnen: $!");
@pwlist = <PWL>;
close(PWL);
# pw-Datei öffnen und auslesen
foreach $pl (@pwlist)
# jede Zeile in der pw-Datei durchgehen
{
($user, $pw) = split(/:/, $pl);
chomp($pw);
# die beiden Zeilen siehe oben
if(($user eq $name) && ($pw eq $cpassold))
# vergleichen von pw und
# username
{
$cpassnew = crypt($pass1, "YL");
# neues pw verschlüsseln
$vorhanden = "ja";
# status ändern
}
}
if($vorhanden eq "ja")
# status checken
{
&austausch;
# pw ändern
}
else
# oder Fehlermeldung ausgeben
{
&error("Benutzername und Kennwort passen nicht zueinander, bitte beide Eingaben &uuml;berpr&uuml;fen!");
}
}
}

sub error()
# Fehlermeldung, selbsterklärend würde ich sagen
{
print "Content-type: text/html\n\n";
$message = $_[0];
if($message =~ /Kann/)
# ein Tipp, er sucht nach "Kann" in der mitgeliferten
# Fehlermeldung und entscheided sich dann für eine Ausgabe oder nicht
# diese Abfrage ist letztendlich auch sinnlos, da teilweise kein "Kann" in
# den Meldungen enthalten ist
{
print $message;
}
else
{
print ("
<html>
<head>
<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-1\">
<title>Passwort&auml;nderung</title>
</head>
<body bgcolor=\"#ffffff\">
<form name=\"formular\" action=\"/cgi-bin/htpwch.pl\" method=\"post\">
<p>$message<br>
<br>
Benutzername: <input type=\"text\" name=\"name\" size=\"24\" value=\"$name\"><br>Altes Passwort: <input type=\"password\" name=\"passold\" size=\"24\" value=\"\"><br>
Neues Passwort: <input type=\"password\" name=\"pass1\" size=\"24\" value=\"\"><br>
Neues Passwort wiederholen: <input type=\"password\" name=\"pass2\" size=\"24\" value=\"\"><br>
<br>
<input type=\"submit\"> <input type=\"reset\"></p>
</form>
<p></p>
</body>
</html>

")

}
}
--- Code End ---

Nochmal kurz zu meinen "Anfangszeiten":
Man sieht es zum Beispiel an dem sinnlos deklariertem "$i" oder daran, dass ich in Prozeduren mit globalen Variablen arbeite oder an meiner "Message-Abfrage". Dann sicherlich noch an ein paar anderen Punkten, welche mir jetzt um diese Zeit nicht aufgefallen sind ;-)
Du kannst es also nur noch besser machen, das Script! :-)

Tschö
Olli
als Antwort auf: [#18188] Top
 
Hanü
Beiträge: 219
4. Dez 2002, 00:42
Beitrag #4 von 29
Beitrag ID: #18390
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Als ob ich's nicht geahnt hätte - bei mir funktioniert es natürlich wieder nicht, dein tolles Script. Hab den Spaß mal Online gesetzt, um es auszuprobieren. Ebenso ist auch gleich Sabine's Script zum Einsatz gekommen, das funktioniert ausnahmsweise. ;)

[//edit: URL und Zugangsdaten entfernt, da geändert]

Ist man eingeloggt, kommt ein Formular zum ändern des Passwortes. Wenn man auf Ändern klickt, kommt ne Serverfehlermeldung. Ich hab jetzt folgendes Script verwendet:

//:edit
habe das Script wieder rausgenommen, da wird der Threat so ewig lang :)
//:edit

Rechte auf 755 und eine htpasswd existiert auch. Ich weiß ja nicht.....

Gruß Andreas
als Antwort auf: [#18188]
(Dieser Beitrag wurde von Hanü am 10. Dez 2002, 02:24 geändert)
Top
 
oesi50  A  S
Beiträge: 2315
4. Dez 2002, 01:16
Beitrag #5 von 29
Beitrag ID: #18393
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Hallo Hanü,

versuch mal die erste Zeile in

#!/usr/bin/perl

zu ändern.

Grüße oesi
als Antwort auf: [#18188] Top
 
Ollli
Beiträge: 458
4. Dez 2002, 17:47
Beitrag #6 von 29
Beitrag ID: #18499
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Genau, das hatte ich vergessen zu ändern, denn bei virtualave.net brauchste das local noch mit drin, im Perl-Pfad.

Es müsste also nur am Perl-Pfad liegen, allerdings müssen die Passwort- und die Backup-Datei auch Schreibzugriff haben, damit die Scripte draufschreiben können.
Es müsste also in der Art "chmod 606 datei" sein, damit es funktioniert.

Ollli
als Antwort auf: [#18188] Top
 
Hanü
Beiträge: 219
5. Dez 2002, 02:26
Beitrag #7 von 29
Beitrag ID: #18533
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Das das Script nicht funzt lag tatsächlich an dem local. Jetzt wird es angesprochen, bringt aber 2 der Scripteigenen Fehlermeldungen:

Kann PWL-DAT nicht öffnen: No such file or directoryContent-type: text/html
Benutzername und Kennwort passen nicht zueinander, bitte beide Eingaben überprüfen!

Zweiteres kann aber nicht sein. Aber probiert es einfach selbst. URL und Zugangsdaten dto. und nach "erfolgreichem" ändern bitte wieder altes PW festlegen.

Achso, und ich kann die Rechte der .htpasswd irgendwie nicht ändern!? Das geht net!? Liegt vielleicht am Hoster. Muss ich die Backup datei vorher beim ersten gebrauch von Hand anlegen, oder erstellt die das Script?

Gruß Hanü
als Antwort auf: [#18188]
(Dieser Beitrag wurde von Hanü am 5. Dez 2002, 02:28 geändert)
Top
 
oesi50  A  S
Beiträge: 2315
5. Dez 2002, 10:28
Beitrag #8 von 29
Beitrag ID: #18555
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Hallo Hanü,

such mal diese Zeile:
open(PWL,"/data1/virtualave.net/ollli/.htpasswd") || &error("Kann PWL-DAT nicht öffnen: $!");

und ersetze sie durch:
open(PWL, "$passwd_pfad") || &error("Kann Passwort-Datei nicht öffnen: $!");

Grüße oesi
als Antwort auf: [#18188] Top
 
Ollli
Beiträge: 458
5. Dez 2002, 18:04
Beitrag #9 von 29
Beitrag ID: #18632
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


So ein Mist, hatte ich doch noch eine Zeile übersehen, sorry!

Ollli
als Antwort auf: [#18188] Top
 
Hanü
Beiträge: 219
6. Dez 2002, 00:45
Beitrag #10 von 29
Beitrag ID: #18669
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Habs geändert, funktioniert aber trotzdem nicht :(

Kleine Bitte: Könntet ihr den Teil nochmal genauer erklären (Zeilenweise)?! Was ist eigentlich PWL und BKP? Danke.


_________________________________________
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/<([^>]|\n)*>//g;

$FORM{$name} = $value;
}

&candc;

sub austausch()
{
open(PWL, "$passwd_pfad") || &error("Kann Passwort-Datei nicht öffnen: $!");
@pwl = <PWL>;
close(PWL) || &error("Kann Passwort-Datei nicht schließen: $!");
open(BKP,">$passwdbackup") || &error("Kann Sicherungsdatei nicht öffnen: $!");
open(PWL,">$passwd_pfad") || &error("Kann PWL-DAT nicht öffnen: $!");

foreach $line (@pwl)
{
print BKP $line;
($user, $pw) = split(/:/,$line);
chomp($pw);
if($user eq $name && $pw eq $cpassold)
{
print PWL "$name:$cpassnew\n";
}
else
{
print PWL $line;
}
[..]

sub candc()
{
$vorhanden = "nein";
$cpassold = crypt($passold, "YL");
if($pass1 ne $pass2)
{
&error("Die beiden neuen Passw&ouml;rter stimmen nicht &uuml;berein, bitte korrigieren Sie");
}
else
{
open(PWL, "$passwd_pfad") || &error("Kann Passwort-Datei nicht öffnen: $!");
@pwlist = <PWL>;
close(PWL);

foreach $pl (@pwlist)
{
($user, $pw) = split(/:/, $pl);
chomp($pw);
if(($user eq $name) && ($pw eq $cpassold))
{
$cpassnew = crypt($pass1, "YL");
$vorhanden = "ja";
}
}
if($vorhanden eq "ja")
{
&austausch;
}
else
{
&error("Benutzername und Kennwort passen nicht zueinander, bitte beide Eingaben &uuml;berpr&uuml;fen!");
als Antwort auf: [#18188]
(Dieser Beitrag wurde von Hanü am 6. Dez 2002, 01:35 geändert)
Top
 
oesi50  A  S
Beiträge: 2315
6. Dez 2002, 13:04
Beitrag #11 von 29
Beitrag ID: #18718
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


hallo hanü,
probier mal das hier:
#!/usr/bin/perl
$loginurl ="http://abi.hanue.de/...ty/anmeldung.shtml"; # URL zum Loginformular
$passwd_pfad = ".htpasswd"; # Pfad zur Passwortdatei
################################
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs){
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/<([^>]|\n)*>//g;
$FORM{$name} = $value;
}
$passold = $FORM{'passold'};
$pass1 = $FORM{'pass1'};
$pass2 = $FORM{'pass2'};
$name = $ENV{'REMOTE_USER'};
print qq|Content-type: text/html;charset=iso-8859-1\n\n|;
print qq|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n|;
print qq|<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Passwort&auml;nderung</title>
</head>
<body bgcolor="#ffffff">
|;
if($pass1 ne '' && $pass2 ne ''){
if ($pass1 ne $pass2) {
$meldung = "Die beiden neuen Passw&ouml;rter stimmen nicht &uuml;berein, bitte korrigieren Sie";
}else {
&pwaend;
if($vorhanden eq 'ja'){
$meldung = qq|Das Passwort wurde geändert, bitte neu anmelden!<br><a href="$loginurl">zum Loginformular</a>|;
}else{
$meldung = "Benutzername und Kennwort passen nicht zueinander, bitte beide Eingaben &uuml;berpr&uuml;fen!";
}
}
}
print qq|
<h4>$name ist angemeldet</h4>
<h5><font color="red">$meldung</font></h5>
|;
if ($vorhanden ne "ja"){
print qq|
<form name="formular" action="pwaendern.pl" method="post">
<table>
<tr><td>Altes Passwort:</td><td><input type="password" name="passold" size="24" value=""></td></tr>
<tr><td>Neues Passwort:</td><td><input type="password" name="pass1" size="24" value=""></td></tr>
<tr><td>Neues Passwort wiederholen:</td><td><input type="password" name="pass2" size="24" value=""></td></tr>
<tr><td><input type="submit"></td><td><input type="reset"></td></tr>
</table>
</form>
</body>
</html>
|;
}
exit;
sub pwaend{
open(PWL,"+<$passwd_pfad") || &error("Kann PWL-DAT nicht öffnen: $!");
flock (PWL,2);
@pwlist = <PWL>;
$vorhanden = "nein";
for ($i=0;$i<=$#pwlist;$i++){
$pl = $pwlist[$i];
chomp($pl);
($user, $pw) = split(/:/, $pl);
next if($user ne $name);
$cpassold = crypt($passold, $pw);
if($pw eq $cpassold){
$cpassnew = crypt($pass1, $pw);
splice @pwlist,$i,1, "$name:$cpassnew\n";
seek (PWL ,0,0 );
truncate (PWL,0);
print PWL @pwlist;
$vorhanden = "ja";
last;
}
}
close(PWL);
}
sub error{
$meldung = shift(@_);
print $meldung;
exit;
}


Backup der Passwortdatei ist nicht sinnvoll, weil ich das Script multitaskingfähig gemacht habe.
Sinnvoll wäre evtl. eine Logdatei(History) ALLER Passwortänderungen.

Grüße oesi
als Antwort auf: [#18188]
(Dieser Beitrag wurde von oesi50 am 6. Dez 2002, 13:39 geändert)
Top
 
Hanü
Beiträge: 219
7. Dez 2002, 00:58
Beitrag #12 von 29
Beitrag ID: #18779
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Aha. ^^ *staun*

Bei dem Script blicke ich leider noch weniger durch.
Da sind ein paar Dinge dabei, mit denen ich überhaupt
nix anfangen kann. Aussehen tut es aber gut :)

Was bedeuten qq| und |; ???
Und was meinst du mit multitaskingfähig?

Das mit der Logdatei wäre echt ne feine Sache :)
Danke auf jeden Fall mal, ich werde das ausprobieren!
Gruß Andreas

- - - - - - - - - - - - - - - - - - - - - - - - - - -

So, Nachtrag (2:30 Uhr):
Hab das Script unter pw.pl gespeichert, die URL für
die .htpasswd angepasst und den Spaß hochgeladen. Achso,
und dann hab ich noch in dem Formular auf der Loginseite
die URL zum Script angepasst.

Funzt aber trotzdem irgendwie net. Hab ich was falsch ge-
macht?

Eine Sache noch: Die erste Variable ist net so geeignet,
weil ich die Einlogg-Felder auf ALLEN Seiten verwenden will,
dass man sich jederzeit überall einloggen kann.

Deshalb hat mir Sabine ja bei einem Script dazu geholfen (siehe "Einloggen auf (s)HTML-Seite" unter http://www.hilfdirselbst.ch/...18&topic_id=3615 )

Der Link macht also net viel Sinn!?

Gruß Andreas

P.S. Eine kleine Bitte nochmals: Da ich ja blutiger Anfänger
bin, bitte immer alles etwas genauer erklären :) Danke!
als Antwort auf: [#18188]
(Dieser Beitrag wurde von Hanü am 10. Dez 2002, 02:26 geändert)
Top
 
oesi50  A  S
Beiträge: 2315
7. Dez 2002, 12:37
Beitrag #13 von 29
Beitrag ID: #18787
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Hallo hanü,
>> Was bedeuten qq| und |; ???
Das ist meine Faulheit, weil ich keine Lust habe jedesmal \" zu schreiben,
nehme ich qq um "...." in |...| umzudefinieren.

>>Und was meinst du mit multitaskingfähig?
Damit meine ich, daß dieses Script WIRKLICH GLEICHZEITIG mehrfach ausgeführt werden kann.
Die Passwortdatei ist dabei vor Datenverlust geschützt.
Im allgemeinen sind solche Scripte so programmiert, daß sie nur hintereinander ausgeführt werden können.
Wenn in diesem Fall viele gleichzeitige Zugriffe erfolgen, ensteht ziemlich oft
ein für den Webmaster unerklärlicher Datenverlust.

>>Das mit der Logdatei wäre echt ne feine Sache :)
setze einfach nach Zeile 76 folgenden Code ein:
--------------------------
open (LOG,">>pw.log");
print LOG localtime(time)." $name $cpassold $cpassnew\n";
close(LOG);
------------------------
>> Funzt aber trotzdem irgendwie net. Hab ich was falsch gemacht?
Wenn du den Namen des Scriptes änderst, muss auch in der Zeile 46 die Action geändert werden.
Trotzdem sollte dieses Script in deinem geschützten Verzeichnis liegen, weil nur so sichergestellt wird, daß
nur die User Ihr Passwort ändern können, die auch schon in der Passwortdatei drinstehen.
Wie sieht denn der Pfad zu Deiner .htpasswd aus?

>>Der Link macht also net viel Sinn!?
Der Link macht sehr viel Sinn, weil sich die User nach einer Passwortänderung unbedingt neu einloggen müssen.
Hier kannst Du zu irgendeiner Einlogseite Deiner Wahl linken.

>> bitte immer alles etwas genauer erklären
Das ist für mich etwas schwierig, da ich Deine Vorkenntnisse nicht kenne(semantisch und syntaktisch).
Eine allgemeine und allumfassende Erklärung würde den Rahmen des Forums sprengen.

Grüße oesi

als Antwort auf: [#18188]
(Dieser Beitrag wurde von oesi50 am 7. Dez 2002, 12:44 geändert)
Top
 
SabineP  M 
Beiträge: 7586
7. Dez 2002, 13:31
Beitrag #14 von 29
Beitrag ID: #18790
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


Hanü, ich hab das Script mal ausprobiert. Es funktioniert einwandfrei :-))
http://cgi.gmxhome.de/members/pwaendern.pl
Username:tester
Passwort:tester
Du kannst das Passwort ändern, ich hab ja die Log-Datei.
Da steht dann das alte Passwort drin.

Grüße von Sabine
als Antwort auf: [#18188] Top
 
Hanü
Beiträge: 219
7. Dez 2002, 14:12
Beitrag #15 von 29
Beitrag ID: #18791
Bewertung:
(5716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Passwort ändern


cool. probier ich heute Abend/Nacht mal aus :)
des krieg ich schon auch noch irgendwie zum laufen

ok, mit den allgemeinen erklärungen lass mal gut sein,
ich probier, alles selber zu "entschlüsseln" und frag
nur nach, wenn ich was wirklich nicht weiß oder keine
Erklärung finde.

Danke. Bis später
Andreas
als Antwort auf: [#18188] Top
 
« « 1 2 » »  
X