我不確定這是否是最佳做法,但我只是試圖在我的網站上爲我創建一個簡單的登錄系統。我不想使用數據庫來存儲一個密碼,我在整個網站上使用Angular。我不希望密碼在JavaScript中以純文本形式顯示給任何人看。我認爲的我可以在Angular if語句中使用php變量嗎?
一個解決方案在做這樣的事情:
$scope.loginValue = false;
$scope.loginFunction = function(password){
if(password == <?php echo 'test123' ?>){
$scope.loginValue = true;
}
}
有誰知道我如何能夠做到這一點?現在我得到一個錯誤,因爲JavaScript不喜歡我的if語句中的'<'字符。同樣,我不希望密碼在JavaScript中可見,但我沒有使用數據庫或API調用。我也有建議。 :)
我的其他想法,使用哈希,我從來沒有做過... ....是的,我願意接受。 :)
謝謝大家提前。
******************以下更新******************
所以,我最終選擇了@musicfuel建議的答案。我現在試圖讓這個工作。如上所示,我的login.php文件有以下幾種:
<? echo $_POST['password'] == 'test123' ? true : false ?>
密碼是$ scope.password來自用戶輸入。當他們提交他們的憑據它調用此函數
$scope.loginFunction = function(){
loginService.getLogin().then(function(response){
console.log(response);
}, function(error){
$rootScope.loggedIn = false;
});
};
這裏是login服務:
myApp.controller('myController', ['$scope', '$rootScope', 'loginService', function myController($scope, $rootScope, loginService) {
.service('loginService', ['$http', '$q', '$rootScope', function($http, $q, $rootScope){
var getLogin = function() {
$http.post('login.php'), {
password: $scope.password
}, function (success) {
console.log("Login result: " + success);
}, function (error) {
console.log("Couldn't complete the login request.");
}
}
}])
}]);
當此功能運行時,我得到以下錯誤:類型錯誤:loginService.getLogin不是一個函數 你知道爲什麼找不到它嗎?
*「我不希望密碼是在JavaScript中可見,但我沒有使用和數據庫或API調用「*您必須進行API調用或以某種方式計算值,如果您不希望它出現在JS源代碼中。即使你設法得到'<?php echo'test123'>>'工作,它只會將這個值放入發送給瀏覽器的JS源代碼中。 –
我想你應該閱讀http://stackoverflow.com/q/13840429/218196以更好地瞭解客戶端JS和服務器端PHP如何協同工作。 –
謝謝@Felix Kling。決定做一個簡單的login.php文件。謝謝您的幫助! – Jaromjj