Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: elezekiel en 28 Junio 2014, 00:00 am



Título: funcion en php
Publicado por: elezekiel en 28 Junio 2014, 00:00 am
hola amigos, conozco muy poco de php y aca se que hay expertos, lo que voy a decir seguramente es absolutamente ridiculo y de novato, pero no tengo idea...

Yo tengo una web montada la cual tiene un "script" en uno de los archivos de php, no se si llamarlo asi que es este:


Código:
switch ($reset_points_formula){
                        case '0': $new_bpoints = ($select_req->fields[3]+$reset_points); break;
                        case '1': $new_bpoints = ($reset_points*($select_req->fields[2]+1)); break;
                    }

El case 1, es el que ejecuta, pues he hecho cambios ahi y obtuve resultados satisfactorios comprobando que efectivamente ahi se realizan los cambios.

Despues tengo otro archivo en php que tiene esto :

Código:
$reset_credits = trim($load_reset_settings->bcredits);

junto con otras variables (creo que son variables, no estoy seguro)
es decir, creo que ese reset_credits es una variable,  no ?


El tema es este, lo tengo en archivos separados, es posible que yo desde el primer code, tome el valor de esa variable "reset_credits"

Si es asi, como lo puedo leer?

No se si se entiende lo que digo...

Espero que si, cualquier duda me dicen y aclaro.. gracias de ante mano por ayudarme (como siempre)


Título: Re: funcion en php
Publicado por: MinusFour en 28 Junio 2014, 00:35 am
Hay varias formas de hacer esto, pero la verdad no tengo idea de como este tu código. A menos que la variable sea super necesaria en muchos otros archivos te sugeriría que revalues la composición de tu código.

Algunas opciones incluyen hacer la variable global o pasar la variable como argumento de la función. Para ambas opciones vas necesitar incluir el otro archivo en tu script.


Título: Re: funcion en php
Publicado por: elezekiel en 28 Junio 2014, 00:44 am
Como incluyo el archivo que contiene el segundo codigo en el script del primero?

Eso se hace con algun code especial, te paso parte del codigo inicial para que te orientes:

esto va en el primer archivo del cual tengo que ejecutar el script y de ahi tomar el valor del segundo:

Código
  1. <?
  2. $load_reset_settings = simplexml_load_file('engine/config_mods/reset_character_settings.xml');
  3. $active = trim($load_reset_settings->active);
  4. if($active == '0'){
  5. echo msg('0','Sorry, this feature is temporarily unavailable at the moment.');
  6. }else{
  7. $reset_level = trim($load_reset_settings->level);
  8. $reset_zen  = trim($load_reset_settings->zen);
  9. $reset_points = trim($load_reset_settings->bpoints);
  10. $reset_points_formula = trim($load_reset_settings->bpoints_formula);
  11. $reset_clear_skills = trim($load_reset_settings->clear_skills);
  12. $reset_clear_inv = trim($load_reset_settings->clear_inv);
  13. $reset_stats = trim($load_reset_settings->reset_stats);
  14. $reset_limit = trim($load_reset_settings->reset_limit);
  15.  
  16. if(isset($_GET['rid'])){
  17. echo '<div style="margin-top: 10px;">';
  18. $id = safe_input($_GET['rid'],'');
  19. if(empty($id) || !is_numeric($id)){
  20. header('Location: '.$core_run_script.'');
  21. exit();
  22. }else{
  23. if(character_and_account($id,$user_auth_id) === false){
  24. header('Location: '.$core_run_script.'');
  25. exit();
  26. }else {
  27. if(account_online($user_auth_id) === true){
  28. echo msg('0','Estas conectado al juego,porfavor desconectate para resetear.');
  29. }else{
  30. $select_req = $core_db->Execute("select clevel,money,resets,leveluppoint from character where mu_id=? and accountid=?",array($id,$user_auth_id));
  31. if($select_req->fields[0] < $reset_level){
  32. echo msg('0','Unable to reset, reason: lacking '.($reset_level - $select_req->fields[0]).' levels.');
  33. $no_reset = 1;
  34. }
  35. if($select_req->fields[1] < $reset_zen){
  36. echo msg('0','Unable to reset, reason: lacking '.number_format($reset_zen - $select_req->fields[1]).' zen.');
  37. $no_reset = 1;
  38. }
  39. if($select_req->fields[2] >= $reset_limit){
  40. echo msg('0','Unable to reset, reason: reset limit reached : '.number_format($reset_limit).'');
  41. $no_reset = 1;
  42. }
  43. if($no_reset != '1'){
  44. $new_money = $select_req->fields[1] - $reset_zen;
  45. switch ($reset_points_formula){
  46. case '0': $new_bpoints = ($select_req->fields[3]+$reset_points); break;
  47. case '1': $new_bpoints = ($reset_points*($select_req->fields[2]+1)); break;
  48. }
  49. switch ($reset_stats){
  50. case '1':
  51. if($reset_clear_inv == '1' and $reset_clear_skills == '1'){
  52. $reset_formula = "Update character set [resets]=(resets+1),[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[inventory]=CONVERT(varbinary(1080), null),[magiclist]=CONVERT(varbinary(180), null) where mu_id=?";
  53. }elseif ($reset_clear_inv == '1'){
  54. $reset_formula = "Update character set [resets]=(resets+1),[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[inventory]=CONVERT(varbinary(1080), null) where mu_id=?";
  55. }elseif ($reset_clear_skills == '1'){
  56. $reset_formula = "Update character set [resets]=(resets+1),[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[magiclist]=CONVERT(varbinary(180), null) where mu_id=?";
  57. }elseif ($reset_clear_inv == '0' and $reset_clear_skills == '0'){
  58. $reset_formula = "Update character set [resets]=(resets+1),[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25' where mu_id=?";
  59. }
  60. break;
  61. case '0':
  62. if($reset_clear_inv == '1' and $reset_clear_skills == '1'){
  63. $reset_formula = "Update character set [resets]=(resets+1),[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[inventory]=CONVERT(varbinary(1080), null),[magiclist]=CONVERT(varbinary(180), null) where mu_id=?";
  64. }elseif ($reset_clear_inv == '1'){
  65. $reset_formula = "Update character set [resets]=(resets+1),[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[inventory]=CONVERT(varbinary(1080), null) where mu_id=?";
  66. }elseif ($reset_clear_skills == '1'){
  67. $reset_formula = "Update character set [resets]=(resets+1),[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[magiclist]=CONVERT(varbinary(180), null) where mu_id=?";
  68. }elseif ($reset_clear_inv == '0' and $reset_clear_skills == '0'){
  69. $reset_formula = "Update character set [resets]=(resets+1),[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=? where mu_id=?";
  70. }
  71. break;
  72. }
  73. $exc_reset_formula=$core_db->Execute($reset_formula,array($new_bpoints,$new_money,$id));
  74. if($exc_reset_formula){
  75. echo msg('1','Character successfully reseted.');
  76. }else{
  77. echo msg('0','Unable to reset, reason: system error, please contact administrator.');
  78. }
  79. }
  80. }
  81. }
  82. }
  83. echo '</div>';
  84. }

Tiene mucho mas pero creo que con eso alcanza, no ? el otro archivo tiene este code:

(que de este archivo es de donde obtengo el valor pero para este archivo, yo lo quiero tomar para el otro)

Código
  1. <?
  2. $load_reset_settings = simplexml_load_file('engine/config_mods/grandreset_character_settings.xml');
  3. $active = trim($load_reset_settings->active);
  4. if($active == '0'){
  5. echo msg('0','Sorry, this feature is temporarily unavailable at the moment.');
  6. }else{
  7. $reset_resets_need = trim($load_reset_settings->resets_need);
  8. $reset_level = trim($load_reset_settings->level);
  9. $reset_zen  = trim($load_reset_settings->zen);
  10. $reset_points = trim($load_reset_settings->bpoints);
  11. $reset_points_formula = trim($load_reset_settings->bpoints_formula);
  12. $reset_clear_skills = trim($load_reset_settings->clear_skills);
  13. $reset_clear_inv = trim($load_reset_settings->clear_inv);
  14. $reset_stats = trim($load_reset_settings->reset_stats);
  15. $reset_limit = trim($load_reset_settings->reset_limit);
  16. $reset_credits = trim($load_reset_settings->bcredits);
  17. $reset_credits_formula = trim($load_reset_settings->bcredits_formula);
  18.  
  19. if(isset($_GET['rid'])){
  20. echo '<div style="margin-top: 10px;">';
  21. $id = safe_input($_GET['rid'],'');
  22. if(empty($id) || !is_numeric($id)){
  23. header('Location: '.$core_run_script.'');
  24. exit();
  25. }else{
  26. if(character_and_account($id,$user_auth_id) === false){
  27. header('Location: '.$core_run_script.'');
  28. exit();
  29. }else {
  30. if(account_online($user_auth_id) === true){
  31. echo msg('0','Account is connected on game, please logout.');
  32. }else{
  33. $select_req = $core_db->Execute("select clevel,money,resets,leveluppoint,grand_resets from character where mu_id=? and accountid=?",array($id,$user_auth_id));
  34.  
  35. if($select_req->fields[2] < $reset_resets_need){
  36. echo msg('0','Unable to reset, reason: lacking '.($reset_resets_need - $select_req->fields[2]).' resets.');
  37. $no_reset = 1;
  38. }
  39.  
  40. if($select_req->fields[0] < $reset_level){
  41. echo msg('0','Unable to reset, reason: lacking '.($reset_level - $select_req->fields[0]).' levels.');
  42. $no_reset = 1;
  43. }
  44. if($select_req->fields[1] < $reset_zen){
  45. echo msg('0','Unable to reset, reason: lacking '.number_format($reset_zen - $select_req->fields[1]).' zen.');
  46. $no_reset = 1;
  47. }
  48. if($no_reset != '1'){
  49. $new_money = $select_req->fields[1] - $reset_zen;
  50. switch ($reset_points_formula){
  51. case '0': $new_bpoints = ($select_req->fields[3]+$reset_points); break;
  52. case '1': $new_bpoints = ($select_req->fields[3]+ ($reset_points*($select_req->fields[2]+1))); break;
  53. }
  54.  
  55. switch ($reset_credits_formula){
  56. case '0': $new_bcredits = ($reset_credits); break;
  57. case '1': $new_bcredits = ($reset_credits*($select_req->fields[4]+1)); break;
  58. }
  59. switch ($reset_stats){
  60. case '1':
  61. if($reset_clear_inv == '1' and $reset_clear_skills == '1'){
  62. $reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[inventory]=CONVERT(varbinary(1080), null),[magiclist]=CONVERT(varbinary(180), null),[grand_resets]=(grand_resets+1) where mu_id=?";
  63. }elseif ($reset_clear_inv == '1'){
  64. $reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[inventory]=CONVERT(varbinary(1080), null),[grand_resets]=(grand_resets+1) where mu_id=?";
  65. }elseif ($reset_clear_skills == '1'){
  66. $reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[magiclist]=CONVERT(varbinary(180), null),[grand_resets]=(grand_resets+1) where mu_id=?";
  67. }elseif ($reset_clear_inv == '0' and $reset_clear_skills == '0'){
  68. $reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[grand_resets]=(grand_resets+1) where mu_id=?";
  69. }
  70. break;
  71. case '0':
  72. if($reset_clear_inv == '1' and $reset_clear_skills == '1'){
  73. $reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[inventory]=CONVERT(varbinary(1080), null),[magiclist]=CONVERT(varbinary(180), null),[grand_resets]=(grand_resets+1) where mu_id=?";
  74. }elseif ($reset_clear_inv == '1'){
  75. $reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[inventory]=CONVERT(varbinary(1080), null),[grand_resets]=(grand_resets+1) where mu_id=?";
  76. }elseif ($reset_clear_skills == '1'){
  77. $reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[magiclist]=CONVERT(varbinary(180), null),[grand_resets]=(grand_resets+1) where mu_id=?";
  78. }elseif ($reset_clear_inv == '0' and $reset_clear_skills == '0'){
  79. $reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[grand_resets]=(grand_resets+1) where mu_id=?";
  80. }
  81. break;
  82. }
  83. $exc_reset_formula=$core_db->Execute($reset_formula,array($new_bpoints,$new_money,$id));
  84.  
  85.  
  86. $check_for_memb_id = $core_db2->Execute("Select ".MU_COINS_USERID_COLUMN." from ".MU_COINS_TABLE." where ".MU_COINS_USERID_COLUMN."=?",array($user_auth_id));
  87. if($check_for_memb_id->EOF){
  88. $set_credits = $core_db2->Execute("insert into ".MU_COINS_TABLE." (".MU_COINS_USERID_COLUMN.",".MU_COINS_COLUMN.")VALUES(?,?)",array($user_auth_id,$new_bcredits));
  89. }else{
  90. $set_credits = $core_db2->Execute("Update ".MU_COINS_TABLE." set ".MU_COINS_COLUMN."=".MU_COINS_COLUMN."+?  where ".MU_COINS_USERID_COLUMN."=?",array($new_bcredits,$user_auth_id));
  91. }
  92.  
  93.  
  94. if($exc_reset_formula && $set_credits){
  95. echo msg('1','Character successfully grand reseted.');
  96. }else{
  97. echo msg('0','Unable to grand reset, reason: system error, please contact administrator.');
  98. }
  99. }
  100. }
  101. }
  102. }
  103. echo '</div>';
  104. }
  105.  

Gracias por tu pronta respuesta, hace 4 dias estoy con esto, y ayer publique en varios foros pero nadie quiso ayudarme.

Gracias por la sugerencia, ya lo modifique


Título: Re: funcion en php
Publicado por: engel lex en 28 Junio 2014, 01:11 am
te recomiendo para que se pueda entender algo en tu codigo (es sumamente dificil de leer) modificalo y el codigo colocalo entre etiquetas GeSHi (donde está la etiqueta simple de codigo, a la derecha al final) y escoges tu lenguaje


Título: Re: funcion en php
Publicado por: MinusFour en 28 Junio 2014, 02:07 am
En este caso yo creo que podrías hacer un archivo que cargue toda la información de tus archivos xml. Por ejemplo:

Config.php
Código
  1. $load_reset_settings = simplexml_load_file('engine/config_mods/reset_character_settings.xml');
  2. $load_grand_reset_settings = simplexml_load_file('engine/config_mods/grandreset_character_settings.xml');
  3. ..
  4. //Agrega mas archivos aqui
  5. $reset_credits = trim($load_grand_reset_settings->bcredits);
  6. $reset_level = trim($load_reset_settings->level);
  7. ..
  8. //Agrega mas variables aqui

GrandReset.php
Código
  1. include 'Config.php'
  2. $reset_credits;
  3. //Tambien puedes ver $reset_level por si lo necesitas

Reset.php
Código
  1. include 'Config.php'
  2. $reset_level;
  3. //Tambien puedes ver $reset_credits por si lo necesitas


Título: Re: funcion en php
Publicado por: elezekiel en 28 Junio 2014, 02:16 am
Entiendo perfectamente lo que decis, gracias por la claridad, como agrego el archivo??..
sorry se que soy nulo en php..

o el code que me facilitaste ya lo tiene cargado?

Creo otro con extension html y agrego el script que me pasaste?
no me queda claro lo de agregar mas archivos.. si le llamas aregar a la linea de code o a crear un archivo nuevo de 0.

de verdad disculpas por no saber, yo solo manejo visual basic 6.

gracias


Título: Re: funcion en php
Publicado por: MinusFour en 28 Junio 2014, 02:35 am
Los archivos pueden estar donde sea, lo único importante es que el include apunte correctamente a él archivo de configuración. El archivo tiene que cargar todas las variables y los archivos correspondientes para configurar las variables.

Cuando quieras utilizar las variables sólo llamas al archivo vía include y listo.


Título: Re: funcion en php
Publicado por: elezekiel en 28 Junio 2014, 03:22 am
Excelente, gracias, ya entiendo mas... muchas gracias.. voy a llevar a cabo la modificacion y comento  como me fue.

Nuevamente muchas gracias por tu tiempo y experiencia.


Título: Re: funcion en php
Publicado por: elezekiel en 28 Junio 2014, 03:48 am
Los archivos pueden estar donde sea, lo único importante es que el include apunte correctamente a él archivo de configuración. El archivo tiene que cargar todas las variables y los archivos correspondientes para configurar las variables.

Cuando quieras utilizar las variables sólo llamas al archivo vía include y listo.

Bueno intente pero no pude, me ignora el resto del code si coloco el "include"
Quiero decir que cuando voy a la pagina y apreto el boton para que vaya a aesa opcion no aparece nada, no me muestra nada.

Hay alguna parte especial donde deba colocarlo?

En el nombre del archivo con el nombre basta o tengo que colocar la ruta completa?

Saludos.


Título: Re: funcion en php
Publicado por: MinusFour en 28 Junio 2014, 05:14 am
Probablemente haya un error en tu archivo de configuración. Sólo con el nombre basta si los archivos comparten el mismo directorio.


Título: Re: funcion en php
Publicado por: Gh057 en 28 Junio 2014, 05:39 am
mmm es raro... debería tirar un warning, puedes usar también require, para forzar a detenerse si es por problema de ruteo. puedes usar rutas relativas o absolutas. saludos


Título: Re: funcion en php
Publicado por: elezekiel en 29 Junio 2014, 20:54 pm
No me tira error alguno... solamente cuando yo normalmente voy en la web a ese panel me aparecen casillas para llenar y datos de informacion, al ingresar el code que me pasaron desaparece todo, como que es un error de sintaxis pero no lanza error, se entiende?

como usaria esa funcion que dices "require" soy noob en php.

gracias por contestar.

----

Pude resolver haciendo esto pero me queda un detalle:

Código
  1. $obt_gr_res = "Select Grand_Resets From Character Where mu_id=?";
  2. $exc_gr_res_Con=$core_db->Execute($obt_gr_res,$id);
  3. $exc_gr_res_Con = ($exc_gr_res_Con*10000);
  4. $new_bpoints = ($reset_points*($select_req->fields[2]+1)+$exc_gr_res_Con); break;
  5. }

El problema es este, la variable "Grand_Resets" yo ejecuto la misma consulta directo del SQL y me devuelve el valor correcto (2)

Pero cuando lo hago de la web me hace 10000 multiplicado por 1.

Por que es eso? donde estoy fallando? Me esta tomando el numero 1 como valor no el 2 como deberia ser.

mi idea es obtener ese numero y multiplicarlo por diez mil.

Saludos.

PD: disculpen, soy novato en PHP, derepente mi codigo esta malo o inentendible.


Título: Re: funcion en php
Publicado por: MinusFour en 30 Junio 2014, 18:33 pm
Probablemente la consulta no sea la misma, imprime la variable $id para ver si es la misma en tu consulta.

Si no te salen los errores en tus páginas es porque tienes apagado los errores en tu server.

Puedes poner:

Código

Al principio de tu archivo, o cambiar la configuración en el archivo php.ini.


Título: Re: funcion en php
Publicado por: elezekiel en 30 Junio 2014, 19:35 pm
gracias por contestar, lo solucione poniendo esto, ya que al no colocar el valor que quiero obtener pienso yo que me tomaba la cantidad de registros y no el valor del campo:

Código
  1. $exc_gr_res_Con->fields[0]

Ahora me devuelve el valor corrrecto, pueden dar por solucionado el tema, muchas ggracias por su tiempo, siempre se aprende algo nuevo sin querer :)

Salud!