Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/06/2010, 14:58
dudoso2
 
Fecha de Ingreso: junio-2010
Mensajes: 10
Antigüedad: 13 años, 10 meses
Puntos: 0
Ayuda con formulario de registro

Hola a todos, a ver si me podeis ayudar porque he intentado de todo y no se me ocurre como solucionarlo o al menos apañarlo.

Bien lo primero los antecedentes para dejar todo claro...

Mi web no carga las paginas directamente, sino que tiene un index principal y por medio de la funcion onclick='loadcont();' cargo el contenido de las paginas en un div central, quedando un efecto muy apañado, que realiza un efecto de difuminacion entre paginas unicamente en ese div central, en vez de recargar la web desde el principio...

Bien el caso es que esto me funciona con todas mis paginas sin problemas a excepcion de la pagina de registro de usuarios.
Si cargo la pagina de registro directamente saltandome el index la pagina funciona perfectamente, conecta con la BD y registra los campos sin ningun tipo de problema...
La complicacion me viene precisamente en el index debido a esa caracteristica de carga en el div central. Al cargar la pagina de registro y rellenar los datos teoricamente la web te devuelve una pagina en la que se da un mensaje (de exito, o de error si hay algun fallo), pero el div no me carga esa pagina correctamente y me carga el contenido inicial por defecto (no se si me he explicado correctamente xD)

Creo que el problema se podria solucionar si en vez de recargar una pagina con el mensaje correcto, ese mensaje apareciese debajo del formulario por ejemplo, pero no doy con la manera de hacer algo asi (o cualquier otra solucion valida)

El codigo del form es el siguiente para que veais como trabaja (siento que algunas partes de los comentarios esten en portugues)

Código:
<?
include ("../include/config.php");
if($_POST['act']=="Aceptar") {

$id = htmlspecialchars($_POST['id']);
$senha = htmlspecialchars($_POST['senha']);
$senha2 = htmlspecialchars($_POST['senha2']);
$senhap = htmlspecialchars($_POST['senhap']);
$senhap2 = htmlspecialchars($_POST['senhap2']);
$nome = htmlspecialchars($_POST['nome']);
$email = htmlspecialchars($_POST['email']);
$dias = htmlspecialchars($_POST['dias']);
$meses = htmlspecialchars($_POST['meses']);
$anos = htmlspecialchars($_POST['anos']);
$pergunta = htmlspecialchars($_POST['pergunta']);
$resposta = htmlspecialchars($_POST['resposta']);

$id = strip_tags($id);
$senha = strip_tags($senha);
$senha2 = strip_tags($senha2);
$senhap = strip_tags($senhap);
$senhap2 = strip_tags($senhap2);
$nome = strip_tags($nome);
$email = strip_tags($email);
$dias = strip_tags($dias);
$meses = strip_tags($meses);
$anos = strip_tags($anos);
$pergunta = strip_tags($pergunta);
$resposta = strip_tags($resposta);

function anti_injection($string){

  $string = str_ireplace(" or ", "", $string);
  $string = str_ireplace("select ", "", $string);
  $string = str_ireplace("delete ", "", $string);
  $string = str_ireplace("create ", "", $string);
  $string = str_replace("#", "", $string);
  $string = str_replace("=", "", $string);
  $string = str_replace("--", "", $string);
  $string = str_replace(";", "", $string);
  $string = str_replace("*", "", $string);
  $string = trim($string);
  $string = strip_tags($string);
  $string = addslashes($string);

  return $string;
}

//aqui eu pego todos os dados vindos do form
//e tratos todos de uma vez e já cria as variaveis correspondentes
foreach ($_POST as $campo => $valor) {
   $$campo = anti_injection ($valor);
}


//Verifica se já existe ID
$selec = "SELECT * FROM account_data WHERE name='".$id."'";
$selec2 = "SELECT * FROM personal_data WHERE email='".$email."'";
$exec = mysql_query($selec, $conecta) or die(mysql_error());
$exec2 = mysql_query($selec2, $conecta) or die(mysql_error());
$total = mysql_num_rows($exec);
$total2 = mysql_num_rows($exec2);

if($total>="1") {
echo "<center><p><br><p><font color=red>El usuario $id ya esta registrado, por favor escoge otro nombre de usuario.</font>";
echo "<meta HTTP-EQUIV='Refresh' CONTENT='3;URL=registro3.php'>";
} else {

//vericifa se o email já existe
if($total2>="1") {
echo "<center><p><br><p><font color=red>El email $email ya existe en nuestra BD, por favor escoge otro email.</font>";
echo "<meta HTTP-EQUIV='Refresh' CONTENT='3;URL=registro3.php'>";
} else {

if(empty($id) || empty($senha) || empty($senha2) || empty($nome) || empty($email) || empty($dias) || empty($meses) || empty($anos) || empty($pergunta) || empty($resposta)) {
echo "<center><p><br><p><font color=red>Todos los campos son Obligatorios, por favor rellenalos correctamente.</font>";
echo "<meta HTTP-EQUIV='Refresh' CONTENT='3;URL=registro3.php'>";
} else {
//Pegando IP
$ip = $_SERVER["REMOTE_ADDR"];

//Criptando senha
$senhasha = sha1($senha, true);
$senhacript = base64_encode($senhasha);

  //Tabela Registro Game
  $qry = "INSERT INTO account_data (name, password,last_ip) VALUES ('$id','$senhacript','$ip')" or die("Erro em $qry");
  $exe = mysql_query($qry, $conecta) or print(mysql_error());

  $data_registro = date("Y-m-d H:i:s");
  $nascimento = "$anos-$meses-$dias";
  //Tabela de Dados Personalizados
  $qryp = "INSERT INTO personal_data (acc_id,name,email,data_register,birth,pergunta,resposta)
  VALUES ('$id','$nome','$email','$data_registro','$nascimento','$pergunta','$resposta')" or die("Erro em $qry");
  $exep = mysql_query($qryp, $conecta) or print(mysql_error());

echo "Tu cuenta ha sido registrada con exito. Que disfrutes en el juego!";

} }}
} else {
?>
Como veis en el codigo inicial que es el que me importa (lo siguiente es el form propiamente dicho que he obviado porque es tonteria) el script comprueba por ejemplo que el nombre de usuario no esta registrado, y si lo esta devuelve el error por medio de un echo y la frase...
AHi es donde esta el problema, esa frase la recarga en una nueva pagina y entonces el div me da el error, hay alguna forma de que eso lo haga en la propia pagina y asi que no tenga que recargar nada?