INFORMACIÓN
- Zona Adaptando módulos a NukeET
- Lecturas 4243
- Creado el 08 de julio de 2008 a las 00:13:16
- Última modificación 08 de julio de 2008 a las 04:22:02
Preguntas
Respuestas
• Módulos de NukeET
Código
echo '<br>';
Editas todos los archivos .php que tenga tu módulo y buscas lo siguiente:
Código
if (!eregi("modules.php", $_SERVER['SCRIPT_NAME']))
{
Header("Location: /error.php?op=e403");
die();
}
Puede ser SCRIPT_NAME o PHP_SELF... y cambiarlo por
Código
if(!defined('NUKE_ET')){
Header("Location: ../error.php?op=e403");
die();
}
Si en los archivos existe la variable $dbi es una herencia del PHP-Nuke 6.0 en la zona de Modulos de PHP-Nuke 6.0 de este archivos se explica cómo proceder de existir esa variable.
En el admin hay que realizar ciertos cambios, si tu archivo de admin/modules/loquesea.php al inicio tiene algo como esto (el contenido del if, o sea el die puede ser diferente):
Código
if (!eregi("admin.php", $_SERVER['PHP_SELF'])) { die ("Access Denied"); }
o
Código
if (!eregi("admin.php", $_SERVER['SCRIPT_NAME'])) { die ("Access Denied"); }
deberá modificarse por:
Código
if(!defined('NUKE_ET')) {
Header("Location: ../../error.php?op=e403");
die();
}
A continuación si tu archivo tiene algo así:
Código
$result = sql_query("select radminsuper from ".$prefix."_authors where aid='$aid'", $dbi);
list($radminsuper) = sql_fetch_row($result, $dbi);
if ($radminsuper==1) {
Puedes no hacer ningún cambio, de no hacerlo sólo podrán acceder superusuarios aunque desde el admin des acceso a la zona, de querer adaptarlo a las nuevas opciones del admin deberás hacer el cambio que se dice a continuación, cambio que recomendamos hacer.
Si tu archivo tiene lo siguiente:
Código
$result = sql_query("select radmindownload, radminsuper from ".$prefix."_authors where aid='$aid'", $dbi);
list($radmindownload, $radminsuper) = sql_fetch_row($result, $dbi);
if (($radmindownload==1) OR ($radminsuper==1)) {
deberá modificarse, puede dejarse como el código anterior dando acceso sólo al superadmin o puede cambiarse ese texto por lo siguiente:
Código
$paso=0;
$result = $db->sql_query("SELECT radminsuper FROM ".$prefix."_authors WHERE aid='$aid'");
$row = $db->sql_fetchrow($result);
$radminsuper = intval($row['radminsuper']);
if($radminsuper==1){
$paso=1;
}else{
list($admitidos) = $db->sql_fetchrow($db->sql_query("SELECT admitidos FROM ".$prefix."_authors_admin where zona='download'"));
$admitidos = explode(":",$admitidos);
for($i=0; $i<sizeof($admitidos); $i++) {
if($aid==$admitidos[$i]){ $paso=1; }
}
}
if ($paso == 1) {
el valor del where para la zona qeu en el ejemplo pone download es el nombre que tenga
el archivo de admin/links que enlaza pero sin el links. y el .php, en el ejemplo el
archivo es links.download.php por lo que es download.
Abrimos el links.loquesa.php y lo siguiente (o lo que sea parecido):
Código
if (($radminsuper==1) OR ($radmindownload==1)) {
se cambia por
Código
if ($paso==1) {
Volver al inicio
• Módulos de PHP-Nuke 6.5-7.4
Editas todos los archivos .php que tenga tu módulo y buscas lo siguiente:
Código
if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
die ("lo qe sea");
}
Puede ser SCRIPT_NAME o PHP_SELF... y cambiarlo por
Código
if(!defined('NUKE_ET')){
Header("Location: ../error.php?op=e403");
die();
}
Tambien en todos los archivos del módulo se debe cambiar los now() y time() por $ora añadiendo en el global de la function el $ora tal y como están el resto de variables. Si en los archivos existe la variable $dbi es una herencia del PHP-Nuke 6.0 en la zona de Modulos de PHP-Nuke 6.0 de este archivos se explica cómo proceder de existir esa variable.
En el admin hay que realizar ciertos cambios, si tu archivo de admin/modules/loquesea.php
al inicio tiene algo como esto (el contenido del if, o sea el die puede ser diferente):
Código
if (!eregi("admin.php", $PHP_SELF)) { die ("Access Denied"); }
deberá modificarse por:
Código
if(!defined('NUKE_ET')) {
Header("Location: ../../error.php?op=e403");
die();
}
A continuación si tu archivo tiene algo así:
Código
$result = sql_query("select radminsuper from ".$prefix."_authors where aid='$aid'", $dbi);
list($radminsuper) = sql_fetch_row($result, $dbi);
if ($radminsuper==1) {
Puedes no hacer ningún cambio, de no hacerlo sólo podrán acceder superusuarios aunque desde el admin des acceso a la zona, de querer adaptarlo a las nuevas opciones del admin deberás hacer el cambio que se dice a continuación, cambio que recomendamos hacer.
Si tu archivo tiene lo siguiente:
Código
$result = sql_query("select radmindownload, radminsuper from ".$prefix."_authors where aid='$aid'", $dbi);
list($radmindownload, $radminsuper) = sql_fetch_row($result, $dbi);
if (($radmindownload==1) OR ($radminsuper==1)) {
deberá modificarse, puede dejarse como el código anterior dando acceso sólo al superadmin o puede cambiarse ese texto por lo siguiente:
Código
$paso=0;
$result = $db->sql_query("SELECT radminsuper FROM ".$prefix."_authors WHERE aid='$aid'");
$row = $db->sql_fetchrow($result);
$radminsuper = intval($row['radminsuper']);
if($radminsuper==1){
$paso=1;
}else{
list($admitidos) = $db->sql_fetchrow($db->sql_query("SELECT admitidos FROM ".$prefix."_authors_admin where zona='download'"));
$admitidos = explode(":",$admitidos);
for($i=0; $i<sizeof($admitidos); $i++) {
if($aid==$admitidos[$i]){ $paso=1; }
}
}
if ($paso == 1) {
el valor del where para la zona qeu en el ejemplo pone download es el nombre que tenga
el archivo de admin/links que enlaza pero sin el links. y el .php, en el ejemplo el
archivo es links.download.php por lo que es download.
Abrimos el links.loquesa.php y lo siguiente (o lo que sea parecido):
Código
if (($radminsuper==1) OR ($radmindownload==1)) {
se cambia por
Código
if ($paso==1) {
De no existir ni en case o en el links restricción alguna de las relatadas (o sea ningún if) al inicio se debe colocar lo siguiente:
En el caso del case:
Código
if(!defined('NUKE_ET')) {
Header("Location: ../../error.php?op=e403");
die();
}
En el caso del links:
Código
if ($paso!=1) {
Header("Location: ../../error.php?op=e403");
die();
}
Volver al inicio
• Módulos de PHP-Nuke 6.0
Código
if (!eregi("modules.php", $PHP_SELF)) {
die ("lo qe sea");
}
Cambiarlo por
Código
if(!defined('NUKE_ET')){
Header("Location: ../error.php?op=e403");
die();
}
Tambien en todos los archivos del módulo se debe cambiar los now() y time() por $ora añadiendo en el global de la function el $ora tal y como están el resto de variable, además deben cambiarse los uid email y uname que están en alguna llamada a la ase de datos a la tabla nuke_users por user_id user_email username, algo que debe hacer tb con los $uid, $email y $uname cuando son las variables extraídas de dicha llamada, un ejemplo:
Código
$sql = "SELECT uid, uname from ".$user_prefix."_users";
$result = mysql_query($sql, $dbi);
while(list($uid,$uname) = mysql_fetch_row($result)){
echo "$uid, $uname";
}
sería:
Código
$sql = "SELECT user_id, username from ".$user_prefix."_users";
$result = mysql_query($sql, $dbi);
while(list($user_id,$username) = mysql_fetch_row($result)){
echo "$user_id, $username";
}
Otra adaptación no necesaria, pero sí muy recomendada es cambiar la forma de llamar a la base de datos, se trta de añadir en el global la variable $db cuando aparezca la $dbi y siguiendo el ejemplo anterior, sería:
Código
$result = $db->sql_query("SELECT user_id, username from ".$user_prefix."_users");
while(list($user_id,$username) = $db->sql_fetchrow($result)){
echo "$user_id, $username";
}
A continuación la tabla de equivalencias para que sea más sencillo:
Código
mysql_query() ==> $db->sql_query()
mysql_num_row() ==> $db->sql_numrows()
mysql_fetch_row() ==> $db->sql_fetchrow()
mysql_fetch_array() ==> $db->sql_fetchrow()
sql_query() ==> $db->sql_query()
sql_num_rows() ==> $db->sql_numrows()
sql_fetch_row() ==> $db->sql_fetchrow()
sql_fetch_array() ==> $db->sql_fetchrow()
Se elimina el ,$dbi que lleven entre los paréntesis de llevarlo y si no existe ninguna otra función que llama a la BD de las que no están en la tabla de equivalencias, eliminamos el $dbi del global de la function.
Tambien han de realizarse cambios en la administración del módulo, en el archivo links.loquesea.php debe añadirse después del
Código
if ($paso!=1) {
Header("Location: ../../error.php?op=e403");
die();
}
En el case de no presentar ningún if restrictivo deberá añadirse el siguiente código (de tenerlo se tendrá que modiciar por el código siguiente):
Código
if(!defined('NUKE_ET')) {
Header("Location: ../../error.php?op=e403");
die();
}
y en el archivo que va en admin/modules se tendrá algo parecido a esto:
Código
if (!eregi("admin.php", $PHP_SELF)) { die ("Access Denied"); }
$aid = trim($aid);
$result = sql_query("select radminfaq, radminsuper from ".$prefix."_authors where aid='$aid'", $dbi);
list($radminfaq, $radminsuper) = sql_fetch_row($result, $dbi);
if (($radminfaq==1) OR ($radminsuper==1)) {
deberá modificarse por:
Código
if(!defined('NUKE_ET')) {
Header("Location: ../../error.php?op=e403");
die();
}
$aid = trim($aid);
$paso=0;
$result = $db->sql_query("SELECT radminsuper FROM ".$prefix."_authors WHERE aid='$aid'");
$row = $db->sql_fetchrow($result);
$radminsuper = intval($row['radminsuper']);
if($radminsuper==1){
$paso=1;
}else{
list($admitidos) = $db->sql_fetchrow($db->sql_query("SELECT admitidos FROM ".$prefix."_authors_admin where zona='loquesea'"));
$admitidos = explode(":",$admitidos);
for($i=0; $i<sizeof($admitidos); $i++) {
if($aid==$admitidos[$i]){ $paso=1; }
}
}
if ($paso == 1) {
Cambiando el loquesea del where por el nombre del links.loquesea.php sin el links. ni el .php
Volver al inicio