Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

matiklsd

Autenticação de utilizadores usando estruturas

Mensagens Recomendadas

matiklsd    0
matiklsd

Boa tarde.

Estou com algumas dificuldades em fazer a autenticação de utilizadores. O que estou a tentar fazer é verificar na estrutura se existe o utilizador, e depois, se a autenticação for efectuada com sucesso, retornar a informação do utilizador, de modo a que fique sempre disponível ate o utilizador fazer logout do programa. Tenho a seguinte estrutura com listas ligadas:

struct student {
    char name[50];
    int idnumber;
    char password[15];
    short evaluation;
    short userType;
    struct student *nextPtr;
};

typedef struct student Student;
typedef Student *StudentPtr;

será que alguém me poderia dar uma dica de como fazer esta autenticação? Desde já agradeço toda a vossa ajuda.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
matiklsd    0
matiklsd

a função que eu estou a tentar implementar é esta:

int userLoginValidation(StudentPtr *studentPtr, const int USERNAME,
        const char PASSWORD[], const int PASSWORDSIZE, StudentLoginPtr *studentLoginPtr) {

    StudentLoginPtr loginPtr;
    StudentPtr previousStudentPtr;
    StudentPtr currentStudentPtr;

  loginPtr = malloc(sizeof (Student));
  if(loginPtr != NULL){
    if (USERNAME == currentStudentPtr->idnumber &&
            PASSWORD == currentStudentPtr->password) {
        strcpy(loginPtr->name,currentStudentPtr->name);
        loginPtr->idnumber = currentStudentPtr->idnumber;
        strcpy(loginPtr->password,currentStudentPtr->password);
        loginPtr->evaluation=currentStudentPtr->evaluation;
        
        previousStudentPtr = NULL;
        return 1;
    }else{
        while (USERNAME != currentStudentPtr->idnumber) {
            previousStudentPtr = currentStudentPtr;             
            currentStudentPtr = currentStudentPtr->nextPtr;    
        }
        if (USERNAME == currentStudentPtr->idnumber &&
            PASSWORD == currentStudentPtr->password) {
        strcpy(loginPtr->name,currentStudentPtr->name);
        loginPtr->idnumber = currentStudentPtr->idnumber;
        strcpy(loginPtr->password,currentStudentPtr->password);
        loginPtr->evaluation=currentStudentPtr->evaluation;
        return 1;
        }
    }
  }
}

Alguém me pode explicar o que estou a fazer de errado?

Obrigado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

Alguém me pode explicar o que estou a fazer de errado?

Pelo menos a comparacao de strings.

Quando fazes if (PASSWORD == currentStudentPtr->password) estas efectivamente a comparar ponteiros. Os arrays em C sao, na grande maioria dos usos, convertidos em ponteiros para o seu primeiro elemento. Ao fazeres a comparacao de strings como tens (se as strings ainda fossem arrays) os arrays sao convertidos para ponteiros. O que tens de fazer e usar a funcao strcmp().

if (strcmp(PASSWORD, currentStudentPtr->password)) == 0) /* strings iguais */;

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade