Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/01/2011, 04:07
Avatar de Jask
Jask
 
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Exclamación Verificar todas las opciones y ejecutarlas a la vez

Muy buenas :)

Tengo una duda que me anda carcomiendo por dentro jajaja.

El script que tengo está formado por varios if y lo que busco es que se compruebe todo y una vez hecha la comprobación y sea correcta ejecute lo que pido. Lo hago principalmente porque (es un script de crear usuario) al ejecutarse se tiene que editar un fichero e insertar una cadena de texto, luego se tiene que crear una carpeta en un directorio y luego se tiene que insertar el usuario creado en la BD por eso, si falla el último proceso, los otros 2 anteriores se habrán completado, y no interesa. Os dejo el código:

Código PHP:
<?php
## Comprueba si el directorio existe
                                
// Abreviatura de departamento a nombre completo
$tabla "pg_dpto";
$query_dpto mysql_query("SELECT * FROM $tabla WHERE dpto_shortname = '$dptoForm' ");
$query_dpto_print mysql_fetch_assoc($query_dpto);    
$abrev_departamento $query_dpto_print['dpto_folder_name']; # Imprime el nombre del dpto (la carpeta) donde se creará la carpeta del usuario

$directorio "/home/ftp/".$abrev_departamento."/".$user_ftp."/".$nick_connect;

if(
is_dir($directorio)){
echo 
"<div class='error-overview'>No se ha podido crear el usuario deseado ya que ya existe una carpeta con este nombre. Por favor intente utilizando otro nombre o cambiándolo de orden (apellido + nombre). <br><a href='javascript:history.back(1);'>Volver Atrás</a></div>";
}else{

## Query para insertar a la BD los campos del usuario en cuestión
$insertar_usuario mysql_query("INSERT INTO pg_usser (usser_name, usser_email, usser_dpto, usser_ftp, usser_nick, usser_pass, usser_pass_encrypted, usser_group, usser_folder_name, usser_folder_size) VALUES ('$user_name', '$user_email', '$user_dpto', '$user_ftp', '$nameDpto', '$user_pass', '$user_pass_encrypted', '$user_group', '$nick_connect', '$user_size') ") or die (mysql_error());



## Si se pueden insertar los usuarios en la BD...
if($insertar_usuario){

    
## Abreviaturas de los departamenos
    
$tabla "pg_dpto";
    
$query_dpto mysql_query("SELECT * FROM $tabla WHERE dpto_shortname = '$dptoForm' ");
    
$query_dpto_print mysql_fetch_assoc($query_dpto);    
    
$abrev_departamento $query_dpto_print['dpto_folder_name']; # Imprime el nombre del dpto (la carpeta) donde se creará la carpeta del usuario
    
    ## Comprobación si ftp.users se puede escribir
    
$archivo "ftp.users";
    if(
is_writable($archivo)){                                

        
## Modifica el archivo añadiendo usuarios
        
$contenido $nameWithoutAccent.":\$1\$".$user_pass_encrypted.":104:65534::/home/ftp/".$abrev_departamento."/".$user_ftp."/".$nick_connect.":/bin/false \n";
                                    
        
## Insercción del usuario, carpeta, en el archivo "$archivo"
        
if($escribir_archivo fopen($archivo"a")){
            if(
fwrite($escribir_archivo$contenido)){
                
                
## Parámetros para pasar al archivo BASH - new_folder.sh
                
$comprobacion 1;
                
$ruta "/home/ftp/".$abrev_departamento."/".$user_ftp."/";
                
$nombre_carpeta $nick_connect;
                
                
## Creación de la carpeta física según el nombre que se insertó
                
if(system("sh new_folder.sh $nombre_carpeta $comprobacion $ruta")){
                    
$ejecucion_correcta "se ejecutó el .sh";
                }else{
                    echo 
"<div class='error-overview'>El archivo <strong>sh</strong> no se pudo ejecutar, por lo que no se pudo crear la carpeta del usuario correspondiente. Por favor, contate con un administrador antes de seguir.</div>";
                }
                
            }else{
                echo 
"<div class='error-overview'>El archivo '$archivo' no se puede escribir. Por favor, contacte con un administrador.</div>";
            }
        }else{
            echo 
"<div class='error-overview'>El archivo '$archivo' no se puede abrir para su escritura. Contate con un administrador antes de seguir. </div>";
        }
// ** if($escribir_archivo = fopen($archivo, "a"))
        
                                                                            
            // Envío de Email al USUARIO !!! 
            /* *****************
            $name = $_REQUEST['us_name'];
            $de = "[email protected]";
            $para = $user_email;
            $user_ftp = $nameDpto;
            $subject ="Datos de Acceso al FTP";
            $user_ftp_pass = $_REQUEST['us_pass'];                    

                $dpt_query = mysql_query("SELECT dpto_name FROM pg_dpto WHERE dpto_shortname = '$user_dpto' ") or die (mysql_error());
                $dpt_print = mysql_fetch_assoc($dpt_query);
                $departamento = $dpt_print['dpto_name'];
            
                $header = "From: " . $de . " \r\n";
                $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
                $header .= "Mime-Version: 1.0 \r\n";
                $header .= "Content-Type: text/html; charset=utf-8";
                
                $contenido = "<strong>Bauer - Datos de Acceso al FTP</strong>. <br><br>"; 
                $contenido .= "Este email contiene los datos de acceso a su nueva cuenta ftp. <br> Por favor <strong>NO BORRE NI REENVIE</strong> este email, ya que es confidencial. <br> Los datos aquí expuestos solamente los tendrá que conocer usted. <br><br>";
                $contenido .= "<strong>Datos de acceso al FTP</strong> <br><br>";
                $contenido .= "<strong>Servidor:</strong> ftp://datain.bauer.es/ <br>";
                $contenido .= "<strong>Departamento:</strong> ".$departamento."<br>";
                $contenido .= "<strong>Nombre de la Carpeta:</strong> ".$nick_connect."<br><br>";
                $contenido .= "<strong>Usuario:</strong> ".$user_ftp."<br>";
                $contenido .= "<strong>Contraseña:</strong> ".$user_ftp_pass;                                    
        
        
            if($name == "" || $de == "" || $subject == ""){
                error("Ha habido un problema al enviar el email de confirmación. Por favor, inténtalo de nuevo.");    
            }else{
                
                // Mail al usuario
                $emailok = mail($para, $subject, utf8_decode($contenido), $header);    

                // Selección email del admin
                $admin_query = mysql_query("SELECT admin_email FROM pg_admin WHERE admin_id = 1") or die (mysql_error());
                $admin_print = mysql_fetch_assoc($admin_query);
                $admin_email = $admin_print['admin_email'];
                
                // Contenido para insertar en Nagios (solo lo ven admins)
                $contenido .= "<br><br> Recuerda insertar las siguientes líneas en el archivo de configuración de Nagios: <br>";
                $contenido .=" Lineas de código AQUÍ";
                
                $emailadmin = mail($admin_email, "Nuevo usuario FTP", utf8_decode($contenido), $header);
                
                echo "<div id='flash'>
                    <div class='flash'>
                      <div class='notice'>El usuario y la cuenta FTP se han creado correctamente. <br> Se ha enviado un email al usuario con los datos de acceso al FTP.</div>
                      <div class='fourcorners'>
                        <div class='corner-1'><img alt='' SRC='images/corner-grn-1.gif'/></div>
                        <div class='corner-2'><img alt='' SRC='images/corner-grn-2.gif'/></div>
                        <div class='corner-3'><img alt='' SRC='images/corner-grn-3.gif'/></div>
                        <div class='corner-4'><img alt='' SRC='images/corner-grn-4.gif'/></div>
                      </div>
                    </div>
                  </div>";
            } ***************** */                                 // ** if($name == "" || $de == "" || $subject == ""){
    
}    // ** if(is_writable($archivo))

}else{
echo 
"<div class='error-overview'>Ha habido un problema interno al crear la cuenta. Si el problema persiste contacte con el Departamento de Informática.</div>";
// ** if($insertar_usuario)                                    

}// ** if(is_dir($nick_connect))
?>
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?