Formulario AJAX simple y rápido.

zcriptz Seguir

1
Ómicron
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
Suscripción a IA
Desde
26 Mar 2013
Mensajes
4.622
PHP:
<?php
	if($_POST){ ?>
		<b>Campo 1:</b> <?=$_POST['campo1']?><br>
		<b>Campo 2:</b> <?=$_POST['campo2']?>
	<? exit;
	}
?>
<script>
	function AJAX(u, c, d){
		var XMLReq = new XMLHttpRequest();
		XMLReq.onreadystatechange = function(){
			if(XMLReq.readyState==4) c(XMLReq.responseText);
		};
		if(d) XMLReq.open('POST', u), XMLReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		else XMLReq.open('GET', u);
		XMLReq.send(d)
	}

	function sendForm(f, c){
		inputElements = f.querySelectorAll('input,textarea,select,button');
		for(i = 0, postVar = ''; i < inputElements.length; postVar += inputElements[i].name+'='+inputElements[i].value+'&', i++);
		AJAX(f.action, c, postVar);
		return false
	}


	function byId(i){
		return document.getElementById(i)
	}

</script>
<form method="post" onsubmit="return sendForm(this, function(h){ byId('status').innerHTML = h })">
	<b>Campo 1:</b><input type="text" name="campo1"><br>
	<b>Campo 2:</b><textarea name="campo2" style="width:300px;height:100px"></textarea>
	<input type="submit" value="Enviar">
</form>
<div id="status"></div>

Pueden definir a donde va a enviar AJAX colocandole "action" al FORM.

No hay mucho que explicar, ya es para usuarios más "avanzados".

Hay que ponerle al formulario
HTML:
onsubmit="return sendForm(this, CALLBACK)"
para que lo mande por AJAX.

(CALLBACK, es en este caso es a donde "escribirá" la respuesta recibida, en el caso del demo, en el DIV con la ID "status")



Modificado: me faltaba un parámetro en la función ajax.
 
Última edición:

Khano

Épsilon
No recomendado
Verificación en dos pasos activada
Desde
7 Abr 2019
Mensajes
794
Gracias por el aporte. Limpio, eficaz y fácil de entender. Saludos!
 

yeik1989

Beta
Verificación en dos pasos desactivada
Desde
14 May 2018
Mensajes
42
Muy bueno el script como base pero cuidado con estas cosas.

A este tipo de peticiones hay que aplicarles seguridad, imagino que en un caso de uso real no vas a hacer algo tan simple como pintar los campos que vienen por post en la pantalla, pero de ser así ten en cuenta que cualquier persona podría construir una petición post similar en su propio formulario, luego inyectar en los valores del campo un script en js que por ejemplo, lea las cookies de sesión (para robar la sesión obviamente) y las envie mediante ajax a otro servidor.

Luego este formulario ponerlo en una página y pasarsela a un usuario víctima de forma que el formulario se lance automáticamente al abrirla, redirigiendole a la página que muestra los valores recibidos por post en pantalla y ejecutandose el script que le roba las cookies.
 

zcriptz

1
Ómicron
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
Suscripción a IA
Desde
26 Mar 2013
Mensajes
4.622
Muy bueno el script como base pero cuidado con estas cosas.

A este tipo de peticiones hay que aplicarles seguridad, imagino que en un caso de uso real no vas a hacer algo tan simple como pintar los campos que vienen por post en la pantalla, pero de ser así ten en cuenta que cualquier persona podría construir una petición post similar en su propio formulario, luego inyectar en los valores del campo un script en js que por ejemplo, lea las cookies de sesión (para robar la sesión obviamente) y las envie mediante ajax a otro servidor.

Luego este formulario ponerlo en una página y pasarsela a un usuario víctima de forma que el formulario se lance automáticamente al abrirla, redirigiendole a la página que muestra los valores recibidos por post en pantalla y ejecutandose el script que le roba las cookies.

Es solo un ejemplo, está htmlentities y tokens... entre varias cosas simples que se pueden hacer para evitar eso.

- - - Actualizado - - -

La "seguridad" debería estar del lado del servidor, y no en esta función. Por eso creo que no va mucho al caso.
 

falcondev

Préstamo
No recomendado
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Desde
1 Mar 2019
Mensajes
440
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Excelente aporte amigo!
 

enigmatico

No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
22 May 2019
Mensajes
88
gracias por ese aporte amigo.
 

DarwinSEO

Épsilon
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
4 Jul 2019
Mensajes
803
Gracias por el aporte sencillo y fácil de entender.
 

DragLur

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Ha verificado su Paypal!
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
10 May 2018
Mensajes
101
Gracias por el aporte!!
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba