Я использую php, чтобы мое приложение xcode считывало и записывало данные в мою базу данных mysql. Это мой код
<?php
if (isset($_GET["userName"]) && isset($_GET["password"]) ){
$userName = $_GET["userName"];
$password = $_GET["password"];
$result = login( $userName, $password);
echo $result;
}
function makeSqlConnection()
{
$DB_HostName = "what do i put here?";
$DB_Name = "i know this";
$DB_User = "and this";
$DB_Pass = "And this";
$con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die(mysql_error());
mysql_select_db($DB_Name,$con) or die(mysql_error());
return $con;
}
function disconnectSqlConnection($con)
{
mysql_close($con);
}
function login($userName, $password)
{
$con = makeSqlConnection();
$sql = "select * from user where userName = '$userName' and password = '$password';";
$res = mysql_query($sql,$con) or die(mysql_error());
$res1 = mysql_num_rows($res);
disconnectSqlConnection($con);
if ($res1 != 0) {
return 1;
}else{
return 0;
}}
?>
Кроме того, что мне нужно сделать, чтобы сделать его безопасным. Спасибо за любую помощь.
Также я запускаю это с моего VPS.
Ребята в xcode для публикации данных я использую этот код:
- (IBAction)continueClicked:(id)sender {
NSInteger success = 0;
@try {
if([[self.txtUsername text] isEqualToString:@""] || [[self.txtPassword text] isEqualToString:@""] ) {
[self alertStatus:@"Please enter Email and Password" :@"Sign in Failed!" :0];
} else {
NSString *post =[[NSString alloc] initWithFormat:@"userName=%@&passWord=%@",[self.txtUsername text],[self.txtPassword text]];
NSLog(@"PostData: %@",post);
NSURL *url=[NSURL URLWithString:@"(my php url)"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
//[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *response = nil;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"Response code: %ld", (long)[response statusCode]);
if ([response statusCode] >= 200 && [response statusCode] < 300)
{
NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"Response ==> %@", responseData);
NSError *error = nil;
NSDictionary *jsonData = [NSJSONSerialization
JSONObjectWithData:urlData
options:NSJSONReadingMutableContainers
error:&error];
success = [jsonData[@"success"] integerValue];
NSLog(@"Success: %ld",(long)success);
if(success == 1)
{
NSLog(@"Login SUCCESS");
} else {
NSString *error_msg = (NSString *) jsonData[@"error_message"];
[self alertStatus:error_msg :@"Sign in Failed!" :0];
}
} else {
//if (error) NSLog(@"Error: %@", error);
[self alertStatus:@"Connection Failed" :@"Sign in Failed!" :0];
}
}
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
[self alertStatus:@"Sign in Failed." :@"Error!" :0];
}
if (success) {
[self performSegueWithIdentifier:@"login_success" sender:self];
}
}
Не буду врать, я нашел этот код в другом месте и пытаюсь заставить его работать, чтобы я мог сделать страницу входа.
Я считаю, что проблема в вашей связи:
function makeSqlConnection()
{
$DB_HostName = "localhost";
$DB_User = "your_database_user";
$DB_Pass = "your_database_user_password";
$DB_Name = "your_database_name";
$con = mysql_connect( $DB_HostName,$DB_User,$DB_Pass, $DB_Name ) or die( mysql_error() );
return $con;
}
Ваш $ DB_HostName должно быть ваше имя хоста / IP-адрес сервера и порт.
Например, допустим, у вас есть сервер с IP-адресом: 162.2.2.1 и ваш порт MySql на этом сервере 3306 (порт по умолчанию для MySQL, если я не ошибаюсь) — теперь вы должны написать $ DB_HostName = ‘162.2.2.1:3306’ и это все!
Если у вас есть имя хоста, db.php-db.com, вы можете написать это вместо IP-адреса:
$ DB_HostName = ‘Db.php-db.com:3306’
По вопросам безопасности: вы можете использовать шифрование SSL, чтобы сделать ваше соединение зашифрованным, подробнее здесь: https://serverfault.com/questions/261134/is-mysql-port-3306-encrypted-and-if-no-how-can-i-encrypt-it
Удачи,
Том.