Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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 (php) [Seleccionar]
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 (php) [Seleccionar]
echo "<td width='20'>",
       "<a title='{$title}' onClick='confirmar({$reg['id']}, {$reg['id_ticket']})' href='#'>",
           "<img src='img/delete.png'>",
       "</a>",
   "</td>";



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

Código (php) [Seleccionar]
$template = '<td width="20">'.
               '<a title="%title%" onClick="confirmar(%id%, %id_ticket%)" href="#">'.
                   '<img src="img/delete.png>'.
               '</a>'.
           '</td>';

$variables = array(
   '%title%' => $langs->trans('borrar_reg'),
   '%id%' => $reg['id'],
   '%id_ticket%' => $reg['id_ticket']
);


$content = strtr($template, $variables);

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 (php) [Seleccionar]
alert("'.$langs->trans("reg_deleted").'");

Haciendo esto se ha solucionado el problema

Código (php) [Seleccionar]
alert("'.json_encode($langs->trans("reg_deleted")).'");