2017-02-19 2 views
0

Здравствуйте, у меня есть простая страница входа, которая отлично работает, когда я использую bootstrap, но я хочу использовать дизайн углового материала.Простая страница входа в систему - метод формы сообщение не работает

Я ищу проблему от 3-4 часов и ничего. Я думаю, что форма не отправляет данные, такие как имя пользователя, пароль и отправить

Существует полный код авторизации

<!DOCTYPE html> 
<html> 

<head> 
    <title>Login</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="icon" type="img/png" href="img/favicon.png" /> 
    <link rel="stylesheet" type="text/css" href="../css/style.css"> 
    <!-- <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Tangerine"> --> 
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic"> 
    <link rel="stylesheet" href="../bower_components/angular-material/angular-material.css"> 
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
    <!-- <script src="../js/jquery-3.1.1.min.js"></script>--> 
    <link rel="stylesheet" type="text/css" href="../bower_components/angular-material-data-table/dist/md-data-table.min.css" /> 
</head> 

<body layout="row"> 
    <div layout="column" flex id="content" role="main" ng-controller="AppCtrl" ng-app="MyApp"> 
     <md-content layout="vertical" flex id="content" layout-align="center center"> 
      <?php include "connect.php"; if(isset($_POST['username']) && isset($_POST['password'])){ $username=$ _POST['username']; $password=md5($_POST[ 'password']); $stmt=$ db->prepare("SELECT * FROM login WHERE username=? AND password=? "); $stmt->bindParam(1, $username); $stmt->bindParam(2, $password); $stmt->execute(); $row = $stmt->fetch(); $user = $row['username']; $pass = $row['password']; $id = $row['id']; $type = $row['type']; if($user==$username && $pass==$password){ session_start(); $_SESSION['username'] = $user; $_SESSION['password'] = $pass; $_SESSION['id'] = $id; $_SESSION['type'] = $type; ?> 
      <script> 
       window.location.href = 'index.php' 
      </script> 
      <?php } else { ?> 
      <div> 
       <strong>Warning!</strong> Password or username are wrong! 
      </div> 
      <?php } } ?> 
      <form method="post" name="loginForm" style="width:50vh"> 
       <br /> 
       <br /> 

       <md-toolbar> 
        <div class="md-toolbar-tools"> 
         <h2>Login</h2> 
        </div> 
       </md-toolbar> 

       <md-dialog-content> 
        <div> 
         <md-input-container class="md-block"> 
          <label>Username:</label> 
          <input name="username" required> 
         </md-input-container> 
         <md-input-container class="md-block"> 
          <label>Password:</label> 
          <input type="password" name="password" required> 
         </md-input-container> 
        </div> 
       </md-dialog-content> 

       <md-dialog-actions layout="row"> 
        <span flex></span> 
        <md-button type="submit" value="Login" class="md-primary">OK</md-button> 
        <md-button type="button" aria-label="Cancel">Cancel</md-button> 
       </md-dialog-actions> 
      </form> 
     </md-content> 

    </div> 

    <script src="../bower_components/angular/angular.js"></script> 
    <script src="../bower_components/angular-aria/angular-aria.js"></script> 
    <script src="../bower_components/angular-animate/angular-animate.js"></script> 
    <script src="../bower_components/angular-material/angular-material.js"></script> 
    <script src="../bower_components/angular-material-data-table/dist/md-data-table.min.js"></script> 
    <!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> --> 
    <!-- <script src="js/app.js"></script> --> 
    <script> 
     angular.module('MyApp', ['ngMaterial']) 

     .controller('AppCtrl', function($scope) { 

      $scope.radek = "Radek"; 
      console.log($scope.radek); 

     }); 
</script> 
</body> 
</html> 
+0

Есть ли журналы ошибок из консоли браузера? – lxe

+0

Нет ничего, даже я не нажимаю кнопку или не ставил неверную дату – Defus

+0

@Ixe Есть журнал с сервера mod_fcgid: stderr: PHP Ошибка анализа: синтаксическая ошибка, неожиданный «_POST» (T_STRING), ожидающая переменная (T_VARIABLE) или «$» в/var/www/clients/client1/web14/web/login/login.php в строке 21 Строка 21 = Defus

ответ

1

В AngularJS, формам нужна ng-submit директивы.

<form method="post" name="loginForm" ng-submit="submit()"> 

Поскольку роль форм на стороне клиента AngularJS приложений отличается, чем в классических туда и обратно приложений, желательно браузер не переводить представление формы в полной перезагрузки страницы, которая отправляет данные на сервер , Вместо этого необходимо обработать некоторую логику JavaScript для обработки представления формы в зависимости от приложения.

По этой причине AngularJS предотвращает действие по умолчанию (отправка формы на сервер), если у элемента нет указанного атрибута действия.

Вы можете использовать один из следующих способов, чтобы указать, какой метод Javascript должен быть вызван, когда форма была отправлена:

  • ngSubmit директивы на элементе формы
  • ngClick директива на первую кнопку или вводе поле типа представить (вход [тип = представить])

Для получения дополнительной информации см:


I do something wrong Here is code of $http post. Can you look?

С AngularJS $ службы HTTP, тип содержимого по умолчанию application/json и объекты данных автоматически кодируются в JSON строки.

$scope.submit = function() { 
    var httpPromise = $http({ 
     method: "POST", 
     url: "login.php", 
     data: { 
      username: $scope.username, 
      password: $scope.password 
     } 
    }).then(function(response) { 
     console.log("POST SUCCESSFUL"); 
     return response; 
    }).catch(function(response) { 
     console.log("POST REJECTED"); 
     throw response; 
    }); 

Если API-сервер может принимать только POST с типом application/x-www-form-urlencoded контента, то данные должны быть URLencoded:

$scope.submit = function() { 
    var httpPromise = $http({ 
     method: "POST", 
     url: "login.php", 
     data: { 
      username: $scope.username, 
      password: $scope.password 
     }, 
     headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, 
     //URLencode the request 
     transformRequest: $httpParamSerializer 
     //OR 
     //transformRequest: $httpParamSerializerJQLike 
    }); 
}; 

Для получения дополнительной информации см

0

ли вы копировать/вставить?

$username=$ _POST[ 'username']; $password=m d5($_POST[ 'password']); 

$ _POST имеет пространство и md5 тоже. Должно быть:

$username=$_POST['username']; $password=md5($_POST['password']); 
+0

все в порядке в моем коде, я думаю, что это случилось, когда я вставил код здесь – Defus