[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: change password CGI



On Mon, 8 Nov 1999, Chad A. Adlawan wrote:

chadi > > > 
chadi > > > Does anyone have a CGI currently that I can use in apache ssl for users to
chadi > > > change the password vire the WWW. 
chadi > > > 
chadi > > > I'm sure it's been done b4, so instead of re-inventing the wheel and
chadi > > > writing it from scratch again, I thought I'd see if anyone has a CGI or
chadi > > > php3 script that can do this already??? 
chadi > > 
chadi > > Have you search in http://cgi.resourceindex.com/ ???
chadi > > 
chadi > > -- 
chadi > 
chadi > 
chadi >     im interested in the same script myself, PHP3 preferred.  i tried looking at cgi.resourceindex.com and didnt find anything.  
chadi >     anybody has any suggestioons ?


----------snip---------------------------------------------------------
/* Use poppassd to change passwords */
/* Based upon a script for POP3 by Manuel Lemos (mlemos@acm.org) */

class POPPASS
{
 var $hostname="";
 var $port=106;

 /* Private variables - DO NOT ACCESS */

 var $connection=0;
 var $state="DISCONNECTED";
 var $greeting="";
 var $must_update=0;


 /* Private methods - DO NOT CALL */

 Function GetLine()
 {
  for($line="";;)
  {
   if(feof($this->connection))
    return(0);
   $line.=fgets($this->connection,100);
   $length=strlen($line);
   if($length>=2
   && substr($line,$length-2,2)=="\r\n")
    return(substr($line,0,$length-2));
  }
 }

 Function PutLine($line)
 {
  return(fputs($this->connection,"$line\r\n"));
 }

 Function OpenConnection()
 {
  if($this->hostname=="")
   return("2 it was not specified a valid hostname");
  switch(($this->connection=fsockopen($this->hostname,$this->port)))
  {
   case -3:
    return("-3 socket could not be created");
   case -4:
    return("-4 dns lookup on hostname \"$hostname\" failed");
   case -5:
    return("-5 connection refused or timed out");
   case -6:
    return("-6 fdopen() call failed");
   case -7:
    return("-7 setvbuf() call failed");
   default:
    return("");
  }
 }

 Function CloseConnection()
 {
  if($this->connection!=0)
  {
   fclose($this->connection);
   $this->connection=0;
  }
 }

 /* Public methods */

 /* NewPass method - Change the pasword */

 Function NewPass($server,$port,$user,$pass,$newpass) {
  $this->hostname = $server;
  $this->port     = $port;

  if($this->state!="DISCONNECTED")
   return("1 a connection is already opened");
  if(($error=$this->OpenConnection())!="")
   return($error);
  $this->greeting=$this->GetLine();
  if(GetType($this->greeting)!="string"
  || strtok($this->greeting," ")!="200")
  {
   $this->CloseConnection();
   return("3 POPPASSD server greeting was not found");
  }


   if($this->PutLine("USER $user")==0)
    return("Could not send the USER command");
   $response=$this->GetLine();
   if(GetType($response)!="string")
    return("Could not get user login entry response");
   if(strtok($response," ")!="200")
    return("User error: ".strtok("\r\n"));

   if($this->PutLine("PASS $pass")==0)
    return("Could not send the PASS command");
   $response=$this->GetLine();
   if(GetType($response)!="string")
    return("Could not get password entry response");
   if(strtok($response," ")!="200")
    return("Password error: ".strtok("\r\n"));

   if($this->PutLine("NEWPASS $newpass")==0)
    return("Could not send the NEWPASS command");
   $response=$this->GetLine();
   if(GetType($response)!="string")
    return("Could not get new password entry response");
   if(strtok($response," ")!="200")
    return("New password error: ".strtok("\r\n"));
 }
 
}
----------snip---------------------------------------------------------

Install poppassd.

Include the class above within your php program and then use:

$p = new POPPASS;
$p->NewPass("host.domain.com",106,"fred","oldpass","newpass");


Thanks to Manuel Lemos for the original POP3 class that  I modofied to
create this. (You're welcome Andy)

Hope this helps
Cheers
Mike

--------------------------------------------------------------
[ LiveWire ] 021-533820/06-3788206/Mike@LiveWire.gen.nz
--------------------------------------------------------------


Reply to: