Foros del Web » Programando para Internet » PHP »

Si Es Error Q No Envie Datos

Estas en el tema de Si Es Error Q No Envie Datos en el foro de PHP en Foros del Web. HOLAS UNA RPEGUNTA EN MI FORM SEGURO Q HE HECHO CON UN CAPTCH TODO ME SALE MOSTRO ME VALIDA SI EL CODIGO INGRESADO EStA CORRECTO ...
  #1 (permalink)  
Antiguo 18/08/2006, 11:54
Avatar de karandaleari  
Fecha de Ingreso: agosto-2006
Mensajes: 11
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Si Es Error Q No Envie Datos

HOLAS UNA RPEGUNTA EN MI FORM SEGURO Q HE HECHO CON UN CAPTCH TODO ME SALE MOSTRO ME VALIDA SI EL CODIGO INGRESADO EStA CORRECTO O NO...Y ME SALE UN MENSAJE....PEOR ACA VIENE LA AYUDA Q KIERO-.NECESITO Q NO SOLAMNETE ME HAGO ESO,,
SI NO Q AL NO ESCRIBIR BIEN EL CODIGO...LOS DATOS DEL FORM... NO LLEGUEN A ENVIARSE POR EL SUBMIT.....PORKE HE PROBADO Q AUN QLE CODIGO ESTE O NO CORRECTO..IGUAL LOS DATOS DEL FORM..LEGAN A MI EMAIL...Y NO DEBERIA SER ASI..
NECESITO Q POR LO MENOS REGRESE Y OBLIGUE AL USUARIO A PONER BIEN EL COPDIGO O Q REFRESQUE LA POAG..PEOR Q NO SE MANDEN LOS DATOS..
ESTE ES EL CODIGO:

?php
session_start();

if (trim($_SESSION["cdg"]) != trim($_POST["codigo_seguridad"]))
{
echo "Error!, código de seguridad incorrecto.";
}
else{
echo "Codigo de seguridad correcto";
}
unset($_SESSION);
session_destroy();
?>
  #2 (permalink)  
Antiguo 18/08/2006, 12:02
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 6 meses
Puntos: 0
Ok, tal vez sea la falta de cafeina, pero en tu codigo no veo ninguna instruccion que envie el formulario, por que no pones el codigo completo?

saludos
__________________
De todas las cosas que queria ser... :-D acabe siendo un pato volador... :risa:
http://patovolador.wordpress.com
  #3 (permalink)  
Antiguo 21/08/2006, 09:46
Avatar de karandaleari  
Fecha de Ingreso: agosto-2006
Mensajes: 11
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Ok Ahi Te Va

OK AHI TE VA EL CODIGO:

PROTECCION GRAFICA:
<?
function generar_codigo($longitud=5) {
mt_srand((double)microtime()*1000000);
$codigo=md5(uniqid(mt_rand()));
$codigo=substr($codigo, 0, $longitud);
return $codigo;
}

// Iniciamos la sesión
session_start();

// Le damos un nombre
session_register('nombredelasesion');

// Seteamos la variable de sesión $_SESSION["cdg"]
// dándole un valor generado por la función
$_SESSION["cdg"]=generar_codigo();

?>

CODIGO.PHP


<?php // codigo.php
// Iniciamos la sesión
session_start();

// Le damos un nombre
session_register('nombredelasesion');

// Enviamos las cabeceras al navegador, para que
// sepa que el documento es una imagen
header("Content-type: image/png");

// a la variable $codigo le damos el
// valor del código generado
$codigo=$_SESSION["cdg"];

// Creamos la imagen
$imagen=ImageCreate(70, 30);

// Generamos el fondo gris
$fondo_gris=ImageColorAllocate($imagen, 207, 207, 207);

// Generamos el color de las letras (negro)
$letras_negras=ImageColorAllocate($imagen, 0, 0, 0);

// Rellenamos la imagen con fondo gris
ImageFill($imagen, 0, 0, $fondo_gris);

// Escribimos $codigo con letras negras
// de numero 5
ImageString($imagen, 5, 10, 10, $codigo, $letras_negras);

// Creamos la imagen *.png
ImagePng($imagen);
?>


FORMULARIO.PHP:
<?php include("proteccion_grafica.php");?>
<BODY>
<form action="mail.php" method="post" name="contact" onSubmit="return verifica(this);">
Insert the Code, please: <input name="codigo_seguridad" type="text" size="6"><img src="codigo.php">
</FORM>
</BODY>

MAIL.PHP:
<?php
session_start();

if (trim($_SESSION["cdg"]) != trim($_POST["codigo_seguridad"]))
{
echo "Error!, código de seguridad incorrecto.";
}
else{
echo "Codigo de seguridad correcto";
}
unset($_SESSION);
session_destroy();
?>


PLEASE COMO HAGO PA Q NO SOLO VALIDE Q EL CODIGO INGRESADO ES CORRECTO O NO..SI NO Q AL VALIDAR Q ES INCORRECTO NO MANDE LOS DATOS DEL FORM..
PORKE IGUAL ME LOS MANDA AL EMAIL..YO NECESITO QUE SI EOL CODIGO INGRESADO ES INCORRECTO Q VUELVA AL FORM HASTA Q EL USUARIO INGRESE EL CODIGO CORRECTO

DISCULPEN MI IGNORANCIA PERO SOY NUEVA EN ESTO
MUCHAS GRACIAS
  #4 (permalink)  
Antiguo 21/08/2006, 09:49
Avatar de karandaleari  
Fecha de Ingreso: agosto-2006
Mensajes: 11
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Si Es Error Que No Envie Datos

HOLAS UNA PREGUNTA EN MI FORM SEGURO Q HE HECHO CON UN CAPTCH TODO ME SALE MOSTRO ME VALIDA SI EL CODIGO INGRESADO EStA CORRECTO O NO...Y ME SALE UN MENSAJE....PERO ACA VIENE LA AYUDA Q KIERO-.NECESITO Q NO SOLAMENTE ME HAGA ESO,,
SI NO Q AL NO ESCRIBIR BIEN EL CODIGO...LOS DATOS DEL FORM... NO LLEGUEN A ENVIARSE POR EL SUBMIT.....PORKE HE PROBADO Q AUN QLE CODIGO ESTE O NO CORRECTO..IGUAL LOS DATOS DEL FORM..LEGAN A MI EMAIL...Y NO DEBERIA SER ASI..
NECESITO Q POR LO MENOS REGRESE Y OBLIGUE AL USUARIO A PONER BIEN EL CODIGO O Q REFRESQUE LA PAG..PERO Q NO SE MANDEN LOS DATOS..
ESTE ES EL CODIGO:

PROTECCION GRAFICA:
<?
function generar_codigo($longitud=5) {
mt_srand((double)microtime()*1000000);
$codigo=md5(uniqid(mt_rand()));
$codigo=substr($codigo, 0, $longitud);
return $codigo;
}

// Iniciamos la sesión
session_start();

// Le damos un nombre
session_register('nombredelasesion');

// Seteamos la variable de sesión $_SESSION["cdg"]
// dándole un valor generado por la función
$_SESSION["cdg"]=generar_codigo();

?>

CODIGO.PHP


<?php // codigo.php
// Iniciamos la sesión
session_start();

// Le damos un nombre
session_register('nombredelasesion');

// Enviamos las cabeceras al navegador, para que
// sepa que el documento es una imagen
header("Content-type: image/png");

// a la variable $codigo le damos el
// valor del código generado
$codigo=$_SESSION["cdg"];

// Creamos la imagen
$imagen=ImageCreate(70, 30);

// Generamos el fondo gris
$fondo_gris=ImageColorAllocate($imagen, 207, 207, 207);

// Generamos el color de las letras (negro)
$letras_negras=ImageColorAllocate($imagen, 0, 0, 0);

// Rellenamos la imagen con fondo gris
ImageFill($imagen, 0, 0, $fondo_gris);

// Escribimos $codigo con letras negras
// de numero 5
ImageString($imagen, 5, 10, 10, $codigo, $letras_negras);

// Creamos la imagen *.png
ImagePng($imagen);
?>


FORMULARIO.PHP:
<?php include("proteccion_grafica.php");?>
<BODY>
<form action="mail.php" method="post" name="contact" onSubmit="return verifica(this);">
Insert the Code, please: <input name="codigo_seguridad" type="text" size="6"><img src="codigo.php">
</FORM>
</BODY>

MAIL.PHP:
<?php
session_start();

if (trim($_SESSION["cdg"]) != trim($_POST["codigo_seguridad"]))
{
echo "Error!, código de seguridad incorrecto.";
}
else{
echo "Codigo de seguridad correcto";
}
unset($_SESSION);
session_destroy();
?>


PLEASE COMO HAGO PA Q NO SOLO VALIDE Q EL CODIGO INGRESADO ES CORRECTO O NO..SI NO Q AL VALIDAR Q ES INCORRECTO NO MANDE LOS DATOS DEL FORM..
PORKE IGUAL ME LOS MANDA AL EMAIL..YO NECESITO QUE SI EOL CODIGO INGRESADO ES INCORRECTO Q VUELVA AL FORM HASTA Q EL USUARIO INGRESE EL CODIGO CORRECTO

DISCULPEN MI IGNORANCIA PERO SOY NUEVA EN ESTO
MUCHAS GRACIAS
  #5 (permalink)  
Antiguo 21/08/2006, 10:04
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 2 meses
Puntos: 3
Ponle un exit() donde se cumpla que estan mal los datos..
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #6 (permalink)  
Antiguo 21/08/2006, 10:08
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 2 meses
Puntos: 3
Y solo por comentario... tu codigo no iba a funcionar.. por que en los if y else validas y mandas imprimir.. cierto.. pero despues que hace eso... sigue viendo codigo.. y lo va ejecutando, ya que no esta dentro de las llaves..
Código PHP:
if( condicion)
{
//Aqui lo q quieres que se ejecute//
}
else{
//Lo que se ejecutaria, si es falso//

Saludos!
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #7 (permalink)  
Antiguo 21/08/2006, 10:33
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Valida por medio de Java Script

Mira si necesitas validar antes de que mande el formaulario, hazlo con JavaScript, haz lo siguiente:

En la misma linea donde se encuentra action=post, agrega otra instruccion Onsubmit=return validar();

Antes de donde este ubicado tu codigo del formulario haz la validacion en Java script entre head y /head:

script languaje=javascript

function validar()

{

if(this.form.campoavalidar=="")
{
alert("DIGITE CAMPOAVALIDAR");
this.form.campoavalidar.focus();
return false
}
if(......)
{
........
}
return true
}

Este tipo de validacion es para cuando hay campos vacios, pero de todas formas puedes hacer cualquier tipo de validacion con Java Script.

Este es un ejemplo basico de validacion, si ya quieres validar con DB, ya es mas extenso.
  #8 (permalink)  
Antiguo 21/08/2006, 10:46
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 2 meses
Puntos: 3
Cita:
Iniciado por Carxl Ver Mensaje

Este es un ejemplo basico de validacion, si ya quieres validar con DB, ya es mas extenso.
Simplemente con Javascript no se podria validar ni interactuar con bases de datos.
Y algo que vi en este foro es que es mejor las validaciones del lado del servidor.. y por otro lado, es mejor cargarle la mano al server.. que al navegador del cliente...asi se le hara mas liviana...aunque claro pues esas pequeñas validaciones no afectan nada al cliente.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #9 (permalink)  
Antiguo 21/08/2006, 11:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
De hecho lo mas asi "recomendable" es hacer las validaciones en JavaScript Y en el server, asi tienes un nivel mucho mayor de seguridad.

y para contestar tu otra "duda" si es posible que JavaScript interactue con bases de datos, usando la tecnica AJAX.
  #10 (permalink)  
Antiguo 21/08/2006, 11:46
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Las validaciones de Javascript no son por seguridad, sino para que no se tenga que recargar la página, y así evitar que el usuario tenga que llenar todos los datos de nuevo.
El Javascript siempre puede evitarse, y enviar el formulario igual, de hecho no deberías quitar la posibilidad de enviar información solo por no tener habilitado javascript...


Saludos.
  #11 (permalink)  
Antiguo 21/08/2006, 13:31
Avatar de devildriver  
Fecha de Ingreso: julio-2006
Mensajes: 118
Antigüedad: 17 años, 9 meses
Puntos: 0
Espero darte una idea

Saludos, yo soy un super novato en esto pero el problema que veo es que deberias validar que el codigo que has generado y que ha escrito en usuario sea valido dentro de FORMULARIO.PHP y no hacer la validacion en MAIL.PHP por que a mi entender al darle enviar sea o no valida la clave estas enviando a tu correo el formulario, utiliza una restriccion dentro del formulario.php y primero validas ahi si es correcto perfecto envias, para eso creo que te recomendarian usar javascript pero de verdad que yo no se mucho de esto. Saludos espero haberte sido de utilidad.
  #12 (permalink)  
Antiguo 21/08/2006, 14:02
Avatar de karandaleari  
Fecha de Ingreso: agosto-2006
Mensajes: 11
Antigüedad: 17 años, 8 meses
Puntos: 0
Gracias

Hola, gracias por la respuesta..la verdad si me habia percatado de eso...pero como no se mucho de php..ni de la sintaxis... no me atrevo a modificar algo..estoy investigando como podria hacerlo..porke se q debo hacerlo en el formulario... pero q sintaxis uso para q me lo valide como deseo??

Igual muchas graciassss

Necesito mas respuestas pleaseeeeee.
  #13 (permalink)  
Antiguo 21/08/2006, 16:39
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 2 meses
Puntos: 3
Cita:
Iniciado por GatorV Ver Mensaje
De hecho lo mas asi "recomendable" es hacer las validaciones en JavaScript Y en el server, asi tienes un nivel mucho mayor de seguridad.

y para contestar tu otra "duda" si es posible que JavaScript interactue con bases de datos, usando la tecnica AJAX.
Pues asi que Javascript interctue con BD... pues no.... en realidad quien esta haciendo la interaccion con la BD , es el lenguaje del servidor,.. ya sea PHP , ASP u otro....
Javascript no es el que esta interactuando directamente con la base de datos...
Por medio de DOM,JS, mandas llamar al server y dandole parametos (si se necesitan) y ya el server side hacer la interaccion..
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #14 (permalink)  
Antiguo 22/08/2006, 11:25
Avatar de devildriver  
Fecha de Ingreso: julio-2006
Mensajes: 118
Antigüedad: 17 años, 9 meses
Puntos: 0
revisa aqui te puede ser util

en este ejemplo el amigo valida si el campo esta vacio, en tu caso crea una variable y valida que la de la contaseña q tu suministras sea igual a la que el usuario escribio. Creo q te puede servir.



http://www.forosdelweb.com/f18/validar-antes-irse-otro-formulario-409117/
  #15 (permalink)  
Antiguo 22/08/2006, 11:58
 
Fecha de Ingreso: septiembre-2003
Ubicación: lima
Mensajes: 378
Antigüedad: 20 años, 7 meses
Puntos: 0
Cabe recordar que la validacion por javascript corres el riesgo de que algunos navegadores lo tengan desactivado y ahi si seria un gran problema. Es por eso que la validacion deberia de ser tambien por el lado del servidor por un tema de seguridad.

Saludos
  #16 (permalink)  
Antiguo 22/08/2006, 12:07
Avatar de karandaleari  
Fecha de Ingreso: agosto-2006
Mensajes: 11
Antigüedad: 17 años, 8 meses
Puntos: 0
holaa

Hola juanpro y como haces eso??
es que recien toy aprendiendo todo esto

gracias
  #17 (permalink)  
Antiguo 22/08/2006, 12:08
Avatar de karandaleari  
Fecha de Ingreso: agosto-2006
Mensajes: 11
Antigüedad: 17 años, 8 meses
Puntos: 0
De acuerdo Que Regrese Al Form



Chicos como estan??,,.,gracias por la ayuda todos uds..de verdad q me han ayudado un monton...
asi como dijo:
B** Ponle un exit() donde se cumpla que estan mal los datos..

<?php
session_start();

if (trim($_SESSION["cdg"]) != trim($_POST["codigo_seguridad"]))
{
echo "Error!, código de seguridad incorrecto.";
exit;
}
?>

asi lo hize y ya no me manda los datos cuando el codigo es erroneo..
pero me sale en una pagina en blanco un texto q dice que es un codigo erroneo...
mi pregunta es..no hay forma de que cuando sea incorrecto el codigo ingresado, regrese al form sin q se borren los datos anteriores??...la validacion del javascript para los campos en blanco tambien lo he hecho..me sale un mensaje...obligando al cliente a llenar el codigo en blanco...pero necesito q me salga algo parecido cuando el cliente ingrese un codigo erroneo..q no envie datos y q regrese al form...
please ayudenme...yo voy a seguir investigando..
GRACIAS
  #18 (permalink)  
Antiguo 22/08/2006, 12:39
 
Fecha de Ingreso: septiembre-2003
Ubicación: lima
Mensajes: 378
Antigüedad: 20 años, 7 meses
Puntos: 0
Utiliza la funcion header() para poder enviar el mensaje de error a tu formulario ejemplo:

if (empty($nombre)){
header("Location: formulario.php?error_mensaje=0");
exit();
}

En este ejemplo lo que hago es enviar un mensaje de error a mi pagina donde esta mi formulario. Este error_mensaje es una variable matriz que defino en mi pagina de formulario asi:

if (isset($_GET["error_mensaje"])){
$num_error[0]="Debe rellenar los datos requeridos";
}

y luego para q imprima hago esto:

$num_error[$error];

Luego para que los datos ingresados no pierda el valor despues de que se envio el error utilizamos sesiones:

***inicias una session***
<?
session_start();
?>

Luego en el value de tus campos agregas esto:

<? if (isset($_SESSION['nombre'])){ echo $_SESSION['nombre'];} ?>

y por ultimo en el otro lado de tu pagina haces esto:

session_start();
$_SESSION['nombre']=$_POST['nombre'];
$_SESSION['mail']=$_POST['mail'];


y por ultimo si tu proceso de realizo con exito destruyes la sesion

session_destroy()

Bueno espero te sirva en algo
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 14:21.