elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)  (Leído 3,251 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
[Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
« en: 2 Noviembre 2020, 20:31 pm »

Hola,

bueno quisiera poder convertir un arreglo que tengo definido en php a javascript, esto si ya sé como poder hacerlo pero quiero hacerlo de la siguiente manera:

Código
  1. $array = array('A', 'B', 'C', 'D'); // defino mi arreglo php
  2.  

Código
  1. var array = <?php echo json_encode($array); ?>; // de esta manera voy a estar convirtiendo el arreglo php a un arreglo en javascript
  2.  

Ahora lo que devolverá ese arreglo será..
Código
  1. ["A", "B", "C", "D"]
  2.  

Y yo quiero que no lo haga de esa manera, quiero que lo convierta de esta forma...
Código
  1. ['A', 'B', 'C', 'D']
  2.  

Es posible que no lo hayan notado pero la diferencia está en el uso de las comillas simples en lugar de las comillas dobles que me vienen por defecto, ¿Cómo podría hacer esto? ¿y todavía mejor, se puede hacer algo?


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
« Respuesta #1 en: 2 Noviembre 2020, 21:29 pm »

Acabo de buscar, pense que se podia definir utilizando el segundo parámetro de json_encode pero no, no esta la opcion de forzar el uso de comillas sencillas.

Y a todo esto, ¿hay alguna diferencia para javascript?


Podrias tratar de realizar la sustitución manualmente, sin embargo dependiendo del contenido puede darte problemas al momento de escapar las " que realmente estén en las variables.

Código
  1. $array = array('A', 'B', 'C', 'D');
  2. echo  str_replace('"',"'",json_encode($array));
  3.  

Saludos!


« Última modificación: 2 Noviembre 2020, 21:35 pm por AlbertoBSD » En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
« Respuesta #2 en: 2 Noviembre 2020, 21:47 pm »

Acabo de buscar, pense que se podia definir utilizando el segundo parámetro de json_encode pero no, no esta la opcion de forzar el uso de comillas sencillas.

Y a todo esto, ¿hay alguna diferencia para javascript?


Podrias tratar de realizar la sustitución manualmente, sin embargo dependiendo del contenido puede darte problemas al momento de escapar las " que realmente estén en las variables.

Código
  1. $array = array('A', 'B', 'C', 'D');
  2. echo  str_replace('"',"'",json_encode($array));
  3.  

Saludos!

Claro, digamos que donde quiero aplicar esto porque estoy teniendo problemas es en esta parte:

Código
  1. <elemento onclick="funcion_js(["A", "B", "C"]);">cualquier cosa</elemento>
  2.  

Básicamente da problemas en onclick con esto de las comillas dobles, entonces de no poder cambiar o resolver esto de la forma que buscaba lo haría usando eval([nombre de la variable/arreglo]) como parámetro y creo que no me debería dar este problema.

Igual antes voy a probar tu código y te digo que tal.
« Última modificación: 2 Noviembre 2020, 21:53 pm por MiguelCanellas » En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.841


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
« Respuesta #3 en: 2 Noviembre 2020, 23:01 pm »

Hola, estás empleando mal la función "funcion_js" ya que no debés pasar datos de esa forma, lo correcto sería:

var datosParams = ["A", "B", "C"];

estas pasando en crudo todo y en programación no se hace de esa forma, es una mala práctica.
Aquí tenés un ejemplo funcional:

Código
  1. var datosParams = ["A", "B", "C"];
  2. <elemento onclick="funcion_js(datosParams);">cualquier cosa</elemento>

Verás que ahora si funciona y no da problemas, siempre tenés que guardar los datos dentro de una variable antes de la función que va a utilizarla.



Saludos
 
« Última modificación: 2 Noviembre 2020, 23:09 pm por Daniel 🇦🇷 » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
« Respuesta #4 en: 3 Noviembre 2020, 00:36 am »

Acabo de buscar, pense que se podia definir utilizando el segundo parámetro de json_encode pero no, no esta la opcion de forzar el uso de comillas sencillas.

JSON no permite comillas sencillas para los strings. No puedes forzar esa opción porque literalmente ningún parser debería entender strings con comillas simples. En pocas palabras, no es parte del "estandar".

En cuanto al propósito del tema original, no deberías ni imprimir javascript desde PHP ni usar los event attritube handlers (e.g. onclick, onfocus, onerror, etc). Mucho menos usar eval para esto.

Pero si tienes que imprimir javascript... e imprimirlo sobre los atributos... vas a tener que escapar los strings con htmlspecialchars.
En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
« Respuesta #5 en: 3 Noviembre 2020, 00:47 am »

Hola, estás empleando mal la función "funcion_js" ya que no debés pasar datos de esa forma, lo correcto sería:

var datosParams = ["A", "B", "C"];

estas pasando en crudo todo y en programación no se hace de esa forma, es una mala práctica.
Aquí tenés un ejemplo funcional:

Código
  1. var datosParams = ["A", "B", "C"];
  2. <elemento onclick="funcion_js(datosParams);">cualquier cosa</elemento>

Verás que ahora si funciona y no da problemas, siempre tenés que guardar los datos dentro de una variable antes de la función que va a utilizarla.



Saludos
 



Gracias a los tres!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines