Probleem wachtwoord wijzigen .htpasswd bestand
Ik vond op internet het onderstaande script alleen krijg ik het niet werkend.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<?
$htaccess = '.htaccess';
$adminuser="admin";
$encryption=CRYPT_MD5;
$curruser=$PHP_AUTH_USER;
$scripturi="http://$HTTP_HOST:$SERVER_PORT$SCRIPT_NAME";
function ShowError($errorstring) {
echo "<html><body><h1>$errorstring</h1></body></html>\n";
exit();
}
if($file=fopen($htaccess,"w")) {
while(!feof($file)) {
$data=fgets($file,1024);
$tdata=trim($data);
if(substr(strtolower($tdata),0,13)=="authuserfile ") { $htpasswd=substr($tdata,13,strlen($tdata)-13); }
if(substr(strtolower($tdata),0,9)=="authname ") { $authname=substr($tdata,9,strlen($tdata)-9); }
}
fclose($file);
} else { ShowError("Kan $htaccess niet lezen, chmod 404 $htaccess kan helpen"); }
$htpasswd = '.htpasswd';
unset($user_name);unset($user_pass);unset($user_line);
if($file=fopen($htpasswd,"w")) {
while(!feof($file)) {
$data=trim(fgets($file,1024));
$user_line[]=$data;
if($tmp1=strstr($data,":")) {
$user_name[]=substr($data,0,strlen($data)-strlen($tmp1));
$user_pass[]=substr($tmp1,1,strlen($tmp1)-1);
}
}
fclose($file);
} else { ShowError("Kan $htpasswd niet lezen, chmod 606 $htpasswd kan helpen"); }
if($action=="user_add") {
if($curruser!=$adminuser) { ShowError("Alleen de administrator (\$adminuser) kan deze optie gebruiken"); }
for($i=0;$i<count($user_name);$i++) {
if(strtolower($user_name[$i])==strtolower($form_user_name)) { ShowError("Gebruiker $form_user_name bestaat al"); }
}
if($form_user_pass_1!=$form_user_pass_2) { ShowError("Nieuw wachtwoord en Nieuw wachtwoord opnieuw komen niet overeen"); }
if($file=fopen($htpasswd,"a")) {
fputs($file,"$form_user_name:".crypt($form_user_pass_1,$encryption)."\n");
fclose($file);
} else { ShowError("Kan $htpasswd niet bewerken, chmod 606 $htpasswd kan helpen"); }
Header("Location: $scripturi");
exit();
} elseif($action=="user_edit") {
if($curruser!=$adminuser) { ShowError("Alleen de administrator (\$adminuser) kan deze optie gebruiken"); }
if(($form_user_pass_1!=$form_user_pass_2) AND (!$form_user_delete)) { ShowError("Nieuw wachtwoord en Nieuw wachtwoord opnieuw komen niet overeen"); }
if($form_user_delete AND ($form_user_name==$adminuser)) { ShowError("Kan de administrator (\$adminuser) niet verwijderen"); }
if($file=fopen($htpasswd,"w")) {
for($i=0;$i<count($user_name);$i++) {
if(strtolower($user_name[$i])==strtolower($form_user_name)) {
$user_line[$i]="$form_user_name:".crypt($form_user_pass_1,$encryption);
if($form_user_delete) { $user_line[$i]=""; }
}
if($user_line[$i]) { fputs($file,"$user_line[$i]\n"); }
}
fclose($file);
} else { ShowError("Kan $htpasswd niet overschrijven, chmod 606 $htpasswd kan helpen"); }
Header("Location: $scripturi");
exit();
} elseif($action=="user_ch") {
if($form_user_pass_1!=$form_user_pass_2) { ShowError("Nieuw wachtwoord en Nieuw wachtwoord opnieuw komen niet overeen"); }
for($i=0;$i<count($user_name);$i++) {
if(strtolower($user_name[$i])==strtolower($curruser)) {
if(crypt($form_user_currpass,$user_pass[$i]) == $user_pass[$i]) {
$user_line[$i]="$curruser:".crypt($form_user_pass_1,$encryption);
} else { ShowError("Het huidige wachtwoord is incorrect opgegeven"); }
}
}
if($file=fopen($htpasswd,"w")) {
for($i=0;$i<count($user_name);$i++) {
fputs($file,"$user_line[$i]\n");
}
fclose($file);
} else { ShowError("Kan $htpasswd niet overschrijven, chmod 606 $htpasswd kan helpen"); }
Header("Location: $scripturi");
exit();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title><?php echo "$authname htaccess"; ?></title>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
<?php if($curruser==$adminuser) { ?>
<form name="form_user_add" action="<?php echo $scripturi; ?>" method="POST">
<input type="hidden" size="-1" name="action" value="user_add">
<table border="1" cellspacing="0" cellpadding="3">
<tr><td bgcolor="#000099"><b><font color="#ffffff">Gebruiker toevoegen</font></b></td></tr>
<tr><td>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td>Gebruikersnaam:</td><td><input type="text" name="form_user_name" size="20"></td></tr>
<tr><td>Nieuw wachtwoord:</td><td><input type="password" name="form_user_pass_1" size="20"></td></tr>
<tr><td>Nieuw wachtwoord opnieuw: </td><td><input type="password" name="form_user_pass_2" size="20"></td></tr>
<tr><td colspan="2" align="right"><input type="submit" value="Voeg toe"></td></tr>
</table>
</td></tr>
</table>
</form>
<form name="form_user_edit" action="<?php echo $scripturi; ?>" method="POST">
<input type="hidden" size="-1" name="action" value="user_edit">
<table border="1" cellspacing="0" cellpadding="3">
<tr><td bgcolor="#000099"><b><font color="#ffffff">Gebruiker bewerken</font></b></td></tr>
<tr><td>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td>Gebruikersnaam:</td><td><select name="form_user_name" size="1"><?php
for ($i=0;$i<count($user_name);$i++) {
echo "<option value=\"$user_name[$i]\">$user_name[$i]</option>";
}
?></select></td></tr>
<tr><td>Nieuw wachtwoord:</td><td><input type="password" name="form_user_pass_1" size="20"></td></tr>
<tr><td>Nieuw wachtwoord opnieuw: </td><td><input type="password" name="form_user_pass_2" size="20"></td></tr>
<tr><td> </td><td><input type="checkbox" name="form_user_delete"> Delete user</td></tr>
<tr><td colspan="2" align="right"><input type="submit" value="Bewerk"></td></tr>
</table>
</td></tr>
</table>
</form>
<?php } ?>
<form name="form_user_ch" action="<?php echo $scripturi; ?>" method="POST">
<input type="hidden" size="-1" name="action" value="user_ch">
<table border="1" cellspacing="0" cellpadding="3">
<tr><td bgcolor="#000099"><b><font color="#ffffff">Wachtwoord veranderen</font></b></td></tr>
<tr><td>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td>Gebruikersnaam:</td><td><?php echo $curruser; ?></td></tr>
<tr><td>Huidig wachtwoord:</td><td><input type="password" name="form_user_currpass" size="20"></td></tr>
<tr><td>Nieuw wachtwoord:</td><td><input type="password" name="form_user_pass_1" size="20"></td></tr>
<tr><td>Nieuw wachtwoord opnieuw: </td><td><input type="password" name="form_user_pass_2" size="20"></td></tr>
<tr><td colspan="2" align="right"><input type="submit" value="Wijzig"></td></tr>
</table>
</td></tr>
</table>
</form>
</body>
</html>
$htaccess = '.htaccess';
$adminuser="admin";
$encryption=CRYPT_MD5;
$curruser=$PHP_AUTH_USER;
$scripturi="http://$HTTP_HOST:$SERVER_PORT$SCRIPT_NAME";
function ShowError($errorstring) {
echo "<html><body><h1>$errorstring</h1></body></html>\n";
exit();
}
if($file=fopen($htaccess,"w")) {
while(!feof($file)) {
$data=fgets($file,1024);
$tdata=trim($data);
if(substr(strtolower($tdata),0,13)=="authuserfile ") { $htpasswd=substr($tdata,13,strlen($tdata)-13); }
if(substr(strtolower($tdata),0,9)=="authname ") { $authname=substr($tdata,9,strlen($tdata)-9); }
}
fclose($file);
} else { ShowError("Kan $htaccess niet lezen, chmod 404 $htaccess kan helpen"); }
$htpasswd = '.htpasswd';
unset($user_name);unset($user_pass);unset($user_line);
if($file=fopen($htpasswd,"w")) {
while(!feof($file)) {
$data=trim(fgets($file,1024));
$user_line[]=$data;
if($tmp1=strstr($data,":")) {
$user_name[]=substr($data,0,strlen($data)-strlen($tmp1));
$user_pass[]=substr($tmp1,1,strlen($tmp1)-1);
}
}
fclose($file);
} else { ShowError("Kan $htpasswd niet lezen, chmod 606 $htpasswd kan helpen"); }
if($action=="user_add") {
if($curruser!=$adminuser) { ShowError("Alleen de administrator (\$adminuser) kan deze optie gebruiken"); }
for($i=0;$i<count($user_name);$i++) {
if(strtolower($user_name[$i])==strtolower($form_user_name)) { ShowError("Gebruiker $form_user_name bestaat al"); }
}
if($form_user_pass_1!=$form_user_pass_2) { ShowError("Nieuw wachtwoord en Nieuw wachtwoord opnieuw komen niet overeen"); }
if($file=fopen($htpasswd,"a")) {
fputs($file,"$form_user_name:".crypt($form_user_pass_1,$encryption)."\n");
fclose($file);
} else { ShowError("Kan $htpasswd niet bewerken, chmod 606 $htpasswd kan helpen"); }
Header("Location: $scripturi");
exit();
} elseif($action=="user_edit") {
if($curruser!=$adminuser) { ShowError("Alleen de administrator (\$adminuser) kan deze optie gebruiken"); }
if(($form_user_pass_1!=$form_user_pass_2) AND (!$form_user_delete)) { ShowError("Nieuw wachtwoord en Nieuw wachtwoord opnieuw komen niet overeen"); }
if($form_user_delete AND ($form_user_name==$adminuser)) { ShowError("Kan de administrator (\$adminuser) niet verwijderen"); }
if($file=fopen($htpasswd,"w")) {
for($i=0;$i<count($user_name);$i++) {
if(strtolower($user_name[$i])==strtolower($form_user_name)) {
$user_line[$i]="$form_user_name:".crypt($form_user_pass_1,$encryption);
if($form_user_delete) { $user_line[$i]=""; }
}
if($user_line[$i]) { fputs($file,"$user_line[$i]\n"); }
}
fclose($file);
} else { ShowError("Kan $htpasswd niet overschrijven, chmod 606 $htpasswd kan helpen"); }
Header("Location: $scripturi");
exit();
} elseif($action=="user_ch") {
if($form_user_pass_1!=$form_user_pass_2) { ShowError("Nieuw wachtwoord en Nieuw wachtwoord opnieuw komen niet overeen"); }
for($i=0;$i<count($user_name);$i++) {
if(strtolower($user_name[$i])==strtolower($curruser)) {
if(crypt($form_user_currpass,$user_pass[$i]) == $user_pass[$i]) {
$user_line[$i]="$curruser:".crypt($form_user_pass_1,$encryption);
} else { ShowError("Het huidige wachtwoord is incorrect opgegeven"); }
}
}
if($file=fopen($htpasswd,"w")) {
for($i=0;$i<count($user_name);$i++) {
fputs($file,"$user_line[$i]\n");
}
fclose($file);
} else { ShowError("Kan $htpasswd niet overschrijven, chmod 606 $htpasswd kan helpen"); }
Header("Location: $scripturi");
exit();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title><?php echo "$authname htaccess"; ?></title>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
<?php if($curruser==$adminuser) { ?>
<form name="form_user_add" action="<?php echo $scripturi; ?>" method="POST">
<input type="hidden" size="-1" name="action" value="user_add">
<table border="1" cellspacing="0" cellpadding="3">
<tr><td bgcolor="#000099"><b><font color="#ffffff">Gebruiker toevoegen</font></b></td></tr>
<tr><td>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td>Gebruikersnaam:</td><td><input type="text" name="form_user_name" size="20"></td></tr>
<tr><td>Nieuw wachtwoord:</td><td><input type="password" name="form_user_pass_1" size="20"></td></tr>
<tr><td>Nieuw wachtwoord opnieuw: </td><td><input type="password" name="form_user_pass_2" size="20"></td></tr>
<tr><td colspan="2" align="right"><input type="submit" value="Voeg toe"></td></tr>
</table>
</td></tr>
</table>
</form>
<form name="form_user_edit" action="<?php echo $scripturi; ?>" method="POST">
<input type="hidden" size="-1" name="action" value="user_edit">
<table border="1" cellspacing="0" cellpadding="3">
<tr><td bgcolor="#000099"><b><font color="#ffffff">Gebruiker bewerken</font></b></td></tr>
<tr><td>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td>Gebruikersnaam:</td><td><select name="form_user_name" size="1"><?php
for ($i=0;$i<count($user_name);$i++) {
echo "<option value=\"$user_name[$i]\">$user_name[$i]</option>";
}
?></select></td></tr>
<tr><td>Nieuw wachtwoord:</td><td><input type="password" name="form_user_pass_1" size="20"></td></tr>
<tr><td>Nieuw wachtwoord opnieuw: </td><td><input type="password" name="form_user_pass_2" size="20"></td></tr>
<tr><td> </td><td><input type="checkbox" name="form_user_delete"> Delete user</td></tr>
<tr><td colspan="2" align="right"><input type="submit" value="Bewerk"></td></tr>
</table>
</td></tr>
</table>
</form>
<?php } ?>
<form name="form_user_ch" action="<?php echo $scripturi; ?>" method="POST">
<input type="hidden" size="-1" name="action" value="user_ch">
<table border="1" cellspacing="0" cellpadding="3">
<tr><td bgcolor="#000099"><b><font color="#ffffff">Wachtwoord veranderen</font></b></td></tr>
<tr><td>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td>Gebruikersnaam:</td><td><?php echo $curruser; ?></td></tr>
<tr><td>Huidig wachtwoord:</td><td><input type="password" name="form_user_currpass" size="20"></td></tr>
<tr><td>Nieuw wachtwoord:</td><td><input type="password" name="form_user_pass_1" size="20"></td></tr>
<tr><td>Nieuw wachtwoord opnieuw: </td><td><input type="password" name="form_user_pass_2" size="20"></td></tr>
<tr><td colspan="2" align="right"><input type="submit" value="Wijzig"></td></tr>
</table>
</td></tr>
</table>
</form>
</body>
</html>
Ik ben niet zo goed pet php maar het werkt niet.
Iemand een idee of een ander script?
Of moet ik een login systeem maken met database?
Al vast bedankt.
Gewijzigd op 29/01/2012 13:53:08 door Radio Delta
Login systeem met db lijkt me vele malen beter dan met een (tekst)bestand.
Zoek iets met onderstaande opties.
- inloggen
- wachtwoord wijzigen (gebruikers zelf)
- gebruikers aanmaken alleen door admin
Iemand een optie waar dit mee kan?
P.s.: je kunt ook gebruik maken van 'database authentication', zie: http://httpd.apache.org/docs/1.3/howto/auth.html
Heb op dit forum al gezocht maar kan niet precies vinden wat ik zoek. Mag ook met database zijn.