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))
?>