Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by kmccmk9 · Jul 25, 2012 at 09:15 PM · c#ifreturnfalse

My if statement won't work

Hello, my if statement won't work. It won't check the if statement. The problem is occurring in the function WhichWindow. Why won't it check the if statement? It always returns false.

 using UnityEngine;
 using System.Collections;
 
 public class Login : MonoBehaviour {
 
  public Texture LoginBackground;
  public Texture2D stylebackground;
  public GUIStyle LoginStyle;
  public GUIStyle LoginTextBox;
  public GUIStyle LoginButton;
  public string Username;
  public string Password;
  public float transparent;
  private string url;
  public WWW w;
  public WWWForm loginform;
  public bool doWindow0 = false;
  public string formText;
  // Use this for initialization
  void Start () {
  LoginStyle.fontSize = 72;
  LoginStyle.alignment = TextAnchor.MiddleCenter;
  LoginTextBox.fontSize = 20;
  LoginTextBox.alignment = TextAnchor.MiddleCenter;
  LoginTextBox.normal.background = stylebackground;
  LoginButton.fontSize = 30;
  LoginButton.alignment = TextAnchor.MiddleCenter;
  loginform = new WWWForm();
  }
  
  // Update is called once per frame
  void Update () {
  
  }
  
  void OnGUI() {
  GUI.backgroundColor = Color.black;
  GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),LoginBackground,ScaleMode.StretchToFill, false, 0.0f);
  GUI.Label(new Rect(Screen.width/2-250,Screen.height/2-250,500,250),"Username:", LoginStyle);
  Username = GUI.TextField(new Rect(Screen.width/2-250,Screen.height/2-80,500,50), Username, 10, LoginTextBox);
  GUI.Label(new Rect(Screen.width/2-250,Screen.height/2-50,500,250),"Password:", LoginStyle);
  Password = GUI.TextField(new Rect(Screen.width/2-250,Screen.height/2+120,500,50), Password, 10, LoginTextBox);
  if (GUI.Button(new Rect(Screen.width/2-150,Screen.height/2+200,300,50),"Login:", LoginButton))
  {
  //CheckLogin();
  StartCoroutine(CheckLogin());
  print(WhichWindow(formText));
  }
  if (doWindow0 == true)
  {
  GUI.Window (0, new Rect (Screen.width/2-700,Screen.height/2-100,400,120), DoMyWindow, "Notice:");
  }
 
  }
  
  void DoMyWindow (int windowID) {
  GUI.Label(new Rect (10, 20, 800, 40), formText);
  if (GUI.Button (new Rect (10,80,100,20), "Close"))
  {
  Application.LoadLevel("CharacterSelect");
  doWindow0 = false;
  }
  }
  
  IEnumerator CheckLogin()
  {
  url = "http://redlightlife.tk/scripts/checklogin.php?username=" + WWW.EscapeURL(Username) + "&password=" + WWW.EscapeURL(Password);
  w = new WWW(url);
  yield return w;
  if (w.error != null)
  {
  print(w.error);
  }
  if (w.error == null)
  {
  formText = w.text;
  w.Dispose();
  print(formText);
  StopAllCoroutines();
  }
  }
  bool WhichWindow (string text)
  {
  print("WhichWindow function started");
  print(text);
  if (text == "Login success. Click the close button to continue to the character selection screen.")
  {
  return true;
  }
  else 
  {
  return false;
  }
  }
 }
Comment
Add comment · Show 9
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Seth-Bergman · Jul 25, 2012 at 09:27 PM 0
Share

Apparently the string in formText is not exactly equal to "Login success. Click the close button to continue to the character selection screen."

avatar image kmccmk9 · Jul 25, 2012 at 09:28 PM 0
Share

I don't see how it's not though. I copied it directly from the php echo line as well as printed formText to make sure it matches.

avatar image Brian Stone · Jul 25, 2012 at 09:34 PM 1
Share

You can't escape the obvious. If it never enters the IF block, then obviously the boolean expression isn't resolving to true.

Even if the strings look the same, that doesn't mean that they are identical data sequences. There may be extra white spaces in the text, or different character codes that use similar-looking glyphs. You should exa$$anonymous$$e the raw string data and check both strings side-by-side, and I'll bet the difference will reveal itself immediately.

avatar image Brian Stone · Jul 26, 2012 at 12:05 AM 1
Share

I coded a simple function that will compare both strings and show the difference between them.

I tested it on your checklogin.php script and discovered the "Login or password can not be empty." message has an extra white space before and after the string that gets downloaded, even though it is printed without white spaces in the HT$$anonymous$$L on the web page. Chances are that's your only problem, you just have to trim the white spaces out (i.e. text.Trim()).

     static private bool VerifyStrings(string a, string b)
     {
         // <BOS> Begining of String
         // <EOS> End of String
         // These tags will make it possible to see invisible white spaces at the beginning and end of the strings.

         for (int i = 0; i < a.Length && i < b.Length; i++)
         {
             if (a[i] != b[i])
             {
                 string carrot = new string(' ', i + 5) + "^";
                 Debug.Log("<BOS>" + a + "<EOS>\n" + "<BOS>" + b + "<EOS>\n" + carrot + " $$anonymous$$ismatch!");
                 return false;
             }
         }

         if (a.Length != b.Length)
         {
             string carrot = new string(' ', $$anonymous$$ath.$$anonymous$$in(a.Length, b.Length) + 5) + "^";
             Debug.Log("<BOS>" + a + "<EOS>\n" + "<BOS>" + b + "<EOS>\n" + carrot + " $$anonymous$$ismatch!");
             return false;
         }

         Debug.Log("<BOS>" + a + "<EOS>\n" + "<BOS>" + b + "<EOS>\n" + "Strings are identical!");
         return true;
     }
avatar image yoyo · Aug 01, 2012 at 08:37 AM 1
Share

You could use if (a.Trim() == b.Trim()) if you're worried about leading and trailing spaces. Alternatively, if (a.Contains("Success")) might be more robust to changes in the output of the php.

Show more comments

1 Reply

· Add your reply
  • Sort: 
avatar image
1

Answer by Akill · Aug 01, 2012 at 11:24 AM

Apart from the fact you should use .Equals() method when comparing equality of strings, and not ==, I can just re-iterate what other people have said.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

9 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

if a string has certain letter(s) or number(s) 2 Answers

If statement not working correctly. 3 Answers

if function broken? 3 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges