Hi,
I’m trying to get the post score function working on this [script][1] I’ve already tried setting it up on my webhost to no avail, so I thought I’d try setting up a local host on Wampserver.
Edit: Now working on localhost, was referencing a string called userName, instead of name. Still not working on webhost.
Here is the c# script which should pass the values to addscorelocal.php
using UnityEngine;
using System.Collections;
public class ScoreSceneGUI : MonoBehaviour
{
// FIELDS
// SCORE FIELDS
private string name = "Test";
private string difficulty = "Normal";
private int score = 123;
// SERVER DETAILS
private string key = "1dYujOp";
private string addScoreURL = "http://localhost/addscorelocal.php?";
// MONO METHODS
// Use this for initialization
void Start ()
{
}
// Handles Drawing of GUI
void OnGUI()
{
// Button To Submit and Exit
if(GUI.Button(new Rect(labelXOffset, labelYOffset + 5 * (spacing + labelHeight), labelWidth, labelHeight), "Submit Score"))
{
StartCoroutine(PostScores());
}
}
// CLASS METHODS
// Post Score
IEnumerator PostScores()
{
//This connects to a server side php script that will add the name and score to a MySQL DB.
// Supply it with a string representing the players name and the players score.
print ("ScoreSceneGUI.PostScores: method called");
string hash = Md5Sum(name + score + key);
string post_url = addScoreURL + "name=" + WWW.EscapeURL(name) + "&score=" + score + "&hash=" + hash;
// Post the URL to the site and create a download object to get the result.
WWW hs_post = new WWW(post_url);
yield return hs_post; // Wait until the download is done
if (hs_post.error != null)
{
print("There was an error posting the high score: " + hs_post.error);
}
}
public string Md5Sum(string strToEncrypt)
{
System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding();
byte[] bytes = ue.GetBytes(strToEncrypt);
// encrypt bytes
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] hashBytes = md5.ComputeHash(bytes);
// Convert the encrypted bytes back to a string (base 16)
string hashString = "";
for (int i = 0; i < hashBytes.Length; i++)
{
hashString += System.Convert.ToString(hashBytes*, 16).PadLeft(2, '0');*
-
}*
-
return hashString.PadLeft(32, '0');*
-
}*
}
And here is the addscorelocal.php, which is in the www directory of wamp
<?php
$db = mysql_connect(‘localhost’, ‘root’, ‘root’) or die('Could not connect: ’ . mysql_error());
mysql_select_db(‘localscores’) or die(‘Could not select database’);
// Strings must be escaped to prevent SQL injection attack.
name = mysql_real_escape_string(_GET[‘name’], $db);
score = mysql_real_escape_string(_GET[‘score’], $db);
hash = _GET[‘hash’];
$secretKey=“1dYujOp”; # Change this value to match the value stored in the client javascript below
$real_hash = md5($name . $score . $secretKey);
if($real_hash == $hash)
{
// Send variables for the MySQL database class.
$query = “insert into scores values (NULL, ‘$name’, ‘$score’);”; // scores
$result = mysql_query($query) or die('Query failed: ’ . mysql_error());
}
?>
I tried adding an entry, and check the database. No luck. Help would be greatly appreciated.
[1]: http://wiki.unity3d.com/index.php?title=Server_Side_Highscores