Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Legnak

#1
PHP / Re: Restaurar copia de seguridad
24 Junio 2014, 03:54 AM
vale, gracias por todo hermano xD
#2
PHP / Re: Restaurar copia de seguridad
24 Junio 2014, 02:25 AM
gracias por responder  :D... y bueno, ahora que lo mencionas, en realidad cuento con ese archivo jajaja, supongo que estoy haciendolo mal xD, a ver ¿tendría primero que mover el archivo que se ha subido para poder utilizarlo (ya que su formato es .tmp)  y luego validar que fuese de extension sql, utilizarlo y posteriormente borrarlo?
estoy usando esta clase :

Código (php) [Seleccionar]
<?php

/**
 * @author yas500('mohamedigm@gmail.com','mohamedigm@yahoo.com')
 * @copyright 2009
 * @Date 24 April
 * @Phpversion 5.2.8
 */
 
 
/** // // // // // // // // // // // // // // ||
  // this class is used for backup and          ||
  // restore mysql server databases or entire   ||
  // server , can compress backup ,send         ||
  // to ftp server ,restore from compress again ||
  */
 
 

set_time_limit('0');
error_reporting(E_ALL);


abstract class 
BackupRestore
{
protected $link;
protected $db=array();
protected $table=array();
protected $text="";
private $debug='0';
private $msg=array();

/**
function construct for logging to database server
*/

final public function __construct($host='localhost',$user='root',$pass='')
{
set_error_handler(array($this,'handleError'));

try{
$this->connect($host,$user,$pass);
}
catch (exception $e){
trigger_error($e->getMessage(),E_USER_ERROR);
}
}

final private function __destruct()
{
if ($this->msg){
foreach ($era as $rr){
echo "<b>Note</b>".$rr."<br>";
}                          
}
else
{
echo "The mission successfully complete.";
}
            //SHOW ERROR NOTES TO USER AFTER END
}

final public function handleError($errno,$errmsg,$errfile,$errline)
{
        

        if (
$this->debug == '0'){
switch ($errno){
case E_USER_ERROR:
case E_WARNING:
echo $errmsg;
exit();
break;

case E_USER_WARNING:
case E_USER_NOTICE:
$this->msg[]=$errmsg;
return true;
break;

case E_NOTICE:
case E_STRICT:
return true;
break;

default:
echo "UNKNOWN ERROR OCCURED".$errmsg;
exit();
}
}

if ($this->debug == '1'){
$errmsg=(strpos($errmsg,'Mysql'))? mysql_error():$errmsg;
echo "<b>".$errno."</b>: ".$errmsg." <b>LINE: ".$errline."</b>"."<br><b><i>In file</i></b> ".$errfile."<hr>";
exit();
}
}


final private function connect($host,$user,$pass)
{

if (! $this->linkmysql_connect($host,$user,$pass))
throw new exception ("Mysql:couldn't connect to database server or invalid inforamtion");
}


// if you have multiple dbs enter them in that sequence
// $db1,$db2,..
// or leave it and it will backup the entire server databases

final public function setDbs($db='*')
{
$db=trim($db);
if (empty($db) || $db == '*'){
$list=mysql_list_dbs($this->link);
$rows=mysql_num_rows($list);
if($rows == 0){
trigger_error("Mysql:THERE IS NO DATABASES ON THE SERVER!!",E_USER_ERROR);
}
for($i=0;$i<$rows;$i++){
$this->db[]=mysql_tablename($list,$i);
}
}
else{
$db=explode(",",$db);
$this->db=$db;
}
}

/**
// this method will be for selecting tables or ignore it and
// it will backup all tables
*/

final public function selectTable($table='*')
{
$table=trim($table);
if($table == '')
$table='*';
if (! $table=="*" && count($this->db) > '1'){
trigger_error("you can't specify tables if you want more than one db",E_USER_ERROR);
}

if ($table == "*"){
foreach ($this->db as $name){
$sql "SHOW TABLES FROM $name";
$list mysql_query($sql$this->link);
//$list=mysql_list_tables($name);
$rows=mysql_num_rows($list);
for($i=0;$i<$rows;$i++){
$this->table[$name][]=mysql_tablename($list,$i);
}
}
}
else{
$table=explode(",",$table);
foreach($table as $tb){
$this->table[$this->db['0']][]=$tb;
}
}

}

/**
// method for selecting the query required
  // for backup
  // this is ahabit for me to store all queries required in amethod and call it
*/

final protected function selectQuery($type)
{
$query=array(1=>"SHOW CREATE DATABASE ","SHOW CREATE TABLE ","INSERT INTO ","DROP DATABASE IF EXISTS ","DROP TABLE IF EXISTS ","SELECT * FROM ");
return $query[$type];
}

/**
method for validate file before restore database
*/

final protected function getFile($file)
{

$this->text="";
switch ($file){
case (!file_exists($file)):
trigger_error("File doesn't exist!!".$file,E_USER_ERROR);
return false;
break;
case (!is_readable($file)):
trigger_error("Can't get access to the file!!",E_USER_ERROR);
return false;
break;
default:
if(preg_match("/\.gz$/",$file)){
if(!$gz=gzopen($file,'rb'))
trigger_error("couldn't open compressed file",E_USER_ERROR);
gzrewind($gz);
while(!gzeof($gz)){
$this->text.=gzgets($gz);
}
gzclose($gz);
}
else
{
if(!$fp=fopen($file,'rb'))
trigger_error("Couldn't read from the file",E_USER_ERROR);
flock($fp,'1');;
while(!feof($fp)){
$this->text.=fgets($fp);
}
flock($fp,'3');
fclose($fp);

}
if($er=error_get_last()){
trigger_error($er['type'].":".$er['message'],E_USER_WARNING);
}

return true;
}

}

/**
this method is for prepare file that be backuped
//
*/

final protected function setFile($txt,$cmp,$ftp,$fhost,$fuser,$fpass,$fport)
{
$recognize="";
foreach ($this->db as $rec){
$recognize.=$rec."_";
}
//aca
$recognize=preg_replace("/_$/","",$recognize);   //for naming file backuped

// this the preferred for me format for naming files
$file='backup@'.$recognize."@".date('Y-M-d',time()).'.sql';
if(!$fp=fopen($file,'wb'))
{
trigger_error("You may have no enough rights on server",E_USER_ERROR);
}
flock($fp,'2');
fwrite($fp,$txt);
flock($fp,'3');
fclose($fp);

if ($cmp == '1'){
$file=$file.".gz";
if(! $gz=gzopen($file,'wb'))
trigger_error("Script failed to compress backuped file.",E_USER_NOTICE);
gzwrite($gz,$txt);
gzclose($gz);
}

if($ftp == '1'){
if(! $conn=ftp_connect($fhost,$fport))
trigger_error("this is not avalid ftp server or make sure you type it well",E_USER_ERROR);
$log=ftp_login($conn,$fuser,$fpass);
if(!$log)trigger_error("Username or Password is not correct",E_USER_ERROR);
$put=ftp_put($conn,$file,$file,FTP_BINARY);
if(!$put){
trigger_error("Couldn't upload file to remote server",E_USER_WARNING);
}
ftp_close($conn);

}
else{
$this->downBackup($file);
}
return true;
}


// download backuped file

final private function downBackup($file)
{
header("Content-Description:File Transfer");;
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
   
header('Pragma: public');
   
header('Content-Disposition: attachment; filename='.basename($file));
   
header('Content-Type: application/octet-stream');
    
header('Content-Length: ' filesize($file));
    
ob_clean();
    
flush();
    
readfile($file);
}

abstract protected function backupData($cmp='0',$ftp='0',$fhost='',$fpass='',$fport='21');

abstract protected function restoreSql($file);

}




final class 
Backuprestoresql extends BackupRestore
{

const HEADERS='***********************
Y    A    S    5   0  0 
***********************'
;               // mohamed ghareeb mohamed saeed signature
const FIELDSEP=';';                 // seperate between queries


/* this method for backup
// you can specify more options like compression (0,1) , send through ftp to server (0,1)
//
*/

public function backupData($cmp='0',$ftp='0',$fhost='',$fuser='anonymous',$fpass='mohamedigm@gmail.com',$fport='21')
{

if($ftp == '1'){
if (empty($fhost)){
trigger_error("You must specify ftp host name as you select ftp option",E_USER_ERROR);
}
if(strpos($fhost,"ftp://")){
str_replace("ftp://","",$fhost);
}
}

$this->text="";
$this->text.=self::HEADERS;

/**
this will begin save database to file
*/
foreach($this->db as $key){
$result=mysql_query($this->selectQuery('1')."$key",$this->link);
while($row=mysql_fetch_row($result)){
$this->text.="\r\n".$this->selectQuery('4')."$key".self::FIELDSEP.$row['1'];
}

// this will save tables related to that database
mysql_select_db($key);
foreach($this->table[$key] as $select){
if(! count($this->table[$key]) == '0'){
$result=mysql_query($this->selectQuery('2').$select,$this->link);
while($row=mysql_fetch_row($result)){
$this->text.=self::FIELDSEP.$this->selectQuery('5').$select.self::FIELDSEP.$row['1'];

// fetch fields values in the tables
$result2=mysql_query($this->selectQuery('6').$select,$this->link);
while($row2=mysql_fetch_row($result2)){
$txt="";
foreach ($row2 as $val){
$val=mysql_real_escape_string($val,$this->link);
$txt.="'".$val."'".",";
if($val == mysql_real_escape_string($row2[count($row2)-1])){
//aca
    $txt=preg_replace("/,$/","",$txt);
}
// save field values as insertion query 
}
$this->text.=self::FIELDSEP.$this->selectQuery('3').$select." VALUES(".$txt.")";
}
mysql_free_result($result2);
}
}

}

//* finish database Dump *//
$this->text.="\r\n### ".$key." DATABASE DUMP COMPLETED ###";
}
mysql_close($this->link);

if(!$this->setFile($this->text,$cmp,$ftp,$fhost,$fuser,$fpass,$fport))
trigger_error("Something goes wrong with file creation",E_USER_ERROR);


return true;               // all things is done correctly
}

/**
this method for restore server database
//
*/

public function restoreSql($file)
{
if($this->getFile($file)){
$this->text=str_replace(self::HEADERS,"",$this->text);   // ignore header
$this->text=preg_replace("/###.* DATABASE DUMP COMPLETED ###/",self::FIELDSEP,$this->text);
// ignore database dump complete message

foreach ($tt=explode(self::FIELDSEP,$this->text) as $query){
if (empty($query))
continue;
$rs=mysql_query($query,$this->link);
if(!$rs){
trigger_error("Mysql:problem with aquery",E_USER_NOTICE);
}

if (strstr($query,"CREATE DATABASE")){
$seldb=substr($query,strpos($query,'`')+1,strlen($query));
$seldb=substr($seldb,'0',strpos($seldb,"`"));
mysql_select_db($seldb,$this->link);
//**
// could use query with "use database " and the name of database
//**
}

}
}
else
exit();
mysql_close($this->link);
return true;
}

}





//*****  EXAMPLES *****//

/** FOR BACKUP FILE  **/
/**
 || $obj=new Backuprestoresql()   // you can specify information of your server or make it
    // default as localhost and user root with no pass
 || $obj->setDbs()              // leave it blank or * and it will backup entire server
    // or specify dbs "more one db1,db2,..."
  // caution :: make sure you have rights to write on dbs you choose
 || $obj->selectTable()         // leave it blank or * and it will backup all tables
    // or specify tables "more one table1,table2,..."
 || $obj->backupData()     // here will be the backup you can choose compression (0,1)
    // ftp (0,1) if you specify ftp you must specify at least host
*/



/** FOR RESTORE FROM FILE  **/
/**
 || $obj=new Backuprestoresql()   // you can specify information of your server or make it
    // default as localhost and user root with no pass
 || $obj->restoreSql('file path') // specify location of your file accepted extension sql,gz,txt
*/





?>
#3
PHP / Re: Restaurar copia de seguridad
24 Junio 2014, 01:45 AM
mil disculpas hermano, no quise ser grosero ni nada por el estilo, es que ando un poco desesperado, con decirte que no leí eso que me pusiste xD

Bueno, el sistema que tengo me genera una copia de seguridad, pero necesito que haya un módulo desde donde se pueda restaurar esa copia de seguridad, dándole la opción al usuario de que seleccione que copia desea restaurar.

En un principio pensé hacerlo con el input file, iba muy confiado hasta que noté que me daba la dirección "fake", ahora no tengo ni idea de como hacerlo

sorry si no me he explicado bien y gracias por comentar
#4
PHP / Re: Restaurar copia de seguridad
24 Junio 2014, 00:56 AM
hermano yo tengo el archivo sql con la copia de seguridad, lo que quiero es restaurarla (se podría hacer fácilmente desde phpmyadmin pero a mi profesor no le sirve así -.-)
#5
Hola, alguno de ustedes sabe como puedo hacer para restaurar copia de seguridad con PHP? lo del input type file queda descartado ya que no me da la dirección exacta de donde está realmente ubicada la copia de seguridad que selecciono D:
Saludos
#6
exactamente eso, el path de donde estoy seleccionando el archivo, pero bueh, si no se puede D:, tocará ver como me las ingenio xD

gracias bro
#7
PHP / obtener path de un input file en PHP?
22 Junio 2014, 03:50 AM
Hola, me preguntaba si alguno de ustedes sabia de que forma puedo obtener el path de un input file en PHP, estuve leyendo que no habia forma de obtener el path completo por razones de seguridad de los navegadores, pero bueh, alguien confirma eso? :huh:

Saludos y gracias de antemano 
#8
pues si, me confundi, y bastante xD, pero bueh.. gracias hermanazo, era tan sencillo como desmarcar la opcion "Permitir Control" de Team Viewer, gracias, tenia ese soft instalado y ni p**a idea que podia hacer eso xD
#9
Hola, alguno de ustedes conoce a algún software con el que pueda grabar lo que estoy haciendo en mi pc y que otras personas lo vean en tiempo real?
Saludos y gracias de antemano :v

P.D. No estoy seguro que este sea el foro correcto, de no ser por favor muevanlo
#10
EDIT: Fixed