Comunidad de diseño web y desarrollo en internet online

Ayuda con registro en Flash+php+MySQL

Citar            
MensajeEscrito el 05 Ene 2009 08:55 pm
Feliz Años a todos los que pertenecen a la Comunidad de Cristalab. Me encuentro aca haciendo una pregunta, debido a un problema no he podido resolver; estuve creando un sistema para que los usuarios se registres desde flash a mi sistema de usuarios, dicho tutorial esta aca Link . Al ejecutar este archivo me dice que ingreso el usuario perfectamente pero al ver lo usuarios nunca ingresa nada a la base de datos. No se donde esta el Error, espero me ayuden.

Aca dejo los codigos

registrar.php

Código :

<?php
include('conexion.php'); //conectamos con la base de datos
$link = Conectarse();
function quitar($mensaje) //elimina símbolos indeseados
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}
//comprobamos con esta función que la dirección de email escrita es correcta
function comprobar_email($email){
$mail_correcto = 0;
//Hacemos una primera comprobación
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") &&
(substr($email,strlen($email)-1,1) != "@")){
if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) &&
(!strstr($email," "))) {
//miro si tiene caracter .
if (substr_count($email,".")>= 1){
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
//compruebo que lo de antes del dominio sea correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}}}}}
if ($mail_correcto)
return 1; //mail correcto
else
return 0; //mail incorrecto
}
$comp_email = quitar($HTTP_POST_VARS["mailL"]);
$i = comprobar_email($comp_email); //llamamos a la función
if ($i != 0) //si la dirección de email es correcta...
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["usuL"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "&estatus=ocupado&"; //nick ocupado
}
else
{
//insertamos los datos en nuestra base de datos
$sql = "INSERT INTO usuarios (nick, contrasena, email, nombre, ciudad, pais) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["usuL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["passL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["mailL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["nombreL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["ciudadL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["paisL"])."'";
$sql .= ")";
mysql_query($sql);
echo "&estatus=ok&"; //registro exitoso
}
mysql_free_result($result);
mysql_close();
}
else
{
echo "&estatus=nomail&"; //mail incorrecto
}
?>


registrar.fla

Código :

Stage.showMenu=false;


enviar = function ()
{
if (usu.text.length) //comprobamos que el nombre de usuario no este vacío
{
if (pass.text.length) //Comprobamos que la contraseña no este vacía
{
if (mail.text.length) //Comprobamos que la dirección de e-mail no este vacía
{
//Preparamos las variables que enviaremos al php
form_lv = new LoadVars();
form_lv.usuL = usu.text;
form_lv.passL = pass.text;
form_lv.mailL = mail.text;
form_lv.nombreL = nombre.text;
form_lv.ciudadL = ciudad.text;
form_lv.edadL = pais.text;
proces.text = "procesando datos...";
//Enviamos las variables a registrar.php
form_lv.sendAndLoad("http://www.enmaracay.net/registrar2.php", form_lv, "POST"); //escribe URL real de
registrar.php
//Recibimos y manejamos las variables que vienen de registrar.php
form_lv.onLoad = function()
{
if (this.estatus == "ocupado")
{
proces.text = "";
usu.text = "";
gotoAndStop(20); //Alerta: Nick ocupado
}
if (this.estatus == "nomail") {
proces.text = "";
mail.text = "";
gotoAndStop(25); //Alerta: e-mail icorrecto
}
if (this.estatus == "ok") {
proces.text = "Registrado con exito!";
usuvar = usu.text;
mailvar = mail.text;
nombrevar = nombre.text;
ciudadvar = ciudad.text;
edadvar = edad.text;
usu.text = "";
mail.text = "";
nombre.text = "";
ciudad.text = "";
edad.text = "";
gotoAndStop(35); //Ingreso exitoso
}
if (this.estatus != "ocupado" && this.estatus!= "nomail" && this.estatus!= "ok")
{
proces.text = "";
gotoAndStop(30); //Alerta: problemas con el servidor
}
};
}
else
//Alertas de campos vacíos
{
gotoAndStop(5); //campo mail vacío
}}
else
{
gotoAndStop(10); //campo contraseña vacío
}}
else
{
gotoAndStop(15); //campo nombre de usuario vacío
}
};
enviar_btn.onRelease = enviar;
stop();


conexion.php

Código :

<? // Fichero con los datos de conexión a la BBDD
function Conectarse()
{
$db_host="localhost"; // Host al que conectar, habitualmente es el ‘localhost’
$db_nombre="enmaracay_usuarios"; // Nombre de la Base de Datos que se desea utilizar
$db_user="miusuario"; // Nombre del usuario con permisos para acceder
$db_pass="mipass"; // Contraseña de dicho usuario
// Ahora estamos realizando una conexión y la llamamos ‘$link’
$link=mysql_connect($db_host, $db_user, $db_pass) or die ("Error conectando a la base de datos.");
// Seleccionamos la base de datos que nos interesa
mysql_select_db($db_nombre ,$link) or die("Error seleccionando la base de datos.");
// Devolvemos $link porque nos hará falta más adelante, cuando queramos hacer consultas.
return $link;
}
?>



Muchas Gracias a Todos y Saludos.... Sin Escalera no se Llega al Cielo
[BOFH]Links corregidos para que no deforme el foro[/BOFH]

Por JoseAlejandro_Realza

63 de clabLevel



Genero:Masculino  

Incursionista de Tecnologias

msie7
Citar            
MensajeEscrito el 06 Ene 2009 11:47 am
Posiblemente falle el insert, agrega algún debug, por ejemplo:

$result = mysql_query($sql);
if(mysql_error($link)) echo "&estatus=Error&query=$sql";
else echo "&estatus=ok&"; //registro exitoso

Si te muestra error, entonces muestra la variable query y ejecútala directamente sobre la base de datos (con phpMyAdmin o lo que uses para manejar tu db) para ver el error

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Ene 2009 04:43 pm
mm dejame provar, aunque estuve leyendo que el $HTTP_POST_VARS es para los servidores que tengan Php 4 o inferior, y el mio tiene php 5 asi que seria $_POST segun tengo entendido

Por JoseAlejandro_Realza

63 de clabLevel



Genero:Masculino  

Incursionista de Tecnologias

opera
Citar            
MensajeEscrito el 06 Ene 2009 05:16 pm
Correcto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Ene 2009 05:46 pm
mi pregunta es si debo colocarlo de esta forma

$sql = "INSERT INTO usuarios (nick, contrasena, email, nombre, ciudad, pais) VALUES (";
$sql .= "'".quitar($_POST["usuL"])."'";
$sql .= ",'".quitar($_POST["passL"])."'";
$sql .= ",'".quitar($_POST["mailL"])."'";
$sql .= ",'".quitar($_POST["nombreL"])."'";
$sql .= ",'".quitar($_POST["ciudadL"])."'";
$sql .= ",'".quitar($_POST["paisL"])."'";
$sql .= ")";
$result = mysql_query($sql);
if(mysql_error($link)) echo "&estatus=Error&query=$sql";
else echo "&estatus=ok&"; //registro exitoso
}

o de esta forma

$sql = "INSERT INTO usuarios (nick, contrasena, email, nombre, ciudad, pais) VALUES (";
$sql .= $_POST["usuL"];
$sql .= $_POST["passL"];
$sql .= ($_POST["mailL"];
$sql .= ($_POST["nombreL"];
$sql .= $_POST["ciudadL"];
$sql .= ($_POST["paisL"];
$sql .= ")";
$result = mysql_query($sql);
if(mysql_error($link)) echo "&estatus=Error&query=$sql";
else echo "&estatus=ok&"; //registro exitoso
}

Por JoseAlejandro_Realza

63 de clabLevel



Genero:Masculino  

Incursionista de Tecnologias

opera
Citar            
MensajeEscrito el 06 Ene 2009 05:48 pm
Donde dice:

$HTTP_POST_VARS

Pon

$_POST

El resto exactamente igual

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Ene 2009 05:58 pm
pero aun sigue sin ingresar nada y lo coloque de esa forma:


include('conexion.php'); //conectamos con la base de datos
$link = Conectarse();
function quitar($mensaje) //elimina símbolos indeseados
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}
//comprobamos con esta función que la dirección de email escrita es correcta
function comprobar_email($email){
$mail_correcto = 0;
//Hacemos una primera comprobación
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") &&
(substr($email,strlen($email)-1,1) != "@")){
if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) &&
(!strstr($email," "))) {
//miro si tiene caracter .
if (substr_count($email,".")>= 1){
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
//compruebo que lo de antes del dominio sea correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}}}}}
if ($mail_correcto)
return 1; //mail correcto
else
return 0; //mail incorrecto
}
$comp_email = quitar($HTTP_POST_VARS["mailL"]);
$i = comprobar_email($comp_email); //llamamos a la función
if ($i != 0) //si la dirección de email es correcta...
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["usuL"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "&estatus=ocupado&"; //nick ocupado
}
else
{
//insertamos los datos en nuestra base de datos
$sql = "INSERT INTO usuarios (nick, contrasena, email, nombre, ciudad, pais) VALUES (";
$sql .= "'".quitar($_POST["usuL"])."'";
$sql .= ",'".quitar($_POST["passL"])."'";
$sql .= ",'".quitar($_POST["mailL"])."'";
$sql .= ",'".quitar($_POST["nombreL"])."'";
$sql .= ",'".quitar($_POST["ciudadL"])."'";
$sql .= ",'".quitar($_POST["paisL"])."'";
$sql .= ")";
$result = mysql_query($sql);
if(mysql_error($link)) echo "&estatus=Error&query=$sql";
else echo "&estatus=ok&"; //registro exitoso
}
mysql_free_result($result);
mysql_close();
}
else
{
echo "&estatus=nomail&"; //mail incorrecto
}
?>

Por JoseAlejandro_Realza

63 de clabLevel



Genero:Masculino  

Incursionista de Tecnologias

opera
Citar            
MensajeEscrito el 06 Ene 2009 06:05 pm
Por eso te sugerí que imprimieras el SQL, usar HTTP_POST_VARS o POST da igual (versión 5 soporta la anterior sintaxis) pero queda mas prolijo. Vuelve a mi consejo anterior.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Ene 2009 06:58 pm
Perfecto hermano, ya coloque el codigo que me sugeristes, modigique el

$sql .= ")";
mysql_query($sql);
echo "&estatus=ok&"; //registro exitoso
}
por el codigo :

$result = mysql_query($sql);
if(mysql_error($link)) echo "&estatus=Error&query=$sql";
else echo "&estatus=ok&"; //registro exitoso
}
y aun asi no introdujo los datos a la base de datos

Por JoseAlejandro_Realza

63 de clabLevel



Genero:Masculino  

Incursionista de Tecnologias

msie7
Citar            
MensajeEscrito el 06 Ene 2009 07:11 pm
Bien, dejemos de lado la magia e intentemos entender que es lo que hemos hecho.

Si hay un error, el estatus va a ser Error y me devuelve una segunda variable que se llama query, la cual tienes que mostrar en algún campo de texto (que luego borras cuando termines de desarrollar), copias, pegas en phpMyAdmin y ejecutas para ver que error te da

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Ene 2009 06:41 pm
Bueno Muchas gracias Jorge porque me ayudastes mucho, se le agradece. Ya consegui el error que tenia, el codigo estaba perfecto, solo estar unos error de syntax, tenia que cerrar las funciones con 4 }, y yo los habia puesto seguidos, aca coloco el codigo perfecto, para ayudar a otros con el mismo problema al mio.

Código :

<?php
include('conexion.php'); //conectamos con la base de datos
$link = Conectarse();
function quitar($mensaje) //elimina símbolos indeseados
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}
//comprobamos con esta función que la dirección de email escrita es correcta
function comprobar_email($email){
$mail_correcto = 0;
//Hacemos una primera comprobación
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") &&
(substr($email,strlen($email)-1,1) != "@")){
if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) &&
(!strstr($email," "))) {
//miro si tiene caracter .
if (substr_count($email,".")>= 1){
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
//compruebo que lo de antes del dominio sea correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}
}
}
}
}
if ($mail_correcto)
return 1; //mail correcto
else
return 0; //mail incorrecto
}
$comp_email = quitar($HTTP_POST_VARS["mailL"]);
$i = comprobar_email($comp_email); //llamamos a la función
if ($i != 0) //si la dirección de email es correcta...
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["usuL"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "&estatus=ocupado&"; //nick ocupado
}
else
{
//insertamos los datos en nuestra base de datos
$sql = "INSERT INTO usuarios (nick, contrasena, email, nombre, avatar, pais) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["usuL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["passL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["mailL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["nombreL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["ciudadL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["edadL"])."'";
$sql .= ")";
mysql_query($sql);
echo "&estatus=ok&"; //registro exitoso
}
mysql_free_result($result);
mysql_close();
}
else
{
echo "&estatus=nomail&"; //mail incorrecto
}
?>


Saludos Freddy

Por JoseAlejandro_Realza

63 de clabLevel



Genero:Masculino  

Incursionista de Tecnologias

opera
Citar            
MensajeEscrito el 17 Feb 2009 03:45 pm
Bueno, yo no creo q lo ajax podido solucionar de esa forma,

yo te recomiendo quitar la funcion conectarse de archivo conexion.php
asi te quedaria:
<?
$db_host="localhost";
$db_nombre="enmaracay_usuarios";
$db_user="miusuario";
$db_pass="mipass";
//tambien puedes cambiar estas dos lineas si quieres un mensaje de error estandar
$link = mysql_pconnect($hostname_conn, $username_conn, $password_conn) or trigger_error
(mysql_error(),E_USER_ERROR);
?>

en los demas archivos .php
----llamas la conxion asi:
require_once('.php');
en mysql_query($sqel, $link);
----recuerda borrar
include('conexion.php');
$link = Conectarse();

espero les funcione.

Por dievez

8 de clabLevel



 

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.