✏️ 正在编辑: Link.php
路径:
/srv/systems_dir/yuppiecred/library/Core/Link.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php require_once 'Crypt.php'; $_PAR = array(); class Core_Link { // Variável que armazena a chave do checksum static $chave = "chavedockecksum"; // Variável que armazena o link var $link = ''; // construtor, os parâmetros são simples // pagina = arquovo php a ser chamado // parametros: parâmetros da chamada ex: "id=10&tipo=noticia" function Link($pagina = '', $parametros = '') { // chama o método responsável pela criação do link // repassando os parâmetros $this->link = $this->criaLink($pagina, $parametros); // retorna o link encriptado return $this->link; } static function prepareLink() { if( isset($_SERVER['REQUEST_URI']) ){ $uri = ltrim($_SERVER['REQUEST_URI'], '/'); $sitekey = "/" . substr($uri, 0, strpos($uri, '/')); define("rootvirtual", $sitekey); define("rootfisico", getcwd()); } } static function criaLink($pagina = '', $parametros = '') { // Core_Link::prepareLink(); // transforma os parâmetros em um array associativo parse_str($parametros, $p); // adiciono nesse array na posição "_pagina" o arquivo php // $p["_pagina"] = $pagina; // Aqui eu adiciono uma chave calculada a partir do que tem no array $p // porém adiciono somente os 5 primeiros caracteres para encurtar a chave // esse será o parâmetro responsável por garantir a integridade // da informação passada $p["_check"] = substr(crypt(json_encode($p), Core_Link::$chave), 0, 5); // retornamos a URL encriptando a versão codificada em json dela. // rootvirtual é a constante que diz qual o root do site, // explicarei mais abaixo de onde ela vem return $pagina . "?" . Core_Crypt::Encrypt(json_encode($p)); } static function trataQuery() { // verifica a existência de query-string e adiciona ela na variável $q if( $q = $_SERVER['QUERY_STRING'] ){ // decodifica a string $p = json_decode(Core_Crypt::Decrypt($q), true); // se o retorno for um array, quer dizer que a query é parcialmente válida if( is_array($p) && isset($p["_check"]) ){ // carrega a chave do vetor $chave = $p["_check"]; // remove a chave do vetor unset($p["_check"]); // recalcula a chave e verifica se é diferente a chave passada if( substr(crypt(json_encode($p), Core_Link::$chave), 0, 5) != $chave ) // Se for, a requisição eh redirecionada para o index. throw new Core_Exception('URL que você está tentando acessar é inválida!'); else { // se for válida é criada a variável global _PAR e o vetor // de parâmetros é jogado nela // $GLOBALS["_PAR"] = $p; $p['uri'] = $_SERVER['REQUEST_URI']; // sai da função return $p; } } else { // se não for um vetor, houve modificação da url, e a requisição // é enviada para o index throw new Core_Exception('URL que você está tentando acessar é inválida!'); } // termina a execução e redireciona die(); } } }
💾 保存文件
← 返回文件管理器