Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Login- Usando una Base de datos

Iniciado por Fredoshad, Septiembre 08, 2015, 12:55:30 AM

Tema anterior - Siguiente tema
¡Hola a toda la comunidad! Mi problema es el siguiente. He creado una base para almacenar datos, ahora bien resulta que probando varios métodos (todavía estoy practicando con esto) intenté que a modo de login que la base de datos envíe un 1 si existe el usuario y un 0 o error si existe varios. El problema es que al poner el IF() para hacer una comparación Unity no me lo lee como debería. Me gustaría saber si es que hay otro modo de hacer un tipo de comparación con WWW o si tengo que hacerlo de otra manera. Gracias por su tiempo.
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
 
public class login : MonoBehaviour {
        public string LoginPhpUrl =     "/*Aquí Va la pagina*/";
        public InputField       UsuarioInput;
        public InputField       PasswordInput;
        public Text             resultadoMostrado;
        public Text             MensajeEnvidadoCorrectamente;
 
        // Use this for initialization
        public void Recibir () {
                StartCoroutine ("recibedatos");
        }
        private IEnumerator recibedatos() {
                if(UsuarioInput.text != "" && PasswordInput.text != ""){
                        //Tuve problemas con el string, no puede ser declarado salvo aqui.
                        string LoginPhpUrlCompleta = LoginPhpUrl +"?"+ "nombre=" +  WWW.EscapeURL(UsuarioInput.text) + "&password=" +  WWW.EscapeURL(PasswordInput.text);
 
                       
                       
                WWW GetName = new WWW (LoginPhpUrlCompleta);
                       
                        yield return GetName;
                        Debug.Log (GetName.text);
/*Aquí tengo el problema no hace la comparación correctamente. El Debug.Log me manda o 0 o 1 o otro error pero si sale 1 Debería hacer el login y no lo hace*/
                        if (GetName.text.Equals("1")) {
                                Debug.Log ("Login");
                        } else {
                                Debug.Log("No existo");
                        }
                }
                       
                }
        }
 

El retorno de la url solo devuelve 0 o 1? Nada de formateo en xml o html?

Bueno, devuelve 0, 1. Y si está repetido da error (Tipo "hay repetidos"). Es que aún no he pulido el código. El problema es que hasta el Debug.Log me da 1. Me di cuenta que está en string y puse, 
if (GetName.text=="1") {}
pero aún así no detecta el 1. Incluso probé con letras. ¿Qué puedo tener mal? Es que un valor es un valor, hasta probé dándole un valor a otro y no funcionaba.

Septiembre 08, 2015, 04:14:19 PM #3 Ultima modificación: Septiembre 08, 2015, 06:49:40 PM por Edgargaza
[quote author=Fredoshad date=1441677615" data-ipsquote="" data-cite="Fredoshad">  Bueno, devuelve 0, 1. Y si está repetido da error (Tipo "hay repetidos"). Es que aún no he pulido el código. El problema es que hasta el Debug.Log me da 1. Me di cuenta que está en string y puse, 
if (GetName.text=="1") {}
pero aún así no detecta el 1. Incluso probé con letras. ¿Qué puedo tener mal? Es que un valor es un valor, hasta probé dándole un valor a otro y no funcionaba.[/quote]Voy a intentar hacerlo yo, y si lo consigo, te paso códigoEDITO:
Vale, creo que lo estás haciendo mal. Ya hice un sistema de login y registro vía Unity -> PHPFile -> Mysql y retorno. Lo que debes hacer es lo siguiente:• Login.cs:
 
private string loginWebURL = MAIN_URL + "login_suburl.php";

public string username = "Username"; // Nombre de usuario
public string password = "Password"; // Contraseña del usuario

public void Start() {
   StartCoroutine (login());
}

public IEnumerator login() {
   WWWForm webForm = new WWWForm ();

   webForm.AddField ("username", username);
   webForm.AddField ("password", password);

   WWW web = new WWW (loginWebURL, webForm);

   yield return web;
   string result = web.text;

   if(result.Equals("1")) {
      Debug.Log ("Login satisfactorio!");
   } else {
      Debug.Log ("No existo (jajajaja)");
   }
}
}
Te explico:
- MAIN_URL es la constante de tu página web, la página principal
- loginWebURL es el apartado del login de tu página web, donde se encuentra el archivo php
- webForm.AddField(a,b): 'a' es el nombre del textfield que contendrá la información dentro del archivo php; 'b' es la variable que se le asigna a ese textfield. En el archivo php, en este caso, la variable sería, por ejemplo, $user = $_POST["username"]. Entonces, al hacer la llamada, el username asignado en la clase (en este caso, "Username") será asignado a la variable en el archivo php $user. Lo mismo ocurre con la contraseñaEspero que se solucione con esto... Pruébalo y me cuentas

Etiquetas: