2016-07-05 50 views
6

Sto utilizzando gli script dalla pagina Server Side Highscores Tutorial per i miei scopi. L'ho modificato leggermente ma non funziona. Il valore non è il risparmio e continuo a ricevere questo messaggio nella pagina PHP:impossibile connettere unità e mysql utilizzando un servizio web php

Notice: Undefined index: Nome in C: \ xampp \ htdocs \ unitypb \ saveVerant.php sulla linea 6

Avviso: non definito Indice: Valore in C: \ xampp \ htdocs \ unitypb \ saveVerant.php sulla linea 7

Avviso: Undefined index: hash in C: \ xampp \ htdocs \ unitypb \ saveVerant.php sulla linea 8

Questo è il codice php

<?php 
     $db = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error()); 
     mysql_select_db('unitypb') 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="mySecretKey"; # 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 verant VALUES (NULL, '$name', '$score');"; 
      $result = mysql_query($query) or die('Query failed: ' . mysql_error()); 
     } 
?> 

e questo è il codice C#:

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 
using System.Collections.Generic; 

public class SQL_InputVS : MonoBehaviour { 

    private string secretKey = "mySecretKey"; // Edit this value and make sure it's the same as the one stored on the server 
    public string addScoreURL = "http://localhost/unitypb/saveVerant.php?"; //be sure to add a ? to your url 


    Text text; 

    void Awake(){ 
     text = transform.Find ("Text").GetComponent <Text>(); 
    } 


    public void sendDatabase() { 
     StartCoroutine (saveValue ("Verant-" + this.transform.name, text.text)); 
    } 


    IEnumerator saveValue (string name, string score) { 

     //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. 
     string hash = Md5Sum (name + score + secretKey); 

     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: " + 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[i], 16).PadLeft(2, '0'); 
     } 

     return hashString.PadLeft(32, '0'); 
    } 
} 
+7

** AVVISO **: Se stai imparando PHP, per favore, non usare ['mysql_query'] (http://php.net/manual/en/function. interfaccia mysql-query.php). È così terribile e pericoloso che è stato rimosso in PHP 7. Una sostituzione come [PDO non è difficile da imparare] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /) e una guida come [PHP The Right Way] (http://www.phptherightway.com/) spiega le migliori pratiche. – tadman

+1

puramente per la cronaca, Spin. per i punteggi più alti devi semplicemente utilizzare GameCenter o GooglePlayServices. è totalmente gratuito sarebbe molto irrealistico farlo manualmente a mano in questi giorni – Fattie

+0

interprete PHP ti sta dicendo che non hai in GET nome, punteggio e indici hash. Forse provi ad usare POST? –

risposta

-1

Citazione di commento di Spiningit.

Ce l'ho fatta, la sceneggiatura funziona molto bene ora. Sembrava che lo script C# fosse il problema. Ho cercato e trovato script modificato da Appymole qui e funziona perfettamente per la mia app. appymole.com/tutorial