New question

Question:

Date: 08-12-2019 12:25:17 (In Spanish)

consulta del backup::[Unresolved]

Estoy intentando corregir un codigo php, que tiene el siguiente error, por ejemplo, se ingresa con un folio para ver el archivo, y una ves que lo ves o agregas o hacer modificacion, al momento de actualizar me genera el backup de esa carpeta con el numero de carpeta 1, dentro de la carpeta de folio que contiene la informacion, hasta aqui todo bien, como es la idea y si vuelven a esos archivos genera la carpeta o backup 2 y asi.

El problema es que el codigo comenzo a trabajar de forma inadecuada y cuando un usuario ingresa otro numero de folio para checar otro archivo, este folio y su backup se me estan generando en el ultimo que quedo o sea digamos en el backup 2 de arriba (suponiendo que ese haya sido el ultimo que hizo). Cuando lo correcto es que genere el backup dentro de la carpeta de su folio correspondiente.
Bueno por favor si algun compañero se anima a ehcame la mano con eso me escribe a mi correo sanhove yahoo pto com.

codigo php

<?php
//*************************************************/
//begin : 2018-06-11
//modified : 2019-06-21
//made by : Ramon Lopez Escudero
//copyright : (C) Casa Cuervo
//email : rlopeze@cuervo.com.mx
//*************************************************/

date_default_timezone_set("America/Mexico_City");

$log_time = date('Y-m-d H:i:s');
wh_log("************** Start Log For Day : '" . $log_time . "'**********");

function wh_log($log_msg){
$log_filename = "C:/Apache24/htdocs/php/log";
if(!file_exists($log_filename)){
mkdir($log_filename,0777,true);
}
$log_file_data = $log_filename . "/log_" . date('Y-m-d') . ".log";
file_put_contents($log_file_data, $log_msg . "\n" . PHP_EOL, FILE_APPEND);
}
function check_topo_files($dwg_ext, $txt_ext, $croq_ext, $ext_croq_arr, $strDwg, $strTxt, $strCroq, $ip_dir, $txt_ext_arr)
{
// Control de calidad de los ficheros cargados en el sistema (topografías)
if($dwg_ext != 'dwg')
{
// TODO: Generar HTML especíco para el error de extensiones
$loc_string = 'Location: http://'.$ip_dir.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
if(in_array($txt_ext, $txt_ext_arr) == false)
{
$loc_string = 'Location: http://'.$ip_dir.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
if(in_array($croq_ext, $ext_croq_arr) == false)
{
$loc_string = 'Location: http://'.$ip_dir.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
// Revisión de errores en los ficheros (topografías)
$sum_errors = $_FILES[$strDwg]['error'] + $_FILES[$strTxt]['error'] + $_FILES[$strCroq]['error'];
if($sum_errors != 0)
{
// TODO: Generar HTML especíco para la suma de errores
$loc_string = 'Location: http://'.$ip_dir.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
}

function rrmdir($dir)
{
wh_log("Comienza la funcion para eliminar carpetas.");
$objects = scandir($dir);
foreach($objects as $object)
{
if ($object != "." && $object != "..")
{
if (filetype($dir."/".$object) == "dir")
{
wh_log("Se eliminara la carpeta: " . $dir."/".$object);
rrmdir($dir."/".$object);
}
else
{
unlink($dir."/".$object);
}
}
}
reset($objects);
rmdir($dir);
}

function search_replace_files($out_folder, $out_bckup_folder, $dwgFileStr, $dwgFileExt, $txtFileStr, $txtFileExt,
$croquFileStr, $croquFileExt, $infolio, $inProceso)
{
wh_log("Inicia funcion: search_replace_files()");
// Sí la carpeta ya existe, hacer un backup
if(file_exists($out_folder))
{
wh_log("// Sí la carpeta ya existe, hacer un backup -- > " . $out_folder);
// Sí a la carpeta ya se le hizo un bckup previo...
if(file_exists($out_bckup_folder))
{
wh_log("// Sí a la carpeta ya se le hizo un bckup previo... --> " . $out_bckup_folder);
// Contabilización del número de backup's ya realizados
$folders_bckup = scandir($out_bckup_folder);
$counter_folders = 0;
wh_log("Comenzara una contabilización de los respaldos realizados.");
foreach($folders_bckup as $folder_iter)
{
if ($folder_iter != "." && $folder_iter != "..")
{
$counter_folders = $counter_folders + 1;
}
}
wh_log("El folder: " . $folder_iter . "Ya tiene" . (string)$counter_folders ." Respaldos realizados.");
// Creación de la carpeta de backup
wh_log("// Creación de la carpeta de backup");
$aux_out_bckup_folder = $out_bckup_folder.'\\'.(string)($counter_folders + 1);
wh_log("Se creara la Siguiente Carpeta aumentando a uno el número de final del nombre");
mkdir($aux_out_bckup_folder);
// Iteración sobre los ficheros encontrados...
wh_log("// Iteración sobre los ficheros encontrados...");
$folders_act_folder = scandir($out_folder);

foreach($folders_act_folder as $folder_iter)
{
if ($folder_iter != "." && $folder_iter != "..")
{
wh_log((string)$folder_iter);
// Copiar, pegar y borrar los ficheros de carpeta en carpeta
wh_log("// Copiar, pegar y borrar los ficheros de carpeta en carpeta");
$aux_file = $out_folder.'\\'.$folder_iter;
wh_log("La informacion Se pegara a la ruta -- > " . (string)$aux_file);
rename($aux_file, $aux_out_bckup_folder.'\\'.$folder_iter);
wh_log("Aqui hace un renombramiento medio raro");
wh_log((string)$aux_file . " ----- " . (string)$aux_out_bckup_folder.'\\'.$folder_iter);
wh_log("Y al final elimina -- > " . (string)$aux_file);
rrmdir($aux_file);
}
}
}
//Sí a la carpeta no se le ha hecho un bckup previo...
else
{
wh_log("//Sí a la carpeta no se le ha hecho un bckup previo...");
// Se crea la carpeta en el backup con el nombre del folio
mkdir($out_bckup_folder);
wh_log("// Se crea la carpeta en el backup con el nombre del folio");
// Se crea la primer versión de backup...
$aux_out_bckup_folder = $out_bckup_folder.'\\1';
wh_log("// Se crea la primer versión de backup..." . (string)$aux_out_bckup_folder);
mkdir($aux_out_bckup_folder);
// Iteración sobre los ficheros encontrados...
$folders_act_folder = scandir($out_folder);
foreach($folders_act_folder as $folder_iter)
{
// Copiar, pegar y borrar los ficheros de carpeta en carpeta
if ($folder_iter != "." && $folder_iter != "..")
{
$aux_file = $out_folder.'\\'.$folder_iter;
rename($aux_file, $aux_out_bckup_folder.'\\'.$folder_iter);
rrmdir($aux_file);
}
}
}
// Subir a la nube los nuevos ficheros
wh_log("// Subir a la nube los nuevos ficheros");
move_uploaded_file($_FILES[$dwgFileStr]['tmp_name'], $out_folder."\\".$infolio.".".$dwgFileExt);
wh_log($out_folder."\\".$infolio.".".$dwgFileExt);
if($inProceso == 'topo')
{
move_uploaded_file($_FILES[$txtFileStr]['tmp_name'], $out_folder."\\".$infolio.".".$txtFileExt);
move_uploaded_file($_FILES[$croquFileStr]['tmp_name'], $out_folder."\\".$infolio.".".$croquFileExt);
}
else if($inProceso == 'dibufin')
{
move_uploaded_file($_FILES[$croquFileStr]['tmp_name'], $out_folder."\\".$infolio.".".$croquFileExt);
}
}
// Sí no se ha generado una carpeta para "x" folio... crearla!
else
{
// Se crea la carpeta en el backup con el nombre del folio
mkdir($out_folder);
// Subir a la nube los nuevos ficheros
move_uploaded_file($_FILES[$dwgFileStr]['tmp_name'], $out_folder."\\".$infolio.".".$dwgFileExt);
if($inProceso == 'topo')
{
move_uploaded_file($_FILES[$txtFileStr]['tmp_name'], $out_folder."\\".$infolio.".".$txtFileExt);
move_uploaded_file($_FILES[$croquFileStr]['tmp_name'], $out_folder."\\".$infolio.".".$croquFileExt);
}
else if($inProceso == 'dibufin')
{
move_uploaded_file($_FILES[$croquFileStr]['tmp_name'], $out_folder."\\".$infolio.".".$croquFileExt);
}
}
}

// Datos del servidor
session_start();
$host = gethostname();
$ip = gethostbyname($host);

// Extensiones admitidas para el croquis
$extensions_croquis = array("jpg", "pdf", "png", "jpeg");
$extensions_txtfile = array("txt", "dat");

// Datos de captura (ocultos)
$input_topo_db = $_SESSION['userId'];
$input_folio = $_POST["hiddenFolio"];
$input_topografo = $_POST["hiddenUser"];

// Folders para almacenar datos
$current_director = getcwd();
$out_folder_topo = $current_director."\\evalsoil\\topografias\\".$input_folio;
$out_folder_bckuptopo = $current_director."\\evalsoil\\bckup_topografias\\".$input_folio;
$out_folder_dibu = $current_director."\\evalsoil\\dibujos\\".$input_folio;
$out_folder_bckupdibu = $current_director."\\evalsoil\\bckup_dibujos\\".$input_folio;
$out_folder_predibu = $current_director."\\evalsoil\\predibujos\\".$input_folio;
$out_folder_bckuppredibu = $current_director."\\evalsoil\\bckup_predibujos\\".$input_folio;

// Datos de captura (topografías)
$input_observa = $_POST["inputObs"];
$input_sup_topo = $_POST["inputSupMed"];

// Extensiones dadas de alta en el sistema (topografías)
$dwg_ext_file = strtolower(end(explode('.',$_FILES['dwgFile']['name'])));
$txt_ext_file = strtolower(end(explode('.',$_FILES['txtFile']['name'])));
$croq_ext_file = strtolower(end(explode('.',$_FILES['croqFile']['name'])));

// Datos de captura (dibujo)
$input_check_dibujo = $_POST["checkDibu"];
$input_sup_dibu_med = $_POST["inputSupDibMed"];
$input_sup_dibu_lab = $_POST["inputSupDibLab"];
$input_estatus_dibu = $_POST["obsDib"];

// Extensiones dadas de alta en el sistema (dibujo)
$dwg_ext_file_dibu = strtolower(end(explode('.',$_FILES['dibDwg']['name'])));
$pdf_ext_file_dibu = strtolower(end(explode('.',$_FILES['dibPdf']['name'])));

// Control de calidad de los ficheros cargados en el sistema (topografía)
if($input_sup_topo == '' or (float)$input_sup_topo == 0)
{
$loc_string = 'Location: http://'.$ip.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
check_topo_files($dwg_ext_file, $txt_ext_file, $croq_ext_file, $extensions_croquis, 'dwgFile', 'txtFile',
'croqFile', $ip, $extensions_txtfile);

// Control de calidad de los ficheros cargados en el sistema (dibujo)
if($input_check_dibujo != '')
{
if($input_sup_dibu_med == '' or (float)$input_sup_dibu_med == 0)
{
$loc_string = 'Location: http://'.$ip.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
if($input_sup_dibu_lab == '' or (float)$input_sup_dibu_lab == 0)
{
$loc_string = 'Location: http://'.$ip.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
if($input_estatus_dibu == 'Ninguno')
{
$loc_string = 'Location: http://'.$ip.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
if($dwg_ext_file_dibu != 'dwg')
{
$loc_string = 'Location: http://'.$ip.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
if($_FILES['dibDwg']['error'] != 0)
{
// TODO: Generar HTML especíco para la suma de errores
$loc_string = 'Location: http://'.$ip.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
if($input_estatus_dibu == 'Finalizado' and $pdf_ext_file_dibu != 'pdf')
{
// TODO: Generar HTML especíco para la suma de errores
$loc_string = 'Location: http://'.$ip.'/error_general_evalsoil.html';
header($loc_string);
exit();
}
}

// Escritura de carpetas (Topografías)
search_replace_files($out_folder_topo, $out_folder_bckuptopo, 'dwgFile', $dwg_ext_file, 'txtFile', $txt_ext_file, 'croqFile', $croq_ext_file, $input_folio, 'topo');

// Escritura de carpetas (Dibujo) (checar sí se activó la casilla)
if($input_check_dibujo != '' and $input_estatus_dibu == 'Finalizado')
{
search_replace_files($out_folder_dibu, $out_folder_bckupdibu, 'dibDwg', $dwg_ext_file_dibu,
'NoData', 'NoData', 'dibPdf', $pdf_ext_file_dibu, $input_folio, 'dibufin');
}
// Predibujo (checar sí se activó la casilla)
if($input_check_dibujo != '' and $input_estatus_dibu == 'Predibujo')
{
search_replace_files($out_folder_predibu, $out_folder_bckuppredibu, 'dibDwg', $dwg_ext_file_dibu,
'NoData', 'NoData', 'NoData', 'NoData', $input_folio, 'dibu');
}

// Codificación y nomenclatura de parámetros para enviarlo a Python...
if($input_sup_topo == '')
{
$input_sup_topo = base64_encode('NoMod');
}
else
{
$input_sup_topo = base64_encode($input_sup_topo);
}

// Codificar al topógrafo y las observaciones
$base64_id_usr = base64_encode($input_topo_db);
$base64_topo_db = base64_encode($input_topografo);
$base64_obs_topo = base64_encode($input_observa);

// Codificar datos para el dibujo
if($input_check_dibujo != '')
{
$base64_sup_dib_med = base64_encode($input_sup_dibu_med);
$base64_sup_dib_lab = base64_encode($input_sup_dibu_lab);
$base64_estatus_dib = base64_encode($input_estatus_dibu);
}
else
{
$base64_sup_dib_med = base64_encode('NoMod');
$base64_sup_dib_lab = base64_encode('NoMod');
$base64_estatus_dib = base64_encode('NoMod');
}

// Comando para ejecutar el algoritmo en Python
wh_log("// Comando para ejecutar el algoritmo en Python");
$py_path = 'C:/Apache24/htdocs/python/update_db_topografo.pyc ' .$input_folio.' '.$base64_topo_db.' '.$input_sup_topo.
' '.$base64_obs_topo.' '.$base64_sup_dib_med.' '.$base64_sup_dib_lab.' '.$base64_estatus_dib.' '.$base64_id_usr;
wh_log($py_path);
exec($py_path, $output, $ret_var);

// Enviar al usuario a la página de captura nuevamente
echo "<script>";
echo "window.open('http://$ip/captura_correcta.html', '_self')";
echo "</script>";

?>

Tags: PHP Votes: 0 - Answers: 1 - Views: 8 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 10-12-2019 08:34:25 Hola saludos... como no tengo todo el codigo puedo ayudarte con lo que veo (haciendo suposiciones)
    Asi que tu "detalle" esta en la linea que tiene:

    $input_folio = $_POST["hiddenFolio"];

    Ya que si te fijas recibe el folio pero de una variable oculta, asi que no es que lo ponga mal del que recibe, sino que recibe uno oculto y otro que es el que pueden editar, este ultimo deberia ser el mismo que esta oculto.

    Es por ello que en teoria agarra el oculto (Secuencial) y por ello todo bien "en lo normal" pero al cambiar no respeta...

    Saludos Tericola...

    Stryfe™
      Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com