C#+mysql логин, рега, вывод и изменение переменной

Научился сам? Помоги начинающему.

C#+mysql логин, рега, вывод и изменение переменной

Сообщение shmel 04 янв 2015, 12:10

Добрый день товарищи! Благодаря этому форуму немного научился работать с базой данных(MySQL) при помощи unity, и создам тему, чтобы самому немного разобрать, и может еще кому-то поможет:
Я использовал Denwer и создал базу 123123, логин 123123 и пароль 123123, в ней создал таблицу users с такими значениями:
Синтаксис:
Используется javascript
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(64) NOT NULL,
  `name` varchar(64) NOT NULL,
  `pass` varchar(64) NOT NULL,
  `money` int(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=41 ;
 

Далее создаем файлы .php (у меня находятся на test1.ru, т.к. denwer) для работы с БД:
register.php - Здесь мы будем вносить в таблицу нового пользователя
Синтаксис:
Используется javascript
<?PHP
$user = $_POST['user'];
$name = $_POST['name'];
$pass = $_POST['pass'];
$money = $_POST['money'];
$con = mysql_connect("localhost","123123","123123") or ("Cannot connect!"  . mysql_error());
if (!$con)
         die('Could not connect: ' . mysql_error());
         
mysql_select_db("123123" , $con) or die ("could not load the database" . mysql_error());

$check = mysql_query("SELECT * FROM users WHERE `user`='".$user."'");
$numrows = mysql_num_rows($check);
if ($numrows == 0)
{
         $pass = md5($pass);
         $ins = mysql_query("INSERT INTO  `users` (  `id` ,  `user` ,  `name` ,  `pass` ) VALUES ('' ,  '".$user."' ,  '".$name."' ,  '".$pass."') ; ");
         if ($ins)
                 die ("Вы успешно создали нового персонажа!");
         else
                 die ("Error: " . mysql_error());
}
else
{
         die("Имя персонажа уже используется!");
}


?>
 

display.php - не успел переименовать, можно запутаться, это у нас проверка пользователя на логин и пароль. тут принцип такой, если вывели ok то проверка прошла, смотрим далее
Синтаксис:
Используется javascript
<?
//данные о хосте, пользователе и базе данных
$host = 'localhost';
$users = '123123';
$passw = '123123';
$dbname = '123123';

// подключаемся и выбираем бд, которую указали выше
if(!mysql_connect($host,$users,$passw))
  die('Не удалось подключиться к серверу MySql!');
elseif(!mysql_select_db($dbname))
  die('Не удалось выбрать БД!');

$pass = $_POST[pass];
$user = $_POST[user];
 $pass = md5($pass);
$check = mysql_query("SELECT * FROM users WHERE `user`='".$user."'");
$numrows = mysql_num_rows($check);
if ($numrows == 0)
{

die ("Неправильный логин или пароль \n");
}


else
{
         while($row = mysql_fetch_assoc($check))
         {
                 if ($pass == $row['pass'])
{

                      die("ok");
                exit;
}
                 else
                         die("Неправильный логин или пароль \n");
         }
}
if(pass != '' && user != ''){
mysql_query("SET NAMES utf8");
//Выбираем, то что прописано в базе
$query = "SELECT `money` FROM `users` WHERE user='$user' AND pass='$pass'";
$res = mysql_query($query);
$userinfo=mysql_fetch_array($res);
$money= ''.$userinfo["money"].'';
//echo "$money";
//echo "ok";

}
?>
 


display2.php - выводим переменную money на экран
Синтаксис:
Используется javascript
<?
//данные о хосте, пользователе и базе данных
$host = 'localhost';
$users = '123123';
$passw = '123123';
$dbname = '123123';

// подключаемся и выбираем бд, которую указали выше
if(!mysql_connect($host,$users,$passw))
  die('Не удалось подключиться к серверу MySql!');
elseif(!mysql_select_db($dbname))
  die('Не удалось выбрать БД!');

$pass = $_POST[pass];
$user = $_POST[user];
 $pass = md5($pass);

if(pass != '' && user != ''){
mysql_query("SET NAMES utf8");
//Выбираем, то что прописано в базе
$query = "SELECT `money` FROM `users` WHERE user='$user' AND pass='$pass'";
$res = mysql_query($query);
$userinfo=mysql_fetch_array($res);
$money= ''.$userinfo["money"].'';
echo "$money";
//echo "ok";
}
?>
 

savemoney.php - последний файл .php с сохранением изменений переменной money
Синтаксис:
Используется javascript
<?
//данные о хосте, пользователе и базе данных
$host = 'localhost';
$users = '123123';
$passw = '123123';
$dbname = '123123';

// подключаемся и выбираем бд, которую указали выше
if(!mysql_connect($host,$users,$passw))
  die('Не удалось подключиться к серверу MySql!');
elseif(!mysql_select_db($dbname))
  die('Не удалось выбрать БД!');
$mon = $_POST[mon];
$pass = $_POST[pass];
$user = $_POST[user];
if(pass != '' && user != ''){
$pass = md5($pass);
         $result = mysql_query ("UPDATE users SET money='$mon' WHERE user='$user'");
$mon= ''.$userinfo["money"].'';
if ($result == 'true')

{
echo "Информация в базе обновлена успешно!";
}

else

{
echo "Информация в базе не обновлена!";
}
}

?>
 

Теперь отправимся в unity, делал я на C# mysqlconnect.cs
Синтаксис:
Используется csharp
using UnityEngine;
using System;
using System.Collections;
using System.Text;
public class mysqlconnect : MonoBehaviour {
        public string url ="http://test1.ru/display2.php";
        public string savemoney="http://www.test1.ru/savemoney.php";//
        public string pass ;
        public string user;
        public static string name = "";
        private string rePass = "", message = "";
        public string money;
        public int mon;
        private string secretKey = "mySecretKey";
        public bool doWindowlog = true;
        public bool doWindowreg = false;



        void Start () {
                        }
        void DoWindowlog(int windowID) {       
                if (message != "")
                        GUILayout.Box(message);
                GUILayout.Label ("Логин:");
                user = GUILayout.TextField (user);
                GUILayout.Label ("Пароль:");
                pass = GUILayout.PasswordField (pass, "*" [0]);
               
               
                GUILayout.BeginHorizontal ();
                if (GUILayout.Button("Войти"))
                {
                        message = "";
                       
                        if (user == "" || pass == "")
                                message += "Введите верные данные \n";
                        else
                        {
                                WWWForm form = new WWWForm();
                                form.AddField("user", user);
                                form.AddField("pass", pass);
                                form.AddField("money", money);
                                WWW w = new WWW("http://test1.ru/display.php", form);
                                StartCoroutine(login(w));
                                StartCoroutine(Wait());
                        }
                }
               
                if (GUILayout.Button ("Регистрация")) {
                        doWindowreg = true;
                        doWindowlog = false;
                }
                GUILayout.EndHorizontal();
                //GUILayout.EndHorizontal();
        }





        public IEnumerator  Wait() {
                yield return new WaitForSeconds(1);
                if (pass != "" && user != "") {
                        var form = new WWWForm();
                        form.AddField("pass", pass);
                        form.AddField("user", user);
                        //ОТПРАВЛЯЕМ ЗАПРОС
                        var w = new WWW(url, form);
                        yield return w;
                        ///ПОЛУЧАЕМ и разбиваем ОТВЕТ
                        string otvet = w.text;
                        string[] userinfo = otvet.Split(new string[] { ";" },
                        StringSplitOptions.None);
                        money = userinfo[0];
                        if (int.TryParse(money, out mon)) // or float.TryParse, or double.TryParse etc
                        {
                                Debug.Log("The value is " + mon);      
                        }
                        else   
                        {
                                Debug.Log("Not a valid integer");
                        }
                }else{
                        print("Поля:Логин или Пароль - пустые");
                }
        }

        void DoWindowreg(int windowID) {
                if (message != "")
                        GUILayout.Box(message);
                GUILayout.Label ("Логин");
                user = GUILayout.TextField (user);
                GUILayout.Label ("Как вас зовут?");
                name = GUILayout.TextField (name);
                GUILayout.Label ("Пароль");
                pass = GUILayout.PasswordField (pass, "*" [0]);
                GUILayout.Label ("Повторите пароль");
                rePass = GUILayout.PasswordField (rePass, "*" [0]);
                GUILayout.BeginHorizontal ();
                if (GUILayout.Button ("Назад")) {
                        doWindowreg = false;
                        doWindowlog = true;
                }
                if (GUILayout.Button ("Создать")) {
                        message = "";
                       
                        if (user == "" || name == "" || pass == "")
                                message += "Логин уже занят! \n";
                        else {
                                if (pass == rePass) {
                                        WWWForm form = new WWWForm ();
                                        form.AddField ("user", user);
                                        form.AddField ("name", name);
                                        form.AddField ("pass", pass);
                                        form.AddField("money", money);
                                        WWW w = new WWW ("http://test1.ru/register.php", form);
                                        StartCoroutine (registerFunc (w));
                                } else
                                        message += "Неправильный повторный пароль \n";
                        }
                }
               
                GUILayout.EndHorizontal ();
        }

        void Update (){
        }
        void OnGUI () {
                if (doWindowlog)
                        GUI.Window(1, new Rect(320, 110, 300, 400), DoWindowlog, "Логин");
                if (doWindowreg)
                        GUI.Window(0, new Rect(320, 110, 300, 400), DoWindowreg, "Регистрация");
                //Поля для ввода данных сделай сам!
                GUI.Label(new Rect(100,100,100,100),"Деньги:" + mon);
                if(GUI.Button(new Rect(0,0,150,150),"Отправить")){

                        mon -=1;
                        StartCoroutine(Wait2());
                }
        }


        IEnumerator registerFunc(WWW w)
        {
                yield return w;
                if (w.error == null)
                {
                        message += w.text;
                }
                else
                {
                        message += "ERROR: " + w.error + "\n";
                }
        }


        IEnumerator login(WWW w)
        {
                yield return w;
                if (w.error == null)
                {
                        if (w.text == "ok")
                        {
                                print("WOOOOOOOOOOOOOOO!");
                                doWindowlog = false;
                                //doWindowhead = true;
                                //StartCoroutine(GetScores());
                        }
                        else
                                message += w.text;

                }
                else
                {
                        message += "ERROR: " + w.error + "\n";
                }
        }




        public IEnumerator  Wait2() {
                ////данные для запроса в DataBase
                yield return new WaitForSeconds (1);
                if (pass != "" && user != "") {
                        var form = new WWWForm ();
                        form.AddField ("pass", pass);
                        form.AddField ("user", user);
                        form.AddField ("mon", mon);
                        //ОТПРАВЛЯЕМ ЗАПРОС
                        var w = new WWW ("http://test1.ru/savemoney.php", form);
                        yield return w;
                        ///ПОЛУЧАЕМ и разбиваем ОТВЕТ
                        string otvet = w.text;
                        string[] userinfo = otvet.Split (new string[] { ";" },
                        StringSplitOptions.None);
                        money = userinfo [0];
                }
        }
}
 

в mysqlconnect.cs, я соединил уроки со всего гугла, здесь присутствует система входа, регистрации, вывод, изменение и сохранение переменной money в бд, проверка на правильность ввода повторного пароля при регистрации, проверка на логин и пароль при входе, проверка на существующий логин и пароль, да и код 100% рабочий. На создать и вникнуть у меня ушло почти неделю, и некоторое еще не до конца понял. Прошу сильно не судить, т.к. в коде есть лишние переменные, возможно есть намного легче варианты, и это мой первый урок, и еще у меня др, так что если что не так спрашивайте. Не стал сильно комментировать код, возможно после др откомментирую. Спасибо:)
–Я всегда буду искать ленивого человека для работы ведь он найдет много легких путей для решения поставленной задачи (с) Билл Гейтс
Аватара пользователя
shmel
UNITрон
 
Сообщения: 156
Зарегистрирован: 13 сен 2009, 11:05
Откуда: Россия, Самарская область, Сызрань

Re: C#+mysql логин, рега, вывод и изменение переменной

Сообщение bess 02 мар 2016, 21:32

Спасибо, помогло, все работает! Данные можно записывать в PlayerPrefs \:D/
bess
UNец
 
Сообщения: 4
Зарегистрирован: 15 июл 2013, 17:26


Вернуться в Уроки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1