Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एकता से डेटाबेस से कैसे जुड़ें

<ब्लॉकक्वॉट>

कृपया इस दृष्टिकोण के साथ किसी भी सुरक्षा जोखिम पर ध्यान न दें

ऐसा न करें . इससे कोई फर्क नहीं पड़ता कि सुरक्षा पहले आएगी या बाद में। आप पूरे कोड को फिर से लिखना समाप्त कर देंगे क्योंकि पासवर्ड आपके आवेदन में हार्ड-कोड किया गया है जिसे विघटित और पुनर्प्राप्त किया जा सकता है आसानी से . कनेक्शन को अभी सही तरीके से करें ताकि आपको पूरे एप्लिकेशन को फिर से लिखना न पड़े।

अपने डेटाबेस कमांड को अपने सर्वर पर php, perl या किसी भी भाषा के साथ चलाएं जिसमें आप सहज हों लेकिन यह सर्वर पर किया जाना चाहिए।

एकता से, WWW का उपयोग करें या UnityWebRequest कक्षा उस स्क्रिप्ट के साथ संवाद करने के लिए और फिर, आप एकता से सर्वर पर जानकारी भेजने और प्राप्त करने में सक्षम होंगे। वहाँ कई उदाहरण हैं। इसके साथ भी, आपको अभी भी अपनी स्वयं की सुरक्षा लागू करने की आवश्यकता है लेकिन यह आपके पास अभी जो है उससे कहीं अधिक बेहतर है।

आप json के साथ डेटा मल्टीपल भी प्राप्त कर सकते हैं।

नीचे इस एकता विकि से एक संपूर्ण उदाहरण दिया गया है। यह दिखाता है कि सर्वर साइड पर PHP और क्लाइंट साइड पर यूनिटी + C# का उपयोग करके यूनिटी में डेटाबेस के साथ कैसे इंटरैक्ट किया जाए।

सर्वर साइड :

पीडीओ के साथ स्कोर जोड़ें :

<?php
        // Configuration
        $hostname = 'localhot';
        $username = 'yourusername';
        $password = 'yourpassword';
        $database = 'yourdatabase';

        $secretKey = "mySecretKey"; // Change this value to match the value stored in the client javascript below 

        try {
            $dbh = new PDO('mysql:host='. $hostname .';dbname='. $database, $username, $password);
        } catch(PDOException $e) {
            echo '<h1>An error has ocurred.</h1><pre>', $e->getMessage() ,'</pre>';
        }

        $realHash = md5($_GET['name'] . $_GET['score'] . $secretKey); 
        if($realHash == $hash) { 
            $sth = $dbh->prepare('INSERT INTO scores VALUES (null, :name, :score)');
            try {
                $sth->execute($_GET);
            } catch(Exception $e) {
                echo '<h1>An error has ocurred.</h1><pre>', $e->getMessage() ,'</pre>';
            }
        } 
?>
 

पीडीओ के साथ स्कोर प्राप्त करें :

<?php
    // Configuration
    $hostname = 'localhost';
    $username = 'yourusername';
    $password = 'yourpassword';
    $database = 'yourdatabase';

    try {
        $dbh = new PDO('mysql:host='. $hostname .';dbname='. $database, $username, $password);
    } catch(PDOException $e) {
        echo '<h1>An error has occurred.</h1><pre>', $e->getMessage() ,'</pre>';
    }

    $sth = $dbh->query('SELECT * FROM scores ORDER BY score DESC LIMIT 5');
    $sth->setFetchMode(PDO::FETCH_ASSOC);

    $result = $sth->fetchAll();

    if(count($result) > 0) {
        foreach($result as $r) {
            echo $r['name'], "\t", $r['score'], "\n";
        }
    }
?>
 

सर्वर पर क्रॉस डोमेन नीति सक्षम करें :

इस फ़ाइल का नाम "crossdomain.xml" होना चाहिए और इसे आपके वेब सर्वर के रूट में रखा जाना चाहिए। एकता के लिए आवश्यक है कि जिन वेबसाइटों को आप WWW अनुरोध के माध्यम से एक्सेस करना चाहते हैं, उनकी एक क्रॉस डोमेन नीति हो।

<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
 

ग्राहक/एकता पक्ष :

यूनिटी से क्लाइंट कोड सर्वर से जुड़ता है, पीडीओ के साथ इंटरैक्ट करता है और किस फ़ंक्शन को कॉल करने के आधार पर स्कोर जोड़ता या पुनर्प्राप्त करता है। इस क्लाइंट कोड को नवीनतम एकता संस्करण के साथ संकलित करने के लिए थोड़ा संशोधित किया गया है।

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/unity_test/addscore.php?"; //be sure to add a ? to your url
public string highscoreURL = "http://localhost/unity_test/display.php";

//Text to display the result on
public Text statusText;

void Start()
{
    StartCoroutine(GetScores());
}

// remember to use StartCoroutine when calling this function!
IEnumerator PostScores(string name, int 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 posting the high score: " + hs_post.error);
    }
}

// Get the scores from the MySQL DB to display in a GUIText.
// remember to use StartCoroutine when calling this function!
IEnumerator GetScores()
{
    statusText.text = "Loading Scores";
    WWW hs_get = new WWW(highscoreURL);
    yield return hs_get;

    if (hs_get.error != null)
    {
        print("There was an error getting the high score: " + hs_get.error);
    }
    else
    {
        statusText.text = hs_get.text; // this is a GUIText that will display the scores in game.
    }
}

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');
}
 

यह सिर्फ एक उदाहरण है कि इसे ठीक से कैसे किया जाए। यदि आपको सत्र सुविधा लागू करने और सुरक्षा की परवाह करने की आवश्यकता है, तो OAuth 2.0 . देखें मसविदा बनाना। मौजूदा पुस्तकालय होने चाहिए जो OAuth . के साथ आरंभ करने में सहायता करेंगे मसविदा बनाना।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल:बनाम <=और>=. के बीच

  2. मैं SQL सर्वर में वर्चर या चार फ़ील्ड में अनुमत सभी विशेष वर्ण कैसे देख सकता हूं?

  3. SQL सर्वर सुरक्षा फ़ंक्शन को समझना HAS_Permis_BY_Name और इसके उपयोग के मामले

  4. 9 महत्वपूर्ण कार्य जिनके लिए डीबीए जिम्मेदार हैं

  5. SQL डेटाबेस पुनर्प्राप्ति लंबित पहुँच अस्वीकृत समस्या को ठीक करें