Я использовал 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 ;
`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("Имя персонажа уже используется!");
}
?>
$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";
}
?>
//данные о хосте, пользователе и базе данных
$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";
}
?>
//данные о хосте, пользователе и базе данных
$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 "Информация в базе не обновлена!";
}
}
?>
//данные о хосте, пользователе и базе данных
$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];
}
}
}
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% рабочий. На создать и вникнуть у меня ушло почти неделю, и некоторое еще не до конца понял. Прошу сильно не судить, т.к. в коде есть лишние переменные, возможно есть намного легче варианты, и это мой первый урок, и еще у меня др, так что если что не так спрашивайте. Не стал сильно комментировать код, возможно после др откомментирую. Спасибо:)