2016-11-23 2 views
0

Я разрабатываю приложение, требующее входа в систему, поэтому у меня есть контроллер, который размещает на сервере почту и пароль, вставленные в форму, и если логин успешно завершается печатью в $ scope.response строка "T" и контроллер должен проверить, есть ли строка "T", а затем перенаправить пользователя на домашнюю страницу.как сделать логин в ионной с http сообщение?

это мой код:

ФОРМА HTML:

<form ng-submit="submit()"> 
       <div class="list"> 
        <label class="item item-input"> 
        <span class="input-label">Email</span> 
        <input type="email" name="mail" ng-model="data.mail"> 
        </label><br> 
        <label class="item item-input"> 
        <span class="input-label">Password</span> 
        <input type="password" name="pwd" ng-model="data.pwd"> 
        </label><br> 
        <input type="hidden" name="funzione" value="login" ng-model="data.funzione"> 
        <input class="button button-calm" type="submit" name="submit" value="Login"> 
       </div> 
      </form> 

CONTROLLER:

.controller('LoginCtrl', function($scope, $http, $state) { 
    $scope.data = {}; 
    $scope.submit = function(){ 
     var link = 'http://localhost/ShuttleFIX/api.php'; 
     $http.post(link, {mail : $scope.data.mail}, {pwd : $scope.data.pwd}, {funzione : $scope.data.funzione}) 
      .then(function (res){ 
       $scope.response = res.data; 
       if ($scope.response == "T"){ 
        state.go('main'); 
       } 
      }); 
    }; 
}); 

API:

/* 
* connection to DB 
*/ 
if (isset($_SERVER['HTTP_ORIGIN'])) { 
     header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); 
     header('Access-Control-Allow-Credentials: true'); 
     header('Access-Control-Max-Age: 86400'); // cache for 1 day 
    } 
    // Access-Control headers are received during OPTIONS requests 
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { 
     if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) 
      header("Access-Control-Allow-Methods: GET, POST, OPTIONS");   
     if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) 
      header("Access-Control-Allow-Headers:  {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); 
     exit(0); 
    } 
    $postdata = file_get_contents("php://input"); 
if (isset($postdata)) { 
$request = json_decode($postdata); 
$funzione = $request->funzione; 
if ($funzione == "login") { 
    $mail = $request->mail; 
    $pwd = $request->pwd; 
    $query = "SELECT * FROM utente WHERE mail = '$mail' AND pwd = '$pwd'"; 
    $res = mysql_query($query);               
    if ($res && mysql_num_rows($res) > 0) { 
     $response = "T"; 
     echo $response; 
    } 
} 

но не работает.

Как я могу решить эту проблему?

Thank в

UPDATE:

Я получил эту ошибку из консоли: XMLHttpRequest cannot load http://localhost/<path>/api.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.

ответ

0

Обычным стороны сервера issue.Add этих заголовков на стороне сервера.

Access-Control-Allow-Headers: Content-Type 
Access-Control-Allow-Methods: GET, POST, OPTIONS 
Access-Control-Allow-Origin: * 

Примечание: посмотрите здесь для получения дополнительной помощи, https://www.w3.org/wiki/CORS_Enabled

также шаг за шагом руководство можно найти здесь: http://www.nikola-breznjak.com/blog/codeproject/posting-data-from-ionic-app-to-php-server/

+0

Спасибо, но теперь, кажется, это работает @Antonis – Edoardo

+0

Я отредактировал мой ответ со ссылкой. Надеюсь, эта помощь. Также эта проблема появляется в браузере. Вы можете использовать chrome extension for cors https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi, чтобы решить эту проблему. – Antonis