Hola, perdon por la demora, estaba con u implementacion y como siempre en esas epocas, sin tiempo.
Yo me base de entrada en esto:
http://isp-control.net/documentation/fre...ia_webmail
y me tiraba un error como que no encontraba alguna clase de ADODB (requiere bajarse un paquete de sourcefoge de adodb). Sinceramente me fue mas facil reemplazar las funciones por las tipicas de PHP (mysql_connect, etc.) que buscarle la solucion. Es un muy buen trabajo el de shiizpa y me sirvió para que con solo modificaciones menores y el cambio de funciones de PHP trabaje muy bien.
Asi me quedo el codigo sin dependencias de adodb:
adodb.inc.php:
---- CORTAR AQUI ----
<?php
define('host','localhost');
define('user','root'); //enter user access to table ISPC
define('pass','aeiouaeiou'); //enter your password
define('database','ispcp');
$conn = mysql_connect(host, user, pass, database);
mysql_select_db(database, $conn);
?>
--------------------------------
change_password.php:
---- CORTAR AQUI ----
<?php
require_once '../../include/ispcp-lib.php';
require '../../include/adodb.inc.php'
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cambiar contraseña del e-mail</title>
<meta name="robots" content="noindex,nofollow">
<link rel="stylesheet" type="text/css" href="/webmail/themes/css/omega.css">
<style type="text/css">
<!--
body, td, input, select, textarea {
font-family:Tahoma, Geneva, sans-serif;
font-size:9px;
}
input, textarea, select {
border:#7f9db9 1px solid;
padding:0px;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#000000" vlink="#000000" alink="#000000">
<form action="" method="post" name="login_form">
<div id="container">
<h1>Cambiar contraseña del e-mail</h1>
<fieldset class="login">
<p class="login">
<table cellpadding="0" cellspacing="0" style="color:#CCC">
<tr>
<td align="left"> <strong>E-mail:</strong></td>
<td><input type="text" name="user" style="width:130px;"/></td>
</tr>
<tr>
<td align="left"> <strong>Password:</strong></td>
<td><input type="password" name="contrasena" style="width:130px;"/></td>
</tr>
<tr>
<td align="left"> <strong>Nueva:</strong></td>
<td><input name="ncontrasena" type="password" style="width:130px;" maxlength="15"/></td>
</tr>
<tr>
<td align="left"> <strong>Repetir nueva:</strong></td>
<td><input type="password" name="rcontrasena" style="width:130px;" maxlength="15"/></td>
</tr>
<tr>
<td colspan="2" align="left"><a href="/webmail">Ir al Webmail</a></td>
</tr>
<tr>
<td align="left"></td>
<td><input type="submit" name="cambiar" value="Change" /></td>
</tr>
</table>
</p>
</fieldset>
</div>
</form>
<?php
if(isset($_POST['cambiar'])=='Change'&&!empty($_POST['user'])&&!empty($_POST['contrasena'])&&!empty($_POST['ncontrasena'])&&!empty($_POST['rcontrasena']))
{
if( isset($_POST['user']) )
$Usuario= mysql_real_escape_string ($_POST['user']);
if( isset($_POST['contrasena']) )
$Contrasena=encrypt_db_password($_POST['contrasena']);
// echo $Contrasena;
$sql = "SELECT mail_id FROM mail_users WHERE mail_addr='$Usuario' and mail_pass='$Contrasena'";
$ret = mysql_query( $sql, $conn );
if( $ret === FALSE)
echo mysql_error();
$UsuarioExiste = mysql_num_rows( $ret );
if( $UsuarioExiste == 1 )
{
if($_POST['ncontrasena']!=$_POST['rcontrasena'])
echo '<p align="center" style="color:#F00">Las nuevas contraseñas no coinciden.</p>';
elseif($_POST['ncontrasena']==$_POST['contrasena'])
echo '<p align="center" style="color:#F00">La nueva password es igual a la actual.</p>';
elseif(empty($_POST['ncontrasena']))
echo '<p align="center" style="color:#F00">Su nueva password no puede esta vacia.</p>';
elseif(strlen($_POST['ncontrasena']) < 6)
echo '<p align="center" style="color:#F00">Su nueva password es muy corta. Debe tener 6 caracteres como minimo.</p>';
elseif(strlen($_POST['ncontrasena']) > 15)
echo '<p align="center" style="color:#F00">Su nueva password es muy larga. No debe ser mas larga que 15 caracteres.</p>';
else
{
$row = mysql_fetch_assoc($ret);
$id = $row['mail_id'];
// echo "ID: $id";
$pass = encrypt_db_password($_POST['ncontrasena']);
// echo "Nueva pass: $pass";
$status = 'change';
$sql = "UPDATE mail_users SET mail_pass='$pass', status='$status' WHERE mail_id=$id ";
mysql_query( $sql, $conn );
//echo "Se produjo el error: " . mysql_error();
echo '<p align="center" style="color:#060">Contraseña cambiada correctamente.</p>';
send_request();
}
}
else echo '<p align="center" style="color:#F00">Atencion! Los datos ingresados no son correctos.</p>';
}
elseif(isset($_POST['cambiar'])=='Change')
{
echo '<p align="center" style="color:#F00">Complete los datos que faltan.</p>';
}
?>
</body>
</html>
-----------------------
En cuanto a incorporar el cambio de contraseña a ispcp, yo lo veo no desde el punto de vista de un Administrador de Sistemas sino de un administrador de ISP que le quiere dar un poco de flexibilidad a los usuarios, es decir, cada uno deberia poder cambiar su contrase;a sin llamar al ISP para solicitarle esto (y pasarle la password).