Help with Server Side HighScores

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

Got it working. The error seems to have been in setting up the table in the database.

CREATE TABLE `scores` (
   `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
   `name` VARCHAR(15) NOT NULL DEFAULT 'anonymous',
   `score` INT(10) UNSIGNED NOT NULL DEFAULT '0'
)
TYPE=MyISAM; 

// TYPE=MYISAM was the problem. It says on the site to use ENGINE=MYISAM if TYPE throws an error. It didn’t for me, but when I made a new database and changed to ENGINE, it worked.