Explanation about PHP code

Asked

Viewed 77 times

2

Good evening, someone with more affinity in PHP could explain the following code?

PS: I am starting the studies so I already apologize if the doubt is frivolous.

<?php

        if (isset($_GET['pagina'])) {
            $do = ($_GET['pagina']);
        }else{
            $do = "inicio";
        }

        if (file_exists("paginas/" .$do. ".php")) {
            include("paginas/" .$do. ".php");
        }else{
            echo "Página não econtrada";
        }

?>
  • 1

    Short and thick, it’s a big security problem.

  • Basically it executes the php file that is passed in the url. Including files that any person on the internet should not be able to have run.

  • @bfavaretto is more conducive to that, yes, but I think if the programmer knows it does, only pages even inside the directory páginas there is no Prob. Ps: I also would not do so clear

1 answer

1


The explanations are in the comments below in the code:

<?php

if (isset($_GET['pagina'])) { // verifica se a variável $_GET['pagina'] foi iniciada e definida recebendo dado da variável 'pagina'
   $do = ($_GET['pagina']); // foi iniciada e definida, atribui ela à variável $do
}else{ // a variável $_GET['pagina'] não foi iniciada, então a variável $do ganha o valor "inicio"
   $do = "inicio";
}

if (file_exists("paginas/" .$do. ".php")) { // verifica se o arquivo vindo da variável $do existe concatenando com as strings do caminho do arquivo
   include("paginas/" .$do. ".php"); // carrega a página no documento
}else{ // página não existe no caminho especificado acima
   echo "Página não econtrada"; // imprime o texto na tela
}
?>

Also use the !empty($_GET['pagina']). The isset is valid if the variable pagina is empty or equal to 0.

if ( isset($_GET['pagina']) && !empty($_GET['pagina']) ){
  • Don’t want to add the ultimate goal of all these steps? A warning about the vulnerability of this code would also go well.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.