Autor
|
Tema: [Resuelto] ¿Cómo enviar datos mezclando Java Script y PHP sin crear conflictos? (Leído 3,395 veces)
|
big_ed
Desconectado
Mensajes: 82
|
Hola . Estoy haciendo un formulario cuyos datos van a ser enviados con PHP pero "limpiados / filtrados" con Java Script. Al inicio queria hacerlo todo con PHP (se complica menos el no mezclar dos lenguajes distintos), es decir también la limpieza de datos, pero luego me di cuenta que más rápido sería primero limpiar / filtrar los datos con Java S. para luego enviarlos con PHP... Pero hacer esta mezcla me ha generado una duda y un conflicto: 1. Si ya estoy limpiando los datos con java script entonces no necesito hacerlo nuevamente con PHP, cierto?? Por lo tanto, funciones de PHP como trim(), stripslashes() y htmlspecialchars(), ya no deberian ser necesarias, correcto??? Abajo voy a poner mi codigo y veran como he limpiado los datos con js. Ademas como he limitado los caracteres extraños haciendo uso de las expresiones regulares.2. ¿Cómo hago para meter codigo PHP en Java Script sin ocasionar conflicto? Esto es dificil de explicar asi que lo mejor sera que vean mi codigo para que entiendan lo que quiero decir...En el ultimo "else" explico esta parte://CODIGO HTML... MI FORMULARIO //CODIGO HTML... MI FORMULARIO
<form method="POST"> <input type="text" name="text" maxlength /> <input type="text" name="mail" maxlength /> <input type="text" name="telf" maxlength /> <textarea name="post" ></textarea> <input type="submit" value="Enviar Correo" maxlength /> </form>
//CODIGO JAVA SCRIPT... LA LIMPIEZA DE DATOS //CODIGO JAVA SCRIPT... LA LIMPIEZA DE DATOS
<script> document.forms[0].onsubmit = function () {
//recojo los valores de los campos var text = document.forms[0]['text'].value; var mail = document.forms[0]['mail'].value; var telf = document.forms[0]['telf'].value; var post = document.forms[0]['post'].value; //creo expresiones regulares, la primera que solo permite texto, y la segunda valida un correo legitimo var exp1 = /^[a-z\s]+$/i; var exp2 = /^[a-z0-9._-]+@[a-z0-9.-]+\.[a-z]{2,9}$/;
if ( text=="" || mail=="" || telf=="" || post=="" ) { alert( "Rellena todos los campos!" ); return false } else { if ( text.length > 50 ) { alert( "El campo Nombre permite un máximo de 50 caracteres!" ); return false } else if ( !exp1.test( text ) ) { alert( "Los nombres solo deben contener letras (mayúsculas o minúsculas) y espacios!" ); return false } else if ( mail.length > 30 ) { alert( "El campo Correo permite un máximo de 30 caracteres!" ); return false } else if ( !exp2.test( mail ) ) { alert( "Ingresa un correo válido!" ); return false } else if ( telf.length > 11 ) { alert( "El campo Teléfono permite un máximo de 11 caracteres!" ); return false } else if ( isNaN(telf) ) { alert( "Ingresa un número válido! Sólo hasta 11 digitos." ); return false } else { //AQUI DEBERIA IR EL CODIGO PHP DE ENVIO DE DATOS Pero todo deja de funcionar cuando aqui agrego codigo php: <?php echo $_POST["text"] . '<br>'; echo $_POST["mail"] . '<br>'; echo $_POST["telf"] . '<br>'; echo $_POST["post"] . '<br>'; ?> } }
} </script>
|
|
« Última modificación: 24 Septiembre 2019, 11:53 am por #!drvy »
|
En línea
|
|
|
|
@XSStringManolo
Hacker/Programador
Colaborador
Desconectado
Mensajes: 2.399
Turn off the red ligth
|
Lo ideal es validar tanto en el cliente como en el servidor. Por mucho que valides en el cliente, puede usar una herramienta tipo burpsuite, webscarab o cualquier otra herramienta con proxy del estilo para obtener las cabeceras, inyectar el código antes de enviarlas y hacer forward al servidor. Asique la validación por parte del cliente sirve más bien de poco en muchos casos. Valida siempre en el servidor. Si no te gusta PHP usa node.js
Pd: Acabo de fijarme en el código que pusiste. No tiene sentido. javascript se ejecuta en el navegador en el ordenador del usuario que visita la página. PHP se ejecuta en el servidor que tendrás tú en tu casa o en un hosting. No puedes ni ejecutar PHP en el navegador, ni ejecutar javascript en el servidor. (Con node.js sí, pero entonces no usas PHP para nada.)
Si quieres pasar los datos del form desde el navegador(javascript) al servidor PHP, necesitas usar cualquiera de las distintas formas de comunicarse con el servidor con html5 o javascript. Véase sockets, xmlhttp, etc.
|
|
« Última modificación: 13 Agosto 2019, 22:08 pm por string Manolo »
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
big_ed
Desconectado
Mensajes: 82
|
Lo ideal es validar tanto en el cliente como en el servidor. Por mucho que valides en el cliente, puede usar una herramienta tipo burpsuite, webscarab o cualquier otra herramienta con proxy del estilo para obtener las cabeceras, inyectar el código antes de enviarlas y hacer forward al servidor. Asique la validación por parte del cliente sirve más bien de poco en muchos casos. Valida siempre en el servidor. Si no te gusta PHP usa node.js
Pd: Acabo de fijarme en el código que pusiste. No tiene sentido. javascript se ejecuta en el navegador en el ordenador del usuario que visita la página. PHP se ejecuta en el servidor que tendrás tú en tu casa o en un hosting. No puedes ni ejecutar PHP en el navegador, ni ejecutar javascript en el servidor. (Con node.js sí, pero entonces no usas PHP para nada.)
Si quieres pasar los datos del form desde el navegador(javascript) al servidor PHP, necesitas usar cualquiera de las distintas formas de comunicarse con el servidor con html5 o javascript. Véase sockets, xmlhttp, etc.
Eres la tercera persona que me dice lo mismo, que de toda formas necesito validar con php, entonces ya no voy a validar con java script, se me hace un sinsentido validar con ambos , solo es una perdida de tiempo, porque al final la que importa es la validacion del lado del server ... mejor no me hago bolas y solo uso php
|
|
|
En línea
|
|
|
|
#!drvy
|
se me hace un sinsentido validar con ambos , solo es una perdida de tiempo, porque al final la que importa es la validacion del lado del server ... mejor no me hago bolas y solo uso php Es util para evitar requests inutiles al servidor y que el usuario sepa de inmediato donde se ha equivocado. Eso si, validar con JS al final es opcional (muy útil pero opcional), validar en el servidor es obligatorio. Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
no puedo enviar un type=hidden a una fucion en java script?
Java
|
coolfrog
|
0
|
2,813
|
17 Septiembre 2004, 18:19 pm
por coolfrog
|
|
|
conflictos con compilador de java Jcreator y win vista
Java
|
tiririx
|
1
|
4,802
|
26 Septiembre 2007, 00:52 am
por GallaZ
|
|
|
[Resuelto] Como enviar datos POST de PHP a ASP y leer cabeceras
« 1 2 »
PHP
|
kerkox
|
10
|
6,360
|
21 Julio 2015, 01:33 am
por kerkox
|
|
|
[Java Script] )(Split) Como obtener datos de un String como un config.ini
Scripting
|
Brian1511
|
5
|
5,370
|
4 Agosto 2015, 00:08 am
por Brian1511
|
|
|
[Resuelto] ayuda para crear script
Desarrollo Web
|
carwar
|
2
|
3,713
|
19 Agosto 2017, 22:51 pm
por carwar
|
|