繁体   English   中英

检查会话变量不起作用的数据库中的行的功能

[英]Function to check a row in database with session variable not working

我正在使用PHP和AngularJS开发Web应用程序。

我想将导航栏的一部分限制为具有特殊行的用户。 (就像管理员一样)

我在控制器中创建了angularJS函数,该函数在PHP控制器中调用了一个函数。 (我正在使用MVC,没有PHP框架)

问题是我在参数中传递了一个可变会话,我可以在数据库中识别出该用户,但该会话无法正常工作。

该功能不起作用。 日志中没有错误,控制台中没有错误,什么都没有。 如果我有正确的权限,导航栏的“管理员”部分将不会返回。

PHP功能

function verifierHabilitation ( $req, $api ){
    if(droitsModificationAdmin( $_SESSION['nni'] ) == "administration") {
        return 1;
    }
}

我正在调用函数droitsModificationAdmin()来验证行,并且在参数中使用了变量会话。

我的导航栏中的AngularJS函数调用

<li class="nav-item" ng-if="droitsAdmin() == 1" >
    <h2 ng-class="{ 'grdf-ss-title' : isActive('/admin') }" >
       <a class="nav-link" href="#/admin">Admin</a>
    </h2>
</li>

在这里,我使用ng-if来验证我以前的函数的返回。

我不知道问题出在哪里。 你有什么主意吗 ?

编辑:

这是我使用的所有代码:

AJS:在我的controller.js中

$scope.droitsAdmin = function() { factoryDossier.verifierHabilitation(); };

在我的factory.js中

verifierHabilitation : function(){

    return $http({
        url: 'controleurs/Controleur-Admin.php'
        ,method: "POST"
        ,data: $.param({
            fonction : 'verifierHabilitation'
        })
        ,headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    });
},

PHP:Controller.php

function verifierHabilitation ( $req, $api ){
    if(droitsModificationAdmin( $_SESSION['nni'] ) == "administration") {
        echo "ceci est un test";
        return 1;
    }
}

在这里,我正在调用全局控制器中的函数。

全球控制人

function droitsModificationAdmin( $nni ){
    $bdd = new Model_Habilitation( PDO_bdd_app() );
    $utilisateur = $bdd->habilitation( $nni );
    return ( $utilisateur[0]['h_habilitation'] );
}

模型.php

public function habilitation( $nni ){
        $sql = $this->grea_ouest->prepare('SELECT h_habilitation FROM '.$this->table_habilitation.' h WHERE h.h_nni = :nni');
        $sql->execute( array( ':nni' => $nni ) );
        return $sql->fetchAll(PDO::FETCH_ASSOC);
    }

Controleur-Configuration.php

(对不起,代码是法语的)

<?php

require_once('Controleur-Configuration.php');
require_once('api_rest.php');
require_once(dirname(__FILE__).'/../class/ClassAdmin.php');
require_once(model_url('Model_Admin'));
require_once('Helpers.php');

#############################################################
gestion_session();//Gestion à partir du fichier configuration
#############################################################

$api = new Rest;

try {
    $req = $api->get_request();
    if( function_exists( $req['fonction'] ) ){ $req['fonction']( $req, $api ); } else { throw new Exception('Fonction inexistante'); }
} catch(Exception $e){
    $api->response(array(), 501);
}

/**
 * Retourne les informations d'un admin
 * @param $req array : les données passées en parametres
 * @param $api Rest : l'objet Rest permettant l'interaction avec le client.
 * @return array : les informations du dossier.
 */
function getAdmins( $req, $api ){
    $bdd = new Model_Admin( PDO_bdd_app() );
    try{
        $Admins = $bdd->getAdmins();
        foreach($Admins as $key=>$Admin){ $Admins[$key] = $Admin->json_encode(); }
        $api->response( $Admins, 200);
    } catch(Exception $e){ error_log( $e ); $api->response( "", 500); }
}

/**
 * Retourne les habilitations
 * @param $req array : les données passées en parametres
 * @param $api Rest : l'objet Rest permettant l'interaction avec le client.
 * @return array : les informations du dossier.
 */
function getHabilitations( $req, $api ){
    $bdd = new Model_Admin( PDO_bdd_app() );
    try{
        $Habilitations = $bdd->getHabilitations();
        foreach($Habilitations as $key=>$Habilitation){ $Habilitations[$key] = $Habilitation->json_encode(); }
        $api->response( $Habilitations, 200);
    } catch(Exception $e){ error_log( $e ); $api->response( "", 500); }
}

/**
* Met a jour un habilité
* @param $req array : les données passées en parametres
* @param $api Rest : l'objet Rest permettant l'interaction avec le client.
* @return array : les informations du CA.
* @throws Exception : retourne une erreur 500.
*/
function updateAdmin( $req, $api ){
    $bdd = new Model_Admin( PDO_bdd_app() );
    try {
        if( isset($req['NewAdmin']) ){
            $admin = cast( $req['NewAdmin'], 'Admin' );
        } else { $api->response( array( "erreur" => array(array("Aucunes informations saisies"))), 409); }

            try
            {
                $bdd = new Model_Admin( PDO_bdd_app() );
                $newAdmin = $bdd->updateAdmin( $admin );
                $api->response( array( "dev"=>$newAdmin->json_encode(), "info"=>array("Le développeur a été modifié")), 200);
    } catch( Exception $e ){ error_log( $e ); $api->response( "", 500); }
    } catch( Exception $e ){ error_log( $e ); $api->response( "", 500); }
}

/**
* Change l'habilitation d'un utilisateur
* @param $req array : les données passées en parametres
* @param $api Rest : l'objet Rest permettant l'interaction avec le client.
* @return array : les informations du CA.
* @throws Exception : retourne une erreur 500.
*/
function changerHabilitation ($req, $api){
    $bdd = new Model_Admin( PDO_bdd_app() );
    try{
        $habilitation = $bdd->changerHabilitation( $req['nni'], $req['habilitation'] );
    } catch(Exception $e){
        error_log( $e );
        $api->response( $e, 500);
    }
}

function verifierHabilitation ( $req, $api ){
    if(droitsModificationAdmin( $_SESSION['nni'] ) == "administration") {
        echo "ceci est un test";
        return 1;
    }
}

/**
* Approuve un utilisateur
* @param $req array : les données passées en parametres
* @param $api Rest : l'objet Rest permettant l'interaction avec le client.
* @return array : les informations du CA.
* @throws Exception : retourne une erreur 500.
*/
function approuverUtilisateur ($req, $api){
    $bdd = new Model_Admin( PDO_bdd_app() );
    try{
        $utilisateur = $bdd->approuverUtilisateur( $req['nni'] );
    } catch(Exception $e){
        error_log( $e );
        $api->response( $e, 500);
    }
}

/**
* Refuse un utilisateur
* @param $req array : les données passées en parametres
* @param $api Rest : l'objet Rest permettant l'interaction avec le client.
* @return array : les informations du CA.
* @throws Exception : retourne une erreur 500.
*/
function refuserUtilisateur ($req, $api){
    $bdd = new Model_Admin( PDO_bdd_app() );
    try{
        $utilisateur = $bdd->refuserUtilisateur( $req['nni'] );
    } catch(Exception $e){
        error_log( $e );
        $api->response( $e, 500);
    }
}

?>

$ http服务不返回值,它返回一个需要从中提取值的promise:

$scope.droitsAdmin = function() {
    var promise = factoryDossier.verifierHabilitation();
    return promise.then(function (response) {
        var data = response.data;
        $scope.droitsAdminData = data;
        console.log(data);
        return data;
    }).catch(function(error) {
        console.log(error);
        throw error;
    });
};

您的代码还有其他问题,但这应为您提供控制台消息,以显示这些问题。

好的,因此,当您需要一些权限模块时,可以执行以下操作:创建一个Angularjs服务来存储所有权限值,因此您不必一次又一次地访问数据库,将权限值存储在该服务中登录。 像这样使用您的代码:

<div ng-if="permission == 'user'">
    Some content which you want to show to **USER** only.
</div>
<div ng-if="permission == 'user' || permission == 'admin'">
    Some content which you want to show to **USER and ADMIN** both.
</div>
<div ng-if="permission == 'admin'">
    Some content which you want to show to **ADMIN** only.
</div>

看起来您正在从JAVASCRIPT调用PHP函数。 你不可以做这个。 您必须发出HTTP请求(AJAX CALL)才能执行此操作。 如果您有任何疑问,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM