AngularJS + php. Panel logowania.

AngularJS + php. Panel logowania.
Z6
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 8 lat
  • Postów:233
0

Witam,
próbuję stworzyć panel logowania (bez rejestracji), ale nie potrafię sobie poradzić. Ktoś mógłby pomóc??

Napisałem tak:
api.php:

Kopiuj
public function getLogin()
    {
           $sql = "SELECT login FROM users WHERE login='$username' AND password='$password'";
            
            return $this->db->fetchAll();
    }

$app->get('/login', function () use ($app, $DataProvider) {

    $login = $DataProvider->getLogin();

    return $app->json($login);
});

login.html:

Kopiuj
<div class="row">
    <div class="col-lg-10 col-sm-10 col-xs-12">
        <div class="flat-panel">
            <div class="flat-panel-header">
                <h3 class="flat-panel-heading">Panel logowania</h3>
            </div>
            <div class="flat-panel-body">
                <div class="form-group">
                <input type="text" class="form-control" ng-model="loginInfo.username" placeholder="Podaj login">
                </div>
                <div class="form-group">
                <input type="password" class="form-control" ng-model="loginInfo.password" placeholder="Podaj hasło">
                </div>
                <div class="form-group">
                <button ng-click="loginUser()" class="btn btn-primary">Zaloguj</button>
                </div>
            </div>
        </div>
    </div>
</div>

services.js:

Kopiuj
     app.factory('login', ['$http', function($http){
       var _getLogin = function (callback) {
            callback = callback||function(){};
            $http.get('/api.php/login')
                .success(function (data) {
                    callback(data);
                });
        };
        return {
            getLogin: _getLogin
        };

i app.js:

Kopiuj
    app.controller("LoginController", function($scope, $http){
        $scope.loginInfo = {
            username: undefined,
            password: undefined
        }
            $scope.loginUser = function(){
                var data = {
                    username: $scope.loginInfo.username,
                    password: $scope.loginInfo.password
                }               
                };    
        })

Jakby ktoś mógł pomóc, byłbym bardzo wdzięczny. Bardzo zamieszałem?

shagrin
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Norwegia, Stavanger
0

Po kliknięciu przycisku w formularzu wołasz $scope.loginUser() z LoginController, ale w tej metodzie nie odwołujesz się do service'u (login.getLogin()). Poza tym nie bardzo rozumiem jak login.getLogin() ma przesłać login i hasło dalej do PHP?


Z6
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 8 lat
  • Postów:233
0

jestem bardzo początkujący z angulara, dodatkowo sobie dołożyłem Silex'a, nie bardzo potrafię coś tu wskórać. Można porozmawiać z Tb prywatnie ??

shagrin
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Norwegia, Stavanger
1

Spróbuj czegoś takiego:

Kopiuj
angular.module("LoginTest", [])
  .controller("LoginCtr", function($scope, LoginFtr) {
    $scope.loginInfo = {
      username: undefined,
      password: undefined
    };

    $scope.loginUser = function(){
		LoginFtr.getLogin($scope.loginInfo).then(function(response) {
      			console.log("OK");
    	});
	}
  })
  .factory("LoginFtr", function($q, $http) {
    return {
      getLogin: function(data) {
        var deferred = $q.defer();
        $http.post('/api.php/login', data)
          .success(function(response) {
            deferred.resolve(response);
          });
        return deferred.promise;
      };
    };
  });

edytowany 2x, ostatnio: shagrin
Zobacz pozostałe 2 komentarze
shagrin
mój błąd, poprawiłam $scope.loginUser
Z6
teraz działa, ale jeszcze jest problem z POST http://roma-crm.pl/api.php/login 405 ()
Z6
dalej to samo :(, chyba coś nie tak z kodem z pliku api.php (login)
shagrin
Użyłam POST zamiast GET (przyjęłam taka konwencje jeśli wysyłam dane do serwera). Jak chceszużywać GET zmień $http.post na get, plus zmień sposób przekazania danych do API. Jak chcesz użyć post zmień $app->get na $app->post
Z6
O :) w konsolce wyświetliło się "OK" cokolwiek to oznacza. Tylko teraz jeszcze jakąś autentykację dodać trzeba by, aby sprawdzało poprawność danych, dobrze rozumuję?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.