2015-06-14 54 views
0

我目前正在製作iOS應用程序,其中用戶必須登錄或創建帳戶(並在登錄後)。爲此,我需要以某種方式連接到數據庫。該數據庫的類型爲SQL,並在XAMPP中使用phpmyadmin創建。目前它只包含一個名爲'user'的表,其中包含屬性'id','email'和'password'。我創建了兩個名爲signin.php和signup.php的PHP腳本,並將其放在c:\ xampp \ htdoc目錄中,以便通過localhost加載腳本。下面是腳本註冊:如何爲iOS應用程序設置數據庫?

<?php 

$email = $_GET['email']; 
$password1 = $_GET['password1']; 

$con=mysqli_connect("localhost","root","<mypassword>","app_db"); 

if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$sql = "INSERT INTO user (email, password) VALUES ('$email', '$password')"; 

if ($con->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

mysqli_close($con); 

?> 

要創建編寫以下瀏覽器的新帳戶: http://localhost/[email protected]&password=123456

我的問題是,如果這是它的正確方法?我真的很難谷歌正確的事情,因爲我不知道要搜索什麼。我非常感謝你的幫助,並告訴我列出的信息是否不足。

回答

0

嗯,首先:

你「擁有」使用https而不是http或您的客戶密碼將通過互聯網飛沒有任何保護。

另外: 當前您的用戶可以在您的服務器上執行SQL注入。使用此代碼:

if($stmt = $mysqli->prepare("INSERT INTO user (email, password) VALUES (?, ?)")) 
{ 
    $stmt->bind_param('ss',$email,$password); // the variables are of type string->s and they are ordered in the way the questionmarks are in the query! 
    $stmt->execute(); 
    $affected_rows = $stmt->affected_rows; 
    $stmt->close(); 

    if($affected_rows == 1) 
    { 
     echo "New record created successfully"; 
    } 
} 

也可能是你不應該呼應反應出「普通測試」,但返回的東西機器可讀像JSON這樣你的應用程序可以顯示有用的結果提供給用戶。

+0

感謝您的提示和代碼。我仍然有點不確定,如果使用這種方法與PHP是最佳的方式做到這一點。我真的想從一開始就以「嚴謹」的方式來做到這一點。 –

+0

沒有「正確的方式」,適用於每個iOS和Android應用程序。公司開發人員知道什麼是特別重要的。如果你有php的人,這是正確的方法。有一點需要注意:通常你甚至不會發送用戶輸入到你的文本字段中的真實密碼,而是直接對其進行散列,並且只傳送散列,因爲沒有人應該看到(甚至沒有)實際用戶密碼。這樣 - 如果你被黑客攻擊 - 你永遠不會泄漏任何用戶密碼! –

+0

是的,我想到了。有些朋友告訴我使用md 5算法來散列密碼。 –

相關問題