Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: KateLibby en 28 Febrero 2019, 15:14 pm



Título: problema con comillas en servidor Linux
Publicado por: KateLibby en 28 Febrero 2019, 15:14 pm
Hola!

Tengo el siguiente código en el que la función confirmar me funciona sin problema cuando lo tengo subido a un servidor que corre sobre Windows, pero ha dejado de funcionarme en el momento en que lo he subido a un servidor Linux.

Código
  1. print '<td width="20"><a title="'.$langs->trans("borrar_reg").'" onClick = \'confirmar('.$reg['id'].', '.$reg['id_ticket'].')\' href="#"><img src="img/delete.png"></a></td>';

Por una serie de pruebas que he hecho, parece que el problema está en las comillas, ya que lo he probado con un simple alert y al final me ha funcionado haciendo combinaciones con las comillas dobles y simples. Pero con el caso del ejemplo no lo he conseguido, aún y habiendo visto que el código que genera el navegador es exactamente igual que el que me funciona con Windows.

¿Alguien podría echarme una mano? Gracias.

EDITO: Se me olvidaba decir que he mirado si me daba errores con el Inspector del navegador, y Firefox no me duevuelve ningún error, pero Chrome me dice que no encuentra la función confirmar


Título: Re: problema con comillas en servidor Linux
Publicado por: #!drvy en 28 Febrero 2019, 15:57 pm
Las comillas no estan mal, el problema lo tienes en otro lado. Es feo tal y como están, pero mal lo que se dice mal.. no estan. Deberías mirar como declaras la función confirmar().

Lo ideal en estos casos es encapsular bien y hacer legible.

Código
  1. echo "<td width='20'>",
  2.        "<a title='{$title}' onClick='confirmar({$reg['id']}, {$reg['id_ticket']})' href='#'>",
  3.            "<img src='img/delete.png'>",
  4.        "</a>",
  5.    "</td>";


O mejor aún usando un sistema de templates o haciendo uno a lo cutre:

Código
  1. $template = '<td width="20">'.
  2.                '<a title="%title%" onClick="confirmar(%id%, %id_ticket%)" href="#">'.
  3.                    '<img src="img/delete.png>'.
  4.                '</a>'.
  5.            '</td>';
  6.  
  7. $variables = array(
  8.    '%title%' => $langs->trans('borrar_reg'),
  9.    '%id%' => $reg['id'],
  10.    '%id_ticket%' => $reg['id_ticket']
  11. );
  12.  
  13.  
  14. $content = strtr($template, $variables);
  15.  
  16. echo $content;


Saludos


Título: Re: problema con comillas en servidor Linux
Publicado por: KateLibby en 1 Marzo 2019, 09:27 am
Gracias por tu respuesta.

La verdad es que el problema debe ser otro... Ahora he puesto el código de forma más entendible como me dijiste, y lo he aislado en un archivo que no tenga más que esa parte del código. De esta forma sí me ha funcionado.

Seguiré investigando.


Título: Re: problema con comillas en servidor Linux
Publicado por: KateLibby en 4 Marzo 2019, 10:53 am
Ok, ya he encontrado una solución. Donde tenía el problema era en meter un string de idioma en los alert

Código
  1. alert("'.$langs->trans("reg_deleted").'");

Haciendo esto se ha solucionado el problema

Código
  1. alert("'.json_encode($langs->trans("reg_deleted")).'");