Current time: 12-25-2024, 04:37 PM Hello There, Guest! (LoginRegister)


Post Reply 
[HOWTO] Cambiar contraseña e-mail por usuario BETA
Author Message
shiizpa Offline
Junior Member
*

Posts: 69
Joined: Mar 2009
Reputation: 2
Post: #1
Toungue [HOWTO] Cambiar contraseña e-mail por usuario BETA
1. Descargar Adodb e instalar en los includes de ispcp

Code:
cd /var/www/ispcp/gui/include

Code:
wget http://softlayer.dl.sourceforge.net/sourceforge/adodb/adodb507.zip

Code:
aptitude install unzip

Code:
unzip adodb507.zip

2. creamos la conección con adodb
nano /var/www/ispcp/gui/include/adodb.inc.php
PHP Code:
<?php
require_once'adodb5/adodb.inc.php';
define('host','localhost');
define('user','root');//ingresar usuario con acceso a la tabla ISPC 
define('pass','tucontraseña');//ingresar su contraseñna
define('database','ispcp');
$db ADONewConnection('mysql');
$db->Connect(hostuserpassdatabase);
?>

3. Colocar script para cambiar contraseña
Code:
nano /var/www/ispcp/gui/tools/webmail/change_password.php
(Esta adjunto)
PHP Code:
<?php
require '../../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&ntilde;a 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&ntilde;a e-mail</h1>
    <fieldset class="login">
      <p class="login">
      <table cellpadding="0" cellspacing="0" style="color:#CCC">
        <tr>
          <td align="left">&nbsp;<strong>Usuario:</strong></td>
          <td><input type="text" name="user"  style="width:130px;"/></td>
        </tr>
        <tr>
          <td align="left">&nbsp;<strong>Contrase&ntilde;a:</strong></td>
          <td><input type="password" name="contrasena"  style="width:130px;"/></td>
        </tr>
        <tr>
          <td align="left">&nbsp;<strong>Nueva</strong></td>
          <td><input name="ncontrasena" type="password"  style="width:130px;" maxlength="15"/></td>
        </tr>
        <tr>
          <td align="left">&nbsp;<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="Cambiar" /></td>
        </tr>
      </table>
      </p>
    </fieldset>
  </div>
</form>
<?php
if(isset($_POST['cambiar'])=='Cambiar'&&!empty($_POST['user'])&&!empty($_POST['contrasena'])&&!empty($_POST['ncontrasena'])&&!empty($_POST['rcontrasena']))
{
    if(isset(
$_POST['user']))$Usuario=$_POST['user'];
    if(isset(
$_POST['contrasena']))$Contrasena=encrypt_db_password($_POST['contrasena']);
    
$UsuarioExiste=(int)$db->GetOne('SELECT count(mail_id) FROM mail_users WHERE mail_addr = ? and mail_pass = ?',array($Usuario,$Contrasena));
    
$id=$db->GetOne('SELECT mail_id FROM mail_users WHERE mail_addr = ? and mail_pass = ?',array($Usuario,$Contrasena));
    if(
$UsuarioExiste=='1')
    {
        if(
$_POST['ncontrasena']!=$_POST['rcontrasena']) echo '<p align="center" style="color:#F00">La nueva contrase&ntilde;a no concuerda.</p>';
        elseif(
$_POST['ncontrasena']==$_POST['contrasena']) echo '<p align="center" style="color:#F00">La nueva contrase&ntilde;a es igual a la actual.</p>';
        elseif(empty(
$_POST['ncontrasena'])) echo '<p align="center" style="color:#F00">Su nueva contrase&ntilde;a no puede estar vac&iacute;a.</p>';
        elseif(
strlen($_POST['ncontrasena']) < 6) echo '<p align="center" style="color:#F00"> Su nueva contrase&ntilde;a es demasiado corto. Debe ser al menos 6 caracteres.</p>';
        elseif(
strlen($_POST['ncontrasena']) > 15) echo '<p align="center" style="color:#F00">Su nueva contrase&ntilde;a es demasiado larga. Debe ser no m&aacute;s de 15 caracteres.</p>';
        else
        {
                
$db->Execute('UPDATE mail_users SET mail_pass=?, status=?  WHERE mail_id=?',array(encrypt_db_password($_POST['ncontrasena']),'change',$id));
    
                echo 
'<p align="center" style="color:#060">Contrase&ntilde;a cambiada exitosamente.</p>';
                require_once(
'../../include/ispcp-functions.php');
                
send_request();
        }
    }
    else echo 
'<p align="center" style="color:#F00">Datos incorrectos.</p>';
}
elseif(isset(
$_POST['cambiar'])=='Cambiar')
{
    echo 
'<p align="center" style="color:#F00">Faltan campos por completar.</p>';
}
?>
</body>
</html> 

y luego accesamos desde http://admin.domain.tld/webmail/change_password.php

Pendiente
- Crear acceso desde el webmail

Probado en
- Debian lenny 64bit con la version estable de ispcp
- squiremail y roundcube
- Click en imagen para ver el scrip funcionando    

Observaciones
Pruebenlo y diganme posibles errores para corregirlos

TongueTongue


Attached File(s)
.php  change_password.php (Size: 4 KB / Downloads: 3)
(This post was last modified: 04-16-2009 11:34 PM by shiizpa.)
04-16-2009 10:37 AM
Find all posts by this user Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)