2015-06-14 89 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算法来散列密码。 –

相关问题