Foros del Web » Programando para Internet » PHP »

Ayuda con un formulario en PHP

Estas en el tema de Ayuda con un formulario en PHP en el foro de PHP en Foros del Web. Necesito ayuda con este formulario que tengo en una página llamada test.php aqui dejo el codigo del formulario: Código PHP: <?php session_start (); if (isset( $_POST ...
  #1 (permalink)  
Antiguo 11/05/2010, 11:38
 
Fecha de Ingreso: abril-2010
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Ayuda con un formulario en PHP

Necesito ayuda con este formulario que tengo en una página llamada test.php

aqui dejo el codigo del formulario:

Código PHP:
<?php
session_start
();
if (isset(
$_POST['submit'])) {
// clean and check form inputs including the secure image code
    
$name trim(strip_tags($_POST['name']));
    
$email trim(strip_tags($_POST['email']));
    
$comments trim(strip_tags($_POST['comments']));
    
$secure strtoupper(trim(strip_tags($_POST['secure'])));
    
$match $_SESSION['captcha']; // the code on the image

// input error checking
    
if ($name=="") {
        
$err.= "Please provide your name<br/>";
    }
    if (!
$email) {
        
$err.= "Please provide your email address<br>";
    }
    if (
$email) {
        if (!
eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$email)) {
            
$err.= $email" is not a valid email address.<br/>";
        }
    } 
    if (
$comments=="") {
        
$err.= "Please provide comments<br/>";
    }
    if (!
$secure) {
        
$err.= "No security code entered<br/>";
    }
    if ((
$secure!=$match) && ($secure!="")) {
        
$err.= "Security code mismatch<br/>";
    }
    if (
$err=="") {
    
// success - input passed all tests
    
echo "What you do with success is up to you.";
    exit();
    }
}
?>
<head>
<title>Trolls go away</title>
<style type="text/css">
body,td {
    font-family:arial, helvetica, sans-serif;
    background:#fff;
    color:#000;
    font-size:12px;
}
input, textarea {
    background:#eee;
    color:#000;
    font-size:12px;
    border:1px solid #000;   
 }
</style>
</head>
<body>
<?php
if ($err!="") {
    echo 
"<strong>Form Error(s)</strong><br/>";
    echo 
"<font color='#cc3300'>"nl2br($err). "</font><br/>";
}
?>

<form name="captcha" method="post" action="<?php echo $_SERVER['SCRIPT_NAME'];?>">
<table cellpadding="3" cellspacing="2" style="border:1px dotted #666;">
<tr>
<td>Name:</td><td><input type="text" name="name" value="<?php echo $_POST['name'];?>"/></td>
</tr>
<tr>
<td>Email:</td><td><input type="text" name="email" value="<?php echo $_POST['email'];?>"/></td>
</tr>
<tr>
<td valign="top">Comments:</td><td><textarea rows="5" columns="30" name="comments"><?php echo $_POST['comments'];?></textarea></td>
</tr>
<tr>
<td>Security Code</td><td><input type="text" name="secure"/></td>
</tr>
<tr>
<td><img src="captcha_image.php" alt="security image" border="0"/></td><td><input type="submit" name="submit" value="Send"/></td>
</tr>
</table>
</form>
</body>
</html>

Lo que pasa es que si pongo la pagina (send.php) en el action que es por donde se envia el formulario a mi mail va directamente a esa pagina sin verificar que este correctamente escrito todo

Ayuda porfavor
  #2 (permalink)  
Antiguo 11/05/2010, 11:48
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Ayuda con un formulario en PHP

No lo solucionarias poniendo las validaciones php en el archivo send.php...... asi si vez algun problema, lo regresas a tets.php.

Si quieres validarlo con php, podrias usar ajax....

Por que no usas javascript ???

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 11/05/2010, 12:17
 
Fecha de Ingreso: abril-2010
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda con un formulario en PHP

Cita:
Iniciado por masterojitos Ver Mensaje
No lo solucionarias poniendo las validaciones php en el archivo send.php...... asi si vez algun problema, lo regresas a tets.php.

Si quieres validarlo con php, podrias usar ajax....

Por que no usas javascript ???

Suerte.

He puesto las validaciones en el archivo send.php y aun asi envia el mensaje..

y esque no quiero usar javascript porque cualquiera puede desactivarlo y se salta las validaciones.
  #4 (permalink)  
Antiguo 12/05/2010, 18:22
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Ayuda con un formulario en PHP

si ese usuario deshabilita javascript.. para eso existe php no ???

pero simplemente en php validas que si viene algun dato vacio o incorrecto para ti, lo regresas a la pagina anterior...

por que dices que no te funciona...... por su puesto que envia el mensaje, pero en le otro archivo validas y si es incorrecto, lo retornas y vas evaluando.......

pero estar haciendo eso es fastidioso, por eso te digo que valides con javascript.... estamos en el 2010 amigo, se valida con javascript.... con php solo se deberia de dar seguridad a posibles atentados.... pero eso no es validad

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #5 (permalink)  
Antiguo 12/05/2010, 18:42
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con un formulario en PHP

Has probado inicializar $err? $err = '';

Puesto que no existe la variable, al intentar concatenar $err .= 'Proporciona tu nombre<br />'; te va a dar error.

Cita:
Iniciado por masterojitos
estamos en el 2010 amigo, se valida con javascript.... con php solo se deberia de dar seguridad a posibles atentados
WTF!!!???

La validacion con PHP es obligada, simplemente porque se puede deshabilitar javascript en el navegador, independientemente de que haya una validacion previa con javascript (o AJAX).

Por favor, estamos en el 2010, se supone que cada vez debemos hacer las cosas mejor y regresar a practicas de los 90's donde se confiaba en la buena voluntad de todos los usuarios no es garantia de seguridad.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 12/05/2010, 20:14
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Ayuda con un formulario en PHP

Lo estuve provando... Funciona

Mira no cambies nada que la llamada se haga a la misma pagina, si los campos son todos correctos se ejecuta esta parte:

if ($err=="") {
// success - input passed all tests
echo "What you do with success is up to you<br />.";

//solo le agregue esto
echo $name."<br />";
echo $email."<br />";
echo $comments."<br />";

//exit() detiene el codigo para que no vuelva a mostrarte el form
exit();
}


Y que mas quieres...!!! Ya puedes manipular los datos enviados por el formulario...! Alli dentro puedes poner tu funcion mail();

PD: si tienes problemas con el codigo de seguridad, puedes comentar el condicional asi (bah yo lo hice para que no me moleste)
/*
if (!$secure) {
$err.= "No security code entered<br/>";
}

if (($secure!=$match) && ($secure!="")) {
$err.= "Security code mismatch<br/>";
}
*/


Saludos...!
  #7 (permalink)  
Antiguo 13/05/2010, 15:30
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Ayuda con un formulario en PHP

Triby

Cita:
Iniciado por Triby Ver Mensaje
Por favor, estamos en el 2010, se supone que cada vez debemos hacer las cosas mejor y regresar a practicas de los 90's donde se confiaba en la buena voluntad de todos los usuarios no es garantia de seguridad.
y cuando comente que no use php ?? o no leiste esto:

Cita:
si ese usuario deshabilita javascript.. para eso existe php no ???
espero equivocarme, pero creo que tratas de decir que no se debe validar con javascript.... :

Cita:
Iniciado por Triby Ver Mensaje
no es garantia de seguridad.
obvio que no es seguro........ que pero tampoco leiste esto ??

Cita:
con php solo se deberia de dar seguridad a posibles atentados....
ahi digo que con php si o si se debe de dar la seguridad necesaria para esos usuarios malintencionados, con usos de try.. cath... por ejemplo.......

En fin... creo que cualquier usuario que se digna a decir que sabe php, debe saber que se debe de dar seguridad con php....

Dios os Bendiga a Todos.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #8 (permalink)  
Antiguo 13/05/2010, 22:17
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con un formulario en PHP

Cita:
Iniciado por masterojitos
pero estar haciendo eso es fastidioso, por eso te digo que valides con javascript.... estamos en el 2010 amigo, se valida con javascript.... con php solo se deberia de dar seguridad a posibles atentados.... pero eso no es validad
Mi comentario se debio a lo que dijiste (que marque en negrillas y en rojo).

Cita:
Iniciado por masterojitos
espero equivocarme, pero creo que tratas de decir que no se debe validar con javascript....
Supongo que no leiste bien lo que dije:

Cita:
Iniciado por Triby
La validacion con PHP es obligada, simplemente porque se puede deshabilitar javascript en el navegador, independientemente de que haya una validacion previa con javascript (o AJAX).
Repito, validacion con PHP es OBLIGATORIA... con Javascript es OPCIONAL, por el simple hecho de que puede no funcionar en determinadas condiciones, incluyendo las preferencias (y/o malas intenciones) de cada usuario.

Cita:
Iniciado por masterojitos
ahi digo que con php si o si se debe de dar la seguridad necesaria para esos usuarios malintencionados, con usos de try.. cath... por ejemplo.......
A ver, mi estimado master en PHP, al menos asi te declaras en tu blog, espero que puedas sacarme de mi ignorancia, porque yo siempre tuve la "leve sospecha" que try / catch es para "capturar" los posibles errores, dandote la oportunidad de tener un mejor control sobre los mismos y el comportamiento de tu aplicacion cuando estos se presentan.

Pero, ya que lo mencionas, me gustaria ver como se puede usar try / catch para "dar la seguridad necesaria para esos usuarios malintencionados" (sic).

Disculpa la postdata.

P.D. WTF!!!???
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 14/05/2010, 14:55
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Ayuda con un formulario en PHP

Al usar try / Cath por ejemplo, podia susitarse que si registro un dato vacio, en el cual declarando en la base de datos que debe venir un valor.... arrojaria error, por lo que lo capturaria el try / cath....

un posible ataque, de esas personas malintencionadas seria por "injecciones sql", "ataque xss", "spoofing", entre otros...... y para eso, es necesaria y mas que necesaria, es obligatoria.... pero esto no es validacion, es seguridad !!

Entonces.... para cerrar el tema, al menos por parte mia, puesto que no me gusta abrir otros temas.... es que al momento de validar, es aconsejable la validacion con javascript y apoyo de css para hacer mas limpio.... y que estar haciendolo con php, es fastidioso, por lo que no voy a estar validando con php a cada instante, "ingrese nombre", "correo invalido", etc.... si es bueno, pero no obligatorio, no obstante, si obligatorio la seguridad.

Espero haberme explicado.... no seguir creando mas confusiones ni malentendidos... y por sobre todo.... que los usuarios sepan las buenas y eficientes practicas al momento de crear sus webs.....

Suerte para todos y que Dios los Bendiga.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #10 (permalink)  
Antiguo 14/05/2010, 15:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con un formulario en PHP

Cita:
Iniciado por masterojitos
Al usar try / Cath por ejemplo, podia susitarse que si registro un dato vacio, en el cual declarando en la base de datos que debe venir un valor.... arrojaria error, por lo que lo capturaria el try / cath....
Y si en la tabla se declara que el campo puede ser nulo? no arrojaria error y crearia el registro, cierto?

En todo caso, ese ejemplo de "error" se presentaria por no validar correctamente. Por cierto, primero validas cada entrada (tipo, rangos, contenidos, etc.) y despues aplicas seguridad extra (mysql_real_escape_string, strip_tags, etc.) para guardar en base de datos.

Finalmente, como puede haber seguridad sin una validacion fastidiosa (sic), minuciosa y adecuada?
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 14/05/2010, 18:32
 
Fecha de Ingreso: mayo-2010
Mensajes: 51
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: Ayuda con un formulario en PHP

En resumen amigo, es muchísimo más agradable para el usuario que valides con javascript, pero siempre tendrás que validar usando PHP.

Mucha suerte con tu código.
  #12 (permalink)  
Antiguo 14/05/2010, 20:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda con un formulario en PHP

Cita:
Iniciado por Luisus Ver Mensaje
En resumen amigo, es muchísimo más agradable para el usuario que valides con javascript, pero siempre tendrás que validar usando PHP.

Mucha suerte con tu código.
En efecto, hay una regla en PHP y es, nunca confiar en el contenido que viene desde el usuario, ya que siempre es suceptible a ataques.

Etiquetas: formulario
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 14:33.