02-18-2022, 04:26 PM
(Última modificación: 02-25-2022, 03:37 PM por Miguel92.
Razón: Había un error en el código para ejecutar la sentencia!
)
3
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
Código PHP: ( Seleccionar Todo )
/*
saveConfigs()
*/
function saveConfig() {
y arriba agregaremos (Actualizado 25.02.22)
Código PHP: ( Seleccionar Todo )
# Ejecutamos las consultas!
public function executeSQL() {
global $tsCore, $tsUser;
# Solo administrador principal
if($tsUser->is_member AND $tsUser->is_admod === 1 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), 0, strlen($sql) - 1);
array_push($sqlList, db_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)
Código PHP: ( Seleccionar Todo )
'admin-badwords-delete' => array('n' => 4, 'p' => ''),
debajo pegamos
Código PHP: ( Seleccionar Todo )
'admin-ejecutar-sql' => array('n' => 4, 'p' => ''),
más abajo buscamos
Código PHP: ( Seleccionar Todo )
default:
die('0: Este archivo no existe.');
break;
y arriba pegamos
Código PHP: ( Seleccionar Todo )
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)
Código PHP: ( Seleccionar Todo )
} 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
Código: ( Seleccionar Todo )
{elseif $tsAction == 'configs'}
{include file='admin_mods/m.admin_configs.tpl'}y debajo pegamos
Código: ( Seleccionar Todo )
{elseif $tsAction == 'execute'}
{include file='admin_mods/m.admin_execute.tpl'}5 - En tema/templates/admin_mods/m.admin_sidemenu.tpl buscamos
Código: ( Seleccionar Todo )
<h4>Configuración de PHPost</h4>y arriba pegamos
Código: ( Seleccionar Todo )
<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)
Código: ( Seleccionar Todo )
<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)
Código: ( Seleccionar Todo )
/**
* 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...


Facebook
Twitter
Reddit
Digg
del.icio.us
Tumblr
Pinterest
Blogger
Fark
LinkedIn
Mix
Google