Partage
  • Partager sur Facebook
  • Partager sur Twitter

[CodeIgniter] Sécurisation de l'url avec GET

URL, GET, id, sécurisation

Sujet résolu
7 novembre 2019 à 9:27:48

Bonjour,

Etant débutant sur CodeIgniter, je cherche une solution pour sécuriser mon URL.

Mon model

public function getUsersDetails($id){
        $this->db->where('id', $id);    
        $query = $this->db->get('users');
        return $query->row();
    }

Mon controller

public function profile($id){ 

        $data = array(); 
        if($this->isUserLoggedIn){ 
            $con = array( 
                'id' => $this->session->userdata('userId') 
            ); 
            $data['user'] = $this->user->getRows($con);
            $data['title'] = "Mon compte";
            $data['users'] = $this->user->getUsersDetails($id);

            // Pass the user data and load view 
            $this->load->view('elements/header', $data); 
            var_dump(isset($id));
            var_dump($id);
            if($id > 0 AND isset($id)) {
            
              
                $this->load->view('users/profile', $data);
                
            }else {
                $this->load->view('errors/error_profile', $data);
            }

            $this->load->view('elements/footer'); 
            
        }else{ 
            redirect('users/login'); 
        } 
    } 

J'aimerai obtenir des solutions concernants l'url, c'est à dire que si l'utilisateur met une id d'un membre qui n'éxiste pas (ex : "profile/1511616") ça affiche une erreur, et que l'id 0 n'éxiste pas non plus.

Avec ce code, j'obtiens bien mon id dans var_dump mais isset($id) me retourne toujours TRUE 

Pour plus d'informations, n'hésitez pas

Merci, 

-
Edité par GeoffreyB62 7 novembre 2019 à 9:29:20

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
7 novembre 2019 à 9:32:54

Salut,

isset vérifie si ta variable est définie et si elle ne vaut pas NULL. L'utiliser est donc inapproprié dans ton cas puisque la variable $i est donnée en argument et est forcément déclarée. Voilà pourquoi elle te retourne toujours TRUE.

https://www.php.net/manual/fr/function.isset.php

-
Edité par Anonyme 7 novembre 2019 à 9:34:20

  • Partager sur Facebook
  • Partager sur Twitter
7 novembre 2019 à 9:39:01

Salut,

tu dois vérifier si ta méthode getUserDetails renvoie une ligne et non faire des isset et compagnie. A quoi ça sert de récupérer l'id en session et venir encore faire passer $id à ta méthode profile ?

  • Partager sur Facebook
  • Partager sur Twitter
le bienfait n'est jamais perdu
7 novembre 2019 à 10:08:44

Merci pour vos réponses rapides, j'ai trouvé une solution, est elle correcte pour vous ?


if (empty($data['users'])){
  show_404();
} else {
  $this->load->view('users/profile', $data);
}



-
Edité par GeoffreyB62 7 novembre 2019 à 11:25:51

  • Partager sur Facebook
  • Partager sur Twitter
17 mai 2021 à 13:14:59

Bonjour à tous,voilà je suis en train de finaliser mon projet php avec le framework Codeigniter3 et je me rends compte que quand je tape une URL même en partant de mon login ben ça fonctionnne que noramlement non donc j'aimerais savoir comme on s'y prend
  • Partager sur Facebook
  • Partager sur Twitter
17 mai 2021 à 13:26:59

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)