Начало Вход/Регистрация Помощ Tazi stranica s latinski bukwi
Области
 Новини
 Актуална тема
 Linux портали
 Какво е Линукс?
 Въпроси-отговори
 Форуми
   •Трудова борса
   •Конкурс
 Статии
 Дистрибуции
   •Поръчка на CD
 Made In BG
 Файлове
 Връзки
 Галерия
 Конференции
Настройки
 Външен вид
 Предложения
 Направи си сам
И още ...
 За нас
 Линукс за българи ЕООД
 Линк към нас
 Предложения

Подкрепяно от:
TelePoint - Място за хора със свободни идеи

SiteGround

initLab

Adsys Group

SAP Bulgaria

Въпроси отговори
Въпрос: PHP HELP ME PLS!
[Търси: ]

ВНИМАНИЕ: Използвайте форумите на сайта за дa зададете вашите въпроси.

Към началото |Добави въпрос |Отговори
 
Въпрос
От: Nikolai (KaL1TaP< at >mail__dot__bg) Дата: 04/06/2003
 Hora izkam da naprava v saita mi s pomoshta na php script da
 naprava Login i password na 50 usera moje li i ako moje pls
 kajete kak mnggogo vi se molq eto php scripta koito namerih
 v neta kajete kak da go naprava ... 4e da baca . MOLQVI SE
MNGOGOGOG !]
Tova e purvq files access.cgi ima i README


#!/usr/bin/perl
#
#
#######################################################
# Access Denied version 1.2
#
# Created by: Solution Scripts 
# Email: solutions@solutionscripts.com
# Web: http://solutionscripts.com
#
#######################################################
#
#
# COPYRIGHT NOTICE:
#
# Copyright 2000 Solution Scripts All Rights Reserved.
#
 # This program is being distributed as freeware. It may be
used and
 # modified free of charge, so long as this copyright notice,
the header 
 # above and all the footers in the program that give me
credit remain 
# intact. Please also send me an email, and let me know 
# where you are using this script. 
#
 # By using this program you agree to indemnify Solution
Scripts from any liability.
#
 # Selling the code for this program without prior written
consent is
 # expressly forbidden. Obtain permission before
redistributing this
 # program over the Internet or in any other medium. In all
cases
# copyright and header must remain intact.
#
######################################################
#
#
# PLEASE READ THE README INCLUDED IN THIS ZIP OR
# VISIT http://faq.solutionscripts.com/docs/accessdenied
# BEFORE ATTEMPTING TO INSTALL ACCESS-DENIED

 $protect{'Test 1'} =
"/home/httpd/cgi-bin/demos/access_denied/.htpasswd";
 $protect{'A Test 3'} =
"/home/httpd/cgi-bin/demos/access_denied/.htpasswd3";
 $protect{'Test 2'} =
"/home/httpd/cgi-bin/demos/access_denied/.htpasswd1";


# Full path to password file ....... including file name
$password_location = "password.txt";

# THATS ALL FOLKS..................
########################################################


$thisurl = $ENV{'SCRIPT_NAME'};
$use_password = 0;

$VERSION = "1.2";

@char_set = ('a'..'z','0'..'9');

## CREATE SELECT LIST ##
foreach $key (sort_hashs(\%protect)) {
$select .= "<option value=\"$key\">$key";
}

### FORM DATA ###
if ($ENV{'QUERY_STRING'}) { 
@pairs=split(/&/,$ENV{'QUERY_STRING'});
$ftype = "GET";
}
if ($ENV{'CONTENT_LENGTH'}) {
read(STDIN, my $buffer, $ENV{'CONTENT_LENGTH'});
push(@pairs,split(/&/, $buffer));
$ftype = "POST";
}

foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",
hex($1))/eg;
 if ($INPUT{$name}) { $INPUT{$name} =
$INPUT{$name}.",".$value; }
else { $INPUT{$name} = $value; }
}

@passset = ('a'..'z');
for ($i = 0; $i < 2; $i++) {
$randum_num = int(rand($#passset + 1));
$salt .= @passset[$randum_num];
}


print "Content-type: text/html \n\n";

&Top;

open (PASSWORD, "$password_location");
$password = <PASSWORD>;
close (PASSWORD);

chop ($password);

### SET NEW PASSWORD
&newpass if $INPUT{'newpass'};

### SET NEW PASSWORD ###
unless ($password || $use_password) {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC" width=500>
 <TR><TD><TABLE cellpadding=5 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
 Before you can do anything else, you'll need to set your
administrative password.
This will allow you to use the administrative functions.
<HR noshade size=1 width=85%>
Please enter your desired password below. (Enter it twice.)
<FORM METHOD=POST ACTION="$thisurl">
<INPUT TYPE=HIDDEN NAME="newpass" value="hit return">
 <INPUT TYPE=SUBMIT NAME=newpass VALUE="Set Admin Password:">

<INPUT TYPE=PASSWORD NAME=passad SIZE=10>
<INPUT TYPE=PASSWORD NAME=passad2 SIZE=10>
</FORM>
</TD></TR></TABLE>
</TD></TR></TABLE>
<BR><BR>
~;

&Bottom(0);
exit;
}

### PROMPT FOR PASSWORD ###
unless ($INPUT{'password'} || $use_password) {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC" width=500>
 <TR><TD><TABLE cellpadding=5 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
Welcome, please enter your password
<HR noshade size=1 width=85%>
<FORM METHOD=POST ACTION="$thisurl">
<INPUT TYPE=HIDDEN NAME="admin" value="hit return">
<INPUT TYPE=PASSWORD NAME=password SIZE=10>  
<INPUT TYPE=SUBMIT NAME=admin VALUE=" Proceed "> 
</FORM>
</TD></TR></TABLE>
</TD></TR></TABLE>
<BR><BR>
~;

&Bottom(0);
exit;
}

&checkpassword unless $use_password;

if ($INPUT{'add'}) { &add; }
elsif ($INPUT{'remove'}) { &remove; }
elsif ($INPUT{'delete_select'}) { &delete_select; }
elsif ($INPUT{'delete_final'}) { &delete_final; }
else { &admin; }

sub admin {

### PRINT MAIN ADMIN SCREEN ###
print qq~

<form action="$thisurl" method=post>
 <INPUT TYPE="HIDDEN" NAME="password"
value="$INPUT{'password'}">

 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#000000">
 <TR><TD><TABLE cellpadding=4 cellspacing=1 border=0
width="100%">

 <TR bgcolor="#CCCCCC"><TD colspan=3 align=center><B>Add or
remove logins</B></TD></TR>

<TR bgcolor="#FFFFFF">
<TD>Login:</TD>
<TD><input type=text name="login" size=25></TD>
</TR>

<TR bgcolor="#FFFFFF">
<TD>Password:</TD>
<TD><input type=text name="pass" size=25></TD>
</TR>

<TR bgcolor="#FFFFFF">
<TD>Retype:</TD>
<TD><input type=text name="pass2" size=25></TD>
</TR>

<TR BGCOLOR="#FFFFFF">
<TD>Select Dir:</TD>
<TD><SELECT NAME="dir">$select</SELECT></TD>
</TR>

<TR BGCOLOR="#FFFFFF">
<TD>Use rules:</TD>
 <TD><input type="Checkbox" name="rules" value="on" checked>
Yes</TD>
</TR>

<TR BGCOLOR="#FFFFFF">
 <TD colspan=2 align=center><INPUT TYPE="SUBMIT" NAME="add"
VALUE=" Add Login ">
  
 <INPUT TYPE="SUBMIT" NAME="remove" VALUE=" Delete Login
"></TD>
</TR>

</TABLE></TD></TR></TABLE>


<BR><BR>



 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#000000">
 <TR><TD><TABLE cellpadding=7 cellspacing=1 border=0
width="100%">

<TR BGCOLOR="#CCCCCC">
 <TD align=center colspan=2><B>Manage Password
Files</B></TD>
</TR>

<TR BGCOLOR="#FFFFFF">
<TD>View passwords in the dir:</TD>
<TD>Begining with the letter: </TD>
</TR>

<TR BGCOLOR="#FFFFFF" align=center>
<TD><SELECT NAME="manage_dir">$select</SELECT></TD>
 <TD valign=top rowspan=2><SELECT name=letters multiple
size=6>
<OPTION value="ALL Letters" Selected>All Letters
~;

foreach $ch(@char_set) {
print "<OPTION VALUE=\"$ch\">$ch\n";
}

print qq~
</SELECT></TD>
</TR>

<TR BGCOLOR="#FFFFFF" align=center>
 <TD><INPUT TYPE=SUBMIT name="delete_select" value=" Submit
"></TD>
</TR>

</TABLE>
</TD></TR></TABLE>
</FORM>
~;

&Bottom(0);
exit;
}

##### SET NEW ADMIN PASSWORD ####
sub newpass {

unless ($INPUT{'passad'} eq $INPUT{'passad2'}) {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
Your administrative password was 
not set, as the two entries were different!
</TD></TR></TABLE>
</TD></TR></TABLE>
~;
&Bottom(0);
exit;
}


if ($INPUT{'passad'}) {
$newpassword = crypt($INPUT{'passad'}, $salt);
}
else {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
 <TR BGCOLOR="#FFFFFF"><TD align=center>You must enter a
password!
</TD></TR></TABLE>
</TD></TR></TABLE>
~;
&Bottom(0);
exit;
}

unless ( -e "$password_location" ) { 
 open (PASSWORD, ">$password_location")|| &error("Error
setting Password");;
print PASSWORD "$newpassword";
close (PASSWORD);
}
else {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
 Error setting your admin password<BR><BR>A
$password_location file was found in this dir.<BR><BR>
Due to security reasons, it will not be overwritten.
</TD></TR></TABLE>
</TD></TR></TABLE>
~;
&Bottom(1);
exit;
}

print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
Your administrative password has been set.
</TD></TR></TABLE>
</TD></TR></TABLE>
<BR><BR>
~;

&admin;
exit;
}

#### ADD A NEW PASSWORD ####
sub add {

$err = '';
unless ($INPUT{'login'}) { 
 $err .= "You have not entered a login, please go back an try
again<BR>\n";
}
unless ($INPUT{'pass'} eq $INPUT{'pass2'}) {
 $err .= "The two passwords you entered must be the
same<br>\n";
}
if ($INPUT{'rules'}) {
$pwderr = &check_pwd($INPUT{'pass'},$INPUT{'login'},''); 
 $err .= "Password Error: ". $pwderr if ($pwderr && ($pwderr
!= 1));
}

if ($err) {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
<B>Error setting login/password</b><BR><BR>
$err
<BR><BR>
 To set the password as-is, be sure to uncheck the rules
box.
</TD></TR></TABLE>
</TD></TR></TABLE>
~;
&Bottom(1);
exit;
}

$password = crypt($INPUT{'pass'}, $salt);

open(LIST,"$protect{$INPUT{'dir'}}");
@addresses=<LIST>;
close(LIST);

foreach $line(@addresses) {
@login = split(/\:/,$line);
if ($login[0] eq $INPUT{'login'}) {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
 <TR BGCOLOR="#FFFFFF"><TD align=center>The login you
 entered, <b>$INPUT{'login'}</b> already exists in the
$INPUT{'dir'} directory,
therefore was not set.
</td></TR></TABLE>
</td></TR></TABLE>
~;
&Bottom(1);
exit;
}
}

 open(LIST,">>$protect{$INPUT{'dir'}}") || &error("Unable to
print to $protect{$INPUT{'dir'}}");
print LIST "$INPUT{'login'}:$password\n";
close(LIST);

print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
 <TR BGCOLOR="#FFFFFF"><TD align=center>The login
 <b>$INPUT{'login'}</b> was successfully added to the
$INPUT{'dir'} directory
</td></TR></TABLE>
</td></TR></TABLE><BR><BR>
~;

&admin;
exit;
}

#### REMOVE A PASSWORD ####
sub remove{

open(LIST,"$protect{$INPUT{'dir'}}");
@addresses=<LIST>;
close(LIST);

 open(LIST,">$protect{$INPUT{'dir'}}") || &error("Unable to
write to $protect{$INPUT{'dir'}}");
$found=0;
foreach $line (@addresses) {
@login = split(/\:/,$line);
if ($login[0] eq $INPUT{'login'}) {
$found=1;
}
else {
print LIST $line;
}
}
close(LIST);

if ($found) {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
 The login <b>$INPUT{'login'}</b> has been removed from the
$INPUT{'dir'} directory
</TD></TR></TABLE>
</TD></TR></TABLE>
<BR><BR>
~;
&admin;
exit;
}
else {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
 The login <b>$INPUT{'loginn'}</b> has was not found in the
$INPUT{'dir'} directory,
therefore not removed
</TD></TR></TABLE>
</TD></TR></TABLE>
<BR><BR>
~;
&admin;
exit;
}

}


#### DELETE MULTIPLE ####
sub delete_select {

 open(LIST,"$protect{$INPUT{'manage_dir'}}") || &error("Can
not open $protect{$INPUT{'manage_dir'}} for reading");
@addresses=<LIST>;
close(LIST);
@addresses = sort {$a cmp $b} @addresses;

print <<EOF;
<FORM METHOD=POST ACTION="$thisurl">
 <input type="Hidden" name="password"
value="$INPUT{'password'}">
 <input type="Hidden" name="manage_dir"
value="$INPUT{'manage_dir'}">

 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#000000">
 <TR><TD><TABLE cellpadding=5 cellspacing=1 border=0
width="100%">
<TR bgcolor="#CCCCCC"><TD align=center>
 Showing all logins from the <B>$INPUT{'manage_dir'}</B>
directory<BR>
that start with the letter: <B>$INPUT{'letters'}</B>
<BR><BR>
Select logins to delete
</TD></TR></TABLE>
</TD></TR></TABLE>

<br><br>

 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#000000">
 <TR><TD><TABLE cellpadding=3 cellspacing=1 border=0
width="100%">
<TR align=left bgcolor="#FFFFFF">


EOF

$num_email=0;
$color{'1'} = "#DDDDDD";
$color{'2'} = "#CCCCCC";
$colors=1;
$total =0;

foreach $line(@addresses) {
chomp($line);
@login = split(/\:/,$line);

my @accarray = split(//,$login[0]);
## LETTER SELECT ##
unless ($INPUT{'letters'} =~ /ALL/) {
unless ($INPUT{'letters'} =~ /$accarray[0]/) { 
next;
}
}

$total++;

if ($num_email == 3) { 
print "</TR><TR align=left bgcolor=\"#FFFFFF\">"; 
$num_email=0;
}
print "<TD bgcolor=$color{$colors}>";
 print "<INPUT TYPE=\"CHECKBOX\" NAME=\"delete\"
VALUE=\"$line\"> -- $login[0]</TD>";
$num_email++;
if ($colors == 2) {
$colors = 0;
}
$colors++;
}

$span = 3 - $num_email;

if ($span) {
print qq~
<TD colspan=$span> </TD>
~;
}

print qq~
</TR>
<TR bgcolor="#DDDDDD" align=center>
<TD colspan=3><B>$total</B> logins found</TD>
</TR>
<TR bgcolor="#CCCCCC" align=center>
 <TD colspan=3><INPUT TYPE="SUBMIT" NAME="delete_final"
VALUE="Delete selected logins"></TD>
</TR></TABLE>
</TD></TR></TABLE>
</form>
~;
&Bottom(1);
exit; 
} 

#### DELETE MULITIPLE LOGIN ####
sub delete_final {

 open(LIST,"$protect{$INPUT{'manage_dir'}}")|| &error("Unable
to open $protect{$INPUT{'manage_dir'}}");
@addresses=<LIST>;
close(LIST);

print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
 The following logins were deleted from the
$INPUT{'manage_dir'} directory<BR><BR>
~;

@deleting = split(/\,/,$INPUT{'delete'});
foreach $line(@deleting) {
@addresses = grep{ !(/^$line/i) } @addresses;
@login = split(/\:/,$line);
print "$login[0] <BR>";
}

print qq~
</TD></TR></TABLE>
</TD></TR></TABLE>
<BR><BR>
~;

 open(LIST,">$protect{$INPUT{'manage_dir'}}") ||
 &error("Unable to write to
$protect{$INPUT{'manage_dir'}}");
print LIST @addresses;
close(LIST);

&admin;
exit;
}

#### CHECK PASSWORD ####
sub checkpassword {

 open (PASSWORD, "$password_location") || &error("Unable to
open $password_location");
$password = <PASSWORD>; 
close (PASSWORD);

if ($INPUT{'password'}) {
$newpassword = crypt($INPUT{'password'}, $password);
unless ($newpassword eq $password) {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>Wrong Password 
</TD></TR></TABLE></TD></TR></TABLE>
~;

&Bottom(0);
exit;
}
}
else {
print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
 <TR BGCOLOR="#FFFFFF"><TD align=center>You must enter your
admin password
</TD></TR></TABLE>
</TD></TR></TABLE>
~;
&Bottom(0);
exit;
}

}

#### PRINT TOP ####
sub Top {

print qq~
 <HTML><HEAD><TITLE>Access Denied -- Solution
Scripts</TITLE>
<style type="text/css">
 body { font-size: 12px; font-family:
verdana,helvetica,arial; } 
 td { font-size: 12px; font-family: verdana,helvetica,arial;
}
</STYLE>
</HEAD>
 <BODY LEFTMARGIN="0" RIGHTMARGIN="0" TOPMARGIN="0"
 BOTTOMMARGIN="0" BGCOLOR="white" TEXT="black" link=blue
vlink=blue alink=blue>

 <TABLE WIDTH=100% CELLPADDING=4 CELLSPACING=0 BORDER=0
BGCOLOR="NAVY">
<TR><TD width=100%>
<FONT color="white" size=+2>Access Denied</FONT>
    
<FONT color="white" size=+1>from</FONT>
 <A HREF="http://solutionscripts.com"><FONT color="white"
size=+1>Solution Scripts</FONT></A>
</TD>
<TD NOWRAP align=right>
<FONT color="white">
Version $VERSION<BR>
 <A
 HREF="http://faq.solutionscripts.com/docs/accessdenied"><FONT
color="white">Manual</FONT></A>
</TD>
</TR></TABLE>
<BR><BR>
<DIV ALIGN=CENTER>

~;

}

#### BOTTOM ####
sub Bottom {


print qq~
</DIV>
<BR>
<BR>
<TABLE bgcolor=white border=0 cellpadding=2 width=100%> 
<TR>
 <TD NOWRAP align=right><font size=-2>Copyright 2000 <A
 HREF="http://solutionscripts.com">Solution Scripts</A>
  </FONT></TD>
</TR></TABLE>
</BODY></HTML>
~;

}

#### ERROR ####
sub error{

$errors = $_[0] ;

print qq~
 <TABLE cellpadding=0 cellspacing=0 border=0
bgcolor="#CCCCCC">
 <TR><TD><TABLE cellpadding=8 cellspacing=1 border=0
width="100%">
<TR BGCOLOR="#FFFFFF"><TD align=center>
<B>An error has occured</B><BR><BR>
The error is: <B>$errors</B><BR>
<B>$!</B>
<BR><BR>

 <A HREF="http://faq.solutionscripts.com/docs/accessdenied"
target="_BLANK">Access Denied Documentation</A>
<BR>
 <A HREF="http://forum.solutionscripts.com"
target="_BLANK">Solution Scripts help forums</A>

</TD></TR></TABLE>
</TD></TR></TABLE>
~;
&Bottom;
exit;

}

sub sort_hashs {
my $x = shift;
my %array = %$x;
sort { $array{$b} cmp $array{$a}; } keys %array; 
}

######### SUB CHECK PASSWORD #########
sub check_pwd {

# portions of code taken from anlpasswd
# ftp://coast.cs.purdue.edu/pub/tools/unix/anlpasswd
# Systems Support Group
# Mathematics & Computer Science Division
# Argonne National Laboratory
# Argonne, Illinois

(my $pass,my $username,my $nickname) = @_;

$nickname = $username unless $nickname;

my $pwderror;

# if ($pass && length($pass) > 8) {
# $pass = substr($pass,0,8);
# };

# Embedded null can spoof crypt routine.

if ($pass =~ /\0/) {
 $pwderror = "Please don't use the null character in your
password.\n";
return ($pwderror);
}

if ($pass =~ /:/) {
 $pwderror = "Please don't use the colon character in your
password. Some vendors have\n";
 $pwderror .= "a problem in changing passwds to something new
when the old has a colon.\n";
return ($pwderror);
}

if (length($pass) < 6) {
$pwderror = "Please use at least 6 characters.\n";
return ($pwderror);
}

if ($pass =~ m!^[A-Z]*\d+$!) {
$pwderror = "Upper case numbering\n";
return ($pwderror); #Upper case with numbers
}

if ($pass =~ m!^\d+\s$!) {
$pwderror = "Watch that whitespace\n";
return ($pwderror); #Numbers with spaces
}

if ($pass =~ m!^\s\d+$!) {
$pwderror = "Watch that whitespace\n";
return ($pwderror); #Spaces with numbers
}

if ($pass =~ m!^[A-Z]*\s$!) {
$pwderror = "Watch that whitespace\n";
return ($pwderror); #Uppercase with spaces
}

if ($pass =~ m!^[a-z]*\s$!) {
$pwderror = "Watch that whitespace\n";
return ($pwderror); #lower case with space
}

if ($pass =~ m!^\s[A-Z]*$!) {
$pwderror = "Watch that whitespace\n";
return ($pwderror); #spaces with Upper case
}

if ($pass =~ m!^\s[a-z]*$!) {
$pwderror = "Watch that whitespace\n";
return ($pwderror); #spaces with lower case
}

if ($pass =~ m!^[a-z]*$!) {
$pwderror = "Mix those cases\n";
return ($pwderror); #all lower case
}

if ($pass =~ m!^\d+$!) {
$pwderror = "It's passWORD not NUMBER\n";
return ($pwderror); #all numbers
}

if ($pass =~ m!^[a-z]*\d+$!) {
$pwderror = "Something a little more complex please\n";
return ($pwderror); #lower case with number
}

if ($pass =~ m!^[A-Z]*$!) {
$pwderror = "no need to SHOUT your choice\n";
return ($pwderror); #all uppercase
}

if ($pass =~ m!^\d+[a-z]*$!) {
$pwderror = "Something a little more complex please\n";
return ($pwderror); #number and lower case
}

if ($pass =~ m!^\d+[A-Z]*$!) {
$pwderror = "Something a little more complex please\n";
return ($pwderror); #number and upper case
}

if ($pass =~ m!^[A-Z]*[a-z]$!) {
$pwderror = "A little backwards today?\n";
return ($pwderror); #all upper followed by lower
}

if ($pass =~ m!^[A-Z][a-z]*$!) {
$pwderror = "Standard capitolization\n";
return ($pwderror); #Standard first letter cap.
}

if ($pass =~ m!^[a-z][A-Z]*$!) {
$pwderror = "Feeling a little shifty today\n";
return ($pwderror); #Backwards of above
}

if ($pass =~ m!^[a-z]*[A-Z]$!) {
$pwderror = "Mix it up a little more\n";
return ($pwderror); #all lower with last cap.
}


if ($pass =~ m!^[-\d/]*$!) { 
if ($pass =~ m!^\d{3}-\d{2}-\d{4}$! ||
$pass =~ m!^\d\d\d\d\d\d\d\d\d$!) {
$pwderror = "Please don't use a Social Security Number!\n";
return ($pwderror);
}
if ($pass =~ m!^\d*/\d*/\d*$! ||
$pass =~ m!^\d*-\d*-\d*$!) {
$pwderror = "Please don't use dates.\n";
return ($pwderror);
}
if ($pass =~ m!^\d\d\d-?\d\d\d\d$!) {
$pwderror = "Please don't use a phone number.\n";
return ($pwderror);
}
if ($pass =~ m!^\d{6,7}$!) {
$pwderror = "Please don't use a short number.\n";
return ($pwderror);
}
}

my $mo;
if ($mo = ($pass =~ /^[ \d]*([a-zA-Z]{3,5})[ \d]*$/) &&
 ($mo =~
 /^(jan|feb|mar(ch)?|apr(il)?|may|june?|july?|aug|sept?|oct|nov|dec)$/i)
) {
$pwderror = "Please don't use dates.\n";
return ($pwderror);
}

if ($pass =~ /$username/i) {
$pwderror = "Please don't use your login id.\n";
return ($pwderror);
}

if ($pass =~ /$nickname/i) {
$pwderror = "Please don't use part of your name.\n";
return ($pwderror);
}

# A sequence of keyboard keys?
(my $foo = $pass) =~ y/A-Z/a-z/;
$foo =~ y/qwertyuiop[]asdfghjkl;'zxcvbnm,.\//a-la-ka-j/;
$foo =~ y/!@#\$%^&*()_+|~/abcdefghijklmn/;
$foo =~ y/-1234567890=\\`/kabcdefghijlmn/;
my @ary = unpack('C*',$foo);
my $ok = 0;
for (my $i = 0; $i < $#ary; ++$i) {
my $diff = $ary[$i+1] - $ary[$i];
$ok = 1 if $diff > 1 || $diff < -1;
}
if (!$ok) {
$pwderror = "Please don't use consecutive keys.\n";
return ($pwderror);
}


# Repeated patterns: ababab, abcabc, abcdabcd
if ( $pass =~ /^(..)\1\1/
|| $pass =~ /^(...)\1/
|| $pass =~ /^(....)\1/ ) {
$pwderror = "Please don't use repeated sequences of $1.\n";
return ($pwderror);
}

# Reversed patterns: abccba abcddcba

if ( $pass =~ /^(.)(.)(.)\3\2\1/
|| $pass =~ /^(.)(.)(.)(.)\4\3\2\1/ ) {
 $pwderror = "Please don't use palindromic sequences of
$1$2$3$4.\n";
return ($pwderror);
}

my $reverse = reverse $username;
if ($pass =~ /$reverse/i) {
 $pwderror = "Please don't use your login id spelled
backwards.\n";
return ($pwderror);
}

return(1); ## GOOD PASSWORD ## whew....!!
}
1;



Отговор #1
От: Djimbo (kvv (a) atsoftconsult-bg< dot >com) Дата: 04/06/2003
Ey choveche tva si e Perl
PHP ima korenno razlichen sintaksis 
Eto ti edim primeren PHP source

<?php
  function authenticate() {
     header('WWW-Authenticate: Basic realm="Test
Authentication System"');
    header('HTTP/1.0 401 Unauthorized');
     echo "You must enter a valid login ID and password to
access this resource\n";
    exit;
  }
 
  if (!isset($_SERVER['PHP_AUTH_USER']) ||
       ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] ==
$_SERVER['PHP_AUTH_USER'])) {
   authenticate();
  } 
  else {
   echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br>";
   echo "Old: {$_REQUEST['OldAuth']}";
    echo "<form action='{$_SERVER['PHP_SELF']}'
METHOD='POST'>\n";
    echo "<input type='hidden' name='SeenBefore'
value='1'>\n";
    echo "<input type='hidden' name='OldAuth'
value='{$_SERVER['PHP_AUTH_USER']}'>\n";
   echo "<input type='submit' value='Re Authenticate'>\n";
   echo "</form></p>\n";
  }
?>


Za poveche info http://www.php.net



Отговор #2
От: kolarov (research __@__ mail[ точка ]bg) Дата: 05/30/2003
 a z6to za polsno ne si wzeme6 naprawo nqkoi gotow PHP mail
 client (bezplaten ako twa te pritesnqwa) i da si go warje6
za saita . naprimer SQwebMail  ili nesto podobno



<< Slackware 9 i modem (0 ) | .tar.gz, .src.rpm, .tgz, .gz, ....software (1 ) >>

 
© 2011-... Асоциация "Линукс за българи"
© 2007-2010 Линукс за българи ЕООД
© 1999-2006 Slavej Karadjov
Ако искате да препечатате или цитирате информация от този сайт прочетете първо това
Външния вид е направен от MOMCHE
Code Version: 1.0.8 H (Revision: 23-09-2011)
 
Изпълнението отне: 0 wallclock secs ( 0.08 usr + 0.00 sys = 0.08 CPU)