¡Bienvenido a PHPost!

Para participar en el foro, descargar complementos y acceder al chat, es necesario tener una cuenta activa. Por favor, regístrate utilizando un correo electrónico válido para completar la activación.

Usamos BanaHosting para alojar tanto la demo oficial como este mismo foro de Risus Nova. Cumple todos los requisitos del script (PHP 8, mod_rewrite, SSL gratis) — si quieres usar el mismo hosting que nosotros, aquí tienes el enlace.

⚠️ Aviso de seguridad

Risus Nova solo se distribuye de forma segura y verificada a través de phpost.es. Hemos detectado copias modificadas en sitios de terceros que contienen código malicioso, backdoors y funciones ocultas diseñadas para el robo de credenciales y datos sensibles. No confíes en descargas provenientes de foros, canales de Telegram o webs externas; no podemos garantizar la integridad de esos archivos. Tu seguridad es nuestra prioridad: Descarga siempre la versión oficial desde el botón inferior para asegurar una instalación limpia y libre de amenazas.

🔄 Mantente actualizado

Al estar en desarrollo activo, recibe cambios constantes — échale un vistazo de vez en cuando al changelog y a las notas de administración para estar al día de qué ha cambiado.

Risus Nova 2.0 Estable En desarrollo activo Actualizado: 25/06/2026 - 14:30 h (Hora España) Desarrollo Tema: 75% (Ver notas de la versión) (Ver Demo) Descargar desde phpost.es

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

SUGERENCIA Ejecutar SQL desde la administración [Arreglado]
#1

3
Mejor respuesta del mensaje Ejecutar SQL desde la administración [Arreglado]Esto es básicamente para el administrador principal con el user_id 1, para evitar que otro administrador meta mano.

1 - En inc/class/c.admin.php buscamos
 
/*
    saveConfigs()
    */   
   
function saveConfig() { 

y arriba agregaremos (Actualizado 25.02.22)
 
# Ejecutamos las consultas!
    
public function executeSQL() {
        global 
$tsCore$tsUser;
        
# Solo administrador principal
        
if($tsUser->is_member AND $tsUser->is_admod === AND intval($tsUser->uid) === 1) {
            
# Cosultas
            
$sqlList = [];
            
$lines explode("\n"$_POST['sql']);
            foreach(
$lines as $sql) {
                
$sql htmlspecialchars_decode($sql);
                
$sql str_replace("'"'"'$sql);
                
# Quitamos ; solo si lo tiene
                
if(preg_match("/(.*);/"$sql)) $sql substr(trim($sql), 0strlen($sql) - 1);
                
array_push($sqlListdb_exec([__FILE____LINE__], 'query'$sql));
            }
            return 
in_array(true$sqlList) ? '1: Se ejecutó correctamente.' '0: Hubo un error al ejecutar la/s sentencia/s';
            
        } return 
'0: Solo el administrador principal puede.';
    } 

2 - En inc/php/ajax/ajax.admin.php buscamos (Actualizado 25.02.22)
 
'admin-badwords-delete' => array('n' => 4'p' => ''), 

debajo pegamos
'admin-ejecutar-sql' => array('n' => 4'p' => ''), 

más abajo buscamos
      default:
         die('0: Este archivo no existe.');
      break; 

y arriba pegamos
        case 'admin-ejecutar-sql':
            echo $tsAdmin->executeSQL();
        break


3 - En inc/php/admin.php si tienen agregado esto, bórrenlo, ya no se usará (Actualizado 25.02.22)
 
} elseif($action == 'execute') {
     if(
$tsAdmin->executeSQL()) $tsCore->redirectTo($url);
     else 
$smarty->assign("tsError"$tsAdmin->executeSQL()); 

4 - Luego en tema/templates/t.admin.tpl y buscamos
 
{elseif $tsAction == 'configs'}
{include file='admin_mods/m.admin_configs.tpl'}

y debajo pegamos
 
{elseif $tsAction == 'execute'}
{include file='admin_mods/m.admin_execute.tpl'}

5 - En tema/templates/admin_mods/m.admin_sidemenu.tpl buscamos
 
<h4>Configuraci&oacute;n de PHPost</h4>

y arriba pegamos
 
<li id="a_execute"><span class="cat-title"><a href="{$tsConfig.url}/admin/execute">Ejecutar consultas </a></span></li>

6 - En tema/templates/admin_mods/ crearemos un archivo llamado m.admin_execute.tpl y agregaremos esto (Actualizado 25.02.22)
 
<div class="boxy-title">
   <h3>Administrar Base de datos</h3>
</div>
<div id="res" class="boxy-content">
   {if $tsSave}<div class="alerts ok">Tus cambios han sido guardados.</div>{/if}
   {if $tsError}<div class="alerts error">Hubo problemas al ejecutar las sentencias.</div>{/if}

       <h4>Desde aquí tu puedes <u>generar las consultas</u>, antes de hacerlo, comprueba de que este correctamente.</h4>
       <form method="post" autocomplete="off">
          <legend>Consultas</legend>
           <textarea name="sql" id="sql" cols="30" rows="10" placeholder="EJ: ALTER TABLE w_configuracion ADD privado INT(11) NOT DEFAULT 0;"></textarea>
           <small style="display:block"><i>Siempre cada consulta debe terminar en ; (punto y coma)</i></small>
           <input type="button" onclick="database.execute();" value="Enviar consulta" class="mBtn btnOk"/>
       </form>

</div>

7 - En tema/js/admin.js al final del archivo agregan (Actualizado 25.02.22)
/**
* Database
* para ejecutar consultas y crear copias
*/
var database = new function() {
    this.execute = () => {
        $.post(global_data.url + '/admin-ejecutar-sql.php', 'sql=' + $("#sql").val(), h => {
            switch (h.charAt(0)) {
                case '0':
                    mydialog.alert('Error', h.substring(3), false)
                break;
                case '1':
                    mydialog.alert('Bien', h.substring(3), true)
                break;
            }
        })
    }
}


Eso sería todo, pero úsenlo con mucho cuidado ya que podrían afectar la base de datos, ejemplo quieren eliminar a un usuario y si colocan su id los eliminará a ustedes..

NOTA:
Estoy creando algo que incluye esta función, lo cual ustedes van a poder ejecutar consultas, crear copias de seguridad de su base de datos y descargar dicha copia, pero debo averiguar un poco más...
Responder
#2

0
Muy bueno, es un adelanto, con eso no hay que entrar en el cpanel y es más rápido.
Gracias
Responder


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)