Ir para conteúdo
Jack Oliveira

Instalador

Recommended Posts

Ola estou fazendo um instalador de banco de dados 

 

em parte funciona  

 

Mas quando uso o

<<<HTML

 

HTML;

 

Ele fica com estas informações no top

 

7.4 ao 8.38.0.28512MOnOnOnOffOffOnOffOffOnOnOnOnOnprogress-bar-success

 


<?php
$MeuHtml = <<<HTML
<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
	
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>Instalação {$autor}</title>
	<link rel="icon" href="{$urlApi}api/allinstall/assets/icone.png?v={$versao}" sizes="32x32">
	<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
	<link rel="stylesheet" href="{$urlApi}api/allinstall/assets/css/app.css?v={$versao}">
	<style type="text/css">
	.license { background-color: #FFF; height: 400px; width: 100%; margin: 10px; }
	.form-control{ margin-bottom: 5px; }
	#primary{background: #FF6403}
	.paper-card{background: #272c33}
	.card{background: none;}
	.sw-theme-circles>ul.step-anchor:before{background-color: #30363d}
	.sw-theme-circles>ul.step-anchor>li>a{border: 3px solid #30363d}
	.sw-theme-circles>ul.step-anchor>li>a{background: #f5f5f5; min-width: 50px; height: 50px; text-align: center; -webkit-box-shadow: inset 0 0 0 3px #fff!important; box-shadow: inset 0 0 0 3px #fff!important; text-decoration: none; outline-style: none; z-index: 99; color: #999; background: #fff; line-height: 2; font-weight: bold;}
	.sw-theme-circles>ul.step-anchor>li{margin-left: 15%;}
	.card-header{border-bottom: 0}
	.table-striped tbody tr:nth-of-type(odd){background-color: #30363d;}
	.table-bordered{border: 1px solid #30363d;}
	.table-bordered td, .table-bordered th { border: 1px solid #30363d; }
</style>

</head>
<body class="light loaded">
	<div id="app">
		<main>
			<div id="primary" class="p-t-b-100 height-full">
				<div class="container">
					<div class="row">
						<div class="col-lg-8 mx-md-auto paper-card">
							<div class="text-center">
								<img class="img-responsive" src="{$urlApi}api/allinstall/assets/{$imagem}?v={$versao}">
								<p><strong><H3>Instalação {$projeto} | V: {$versao}</H3></strong></p>
							</div>

HTML;
                 if (!isset($_GET['step']) || $_GET['step'] == '1') { 
$MeuHtml .= <<<HTML
								<div class="card no-b">
									<div class="card-header  pb-0">
										<div class="stepper sw-main sw-theme-circles" id="smartwizard"
										data-options='{
		
										"theme":"sw-theme-circles",
										"transitionEffect":"fade"
										}'>
											<ul class="nav step-anchor">
												<li><a href="#step-1y">1</a></li>
												<li><a href="#step-2y">2</a></li>
												<li><a href="#step-3y">3</a></li>
												<li><a href="#step-4y">4</a></li>
											</ul>
										</div>
									</div>

									<div class="card-body">
										<h6><b>Configurações do Servidor</b></h6><br>
										<table class="table table-condensed table-bordered table-striped">
											<tr>
												<th>Função / Extensão</th>
												<th>Config. Necessária</th>
												<th>Config. Atual</th>
												<th width="50px">Status</th>
											</tr>

											<tr>
												<td>Versão do PHP</td>
												<td>
HTML;												
												echo $php7. ' ao '.$php8;											

$MeuHtml .= <<<HTML
												</td>
												<td>

HTML;
												echo phpversion();
$MeuHtml .= <<<HTML
											
												</td>
												<td>


HTML;
                        if(phpversion() >= $php7 && phpversion() <= $php8) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; }
$MeuHtml .= <<<HTML
												</td>
											</tr>
HTML;

$MeuHtml .= <<<HTML
											<tr>
												<td>Memória do PHP</td>
												<td>128MB</td>
												<td>												
HTML;

												echo $mem = ini_get('memory_limit');

$MeuHtml .= <<<HTML
												</td>
												<td>
HTML;
                        if($mem >= 128) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; }
$MeuHtml .= <<<HTML
											
												</td>
											</tr>
											<tr>
												<td>cURL</td>
												<td>On</td>
										<td>	
HTML;
					    if(function_exists('curl_init')) { echo 'On'; } else { echo 'Off'; } 

$MeuHtml .= <<<HTML
												</td>
												<td>

HTML;
						if(function_exists('curl_init')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; }

$MeuHtml .= <<<HTML
												</td>
											</tr>
											<tr>
												<td>Allow URL fopen</td>
												<td>On</td>
												<td>

HTML;
						 if(ini_get('allow_url_fopen')) { echo 'On'; } else { echo 'Off'; } 

$MeuHtml .= <<<HTML
												</td>
												<td>

HTML;
						 if(ini_get('allow_url_fopen')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; }

$MeuHtml .= <<<HTML
												</td>
											</tr>
											<tr>
												<td>File Get Contents</td>
												<td>On</td>
												<td>
HTML;
						 if(function_exists('file_get_contents')) { echo 'On'; } else { echo 'Off'; }

$MeuHtml .= <<<HTML
												</td>
												<td>

HTML;
												
						if(function_exists('file_get_contents')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } 


$MeuHtml .= <<<HTML
												</td>
											</tr>
											<tr>
												<td>Sessão Auto Start</td>
												<td>Off</td>
												<td>
HTML;
                        if(ini_get('session_auto_start')) { echo 'On'; } else { echo 'Off'; }

$MeuHtml .= <<<HTML
												</td>
												<td>

HTML;
						if(!ini_get('session_auto_start')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; }


$MeuHtml .= <<<HTML
						</td>
						</tr>
											<tr>
												<td>Safe Mode</td>
												<td>Off</td>
												<td>

HTML;
						if(ini_get('safe_mode')) { echo 'On'; } else { echo 'Off'; }

$MeuHtml .= <<<HTML
												</td>
												<td>
HTML;
						if(!ini_get('safe_mode')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; }

$MeuHtml .= <<<HTML
						                </td>
											</tr>
											<tr>
												<td>Short Open Tags</td>
												<td>On</td>
												<td>
HTML;
					if(ini_get('short_open_tag')) { echo 'On'; } else { echo 'Off'; }

$MeuHtml .= <<<HTML
												</td>
												<td>

HTML;
					if(ini_get('short_open_tag')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } 

$MeuHtml .= <<<HTML
					                      </td>
											</tr>
											<tr>
												<td>Magic Quotes GPC</td>
												<td>Off</td>
												<td>
HTML;
					if(ini_get('magic_quotes_gpc')) { echo 'On'; } else { echo 'Off'; } 

$MeuHtml .= <<<HTML
												</td>
												<td>

HTML;
					if(!ini_get('magic_quotes_gpc')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } 

$MeuHtml .= <<<HTML
												</td>
											</tr>
											<tr>
												<td>Register Globals</td>
												<td>Off</td>
												<td>
HTML;
					if(ini_get('register_globals')) { echo 'On'; } else { echo 'Off'; }

$MeuHtml .= <<<HTML
					                         </td>
												<td>

HTML;
					if(!ini_get('register_globals')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } 
$MeuHtml .= <<<HTML
					                    </td>
											</tr>
											<tr>
												<td>PHPMail</td>
												<td>On</td>
												<td>
HTML;
					if(function_exists('mail')) { echo 'On'; } else { echo 'Off'; } 

$MeuHtml .= <<<HTML
					                         </td>
												<td>

HTML;
					if(function_exists('mail')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { $i = $i + 1; echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } 

$MeuHtml .= <<<HTML
					                    </td>
											</tr>
											<tr>
												<td>MySQLi</td>
												<td>On</td>
												<td>
HTML;
					if(extension_loaded('mysqli')) { echo 'On'; } else { echo 'Off'; } 

$MeuHtml .= <<<HTML
												</td>
												<td>
HTML;
					if(extension_loaded('mysqli')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; }
$MeuHtml .= <<<HTML
											</td>
											</tr>
											<tr>
												<td>ZIP</td>
												<td>On</td>
												<td>
HTML;
					if(extension_loaded('zip')) { echo 'On'; } else { echo 'Off'; }

$MeuHtml .= <<<HTML
												</td>
												<td>
HTML;
					if(extension_loaded('zip')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } 

$MeuHtml .= <<<HTML
												</td>
											</tr>
											<tr>
												<td>MBString</td>
												<td>On</td>
												<td>											
HTML;
					if(extension_loaded('mbstring')) { echo 'On'; } else { echo 'Off'; } 

$MeuHtml .= <<<HTML
												</td>
												<td>
HTML;
					if(extension_loaded('mbstring')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; } 

$MeuHtml .= <<<HTML
												</td>
											</tr>
											<tr>
												<td>XML</td>
												<td>On</td>
												<td>
HTML;
					if(extension_loaded('libxml')) { echo 'On'; } else { echo 'Off'; } 
$MeuHtml .= <<<HTML
												</td>
												<td>

HTML;
					if(extension_loaded('libxml')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; }

$MeuHtml .= <<<HTML
												</td>
											</tr>
										</table>

										<hr>
										
										<h6><b>Diretórios e Permissões de Arquivos</b></h6><br>
										<table class="table table-condensed table-bordered table-striped">
											<tr>
												<th>Diretório</th>
												<th style="width: 40px">Status</th>
											</tr>

											<tr>
												<td>database</td>
												<td>												
HTML;
                    if(is_writable('database')) { $i = $i + 1; echo '<button type="button" class="btn btn-success"><i class="icon-check"></i></button>'; } else { echo '<button type="button" class="btn btn-danger"><i class="icon-close"></i></button>'; }
$MeuHtml .= <<<HTML

												</td>
											</tr>
										</table>

										<hr>
										
										<h6><b>Pontuação / Compatibilidade</b></h6><br>

										<div class="progress">
											<div class="progress-bar progress-bar-striped progress-bar-animated 
HTML;
                    echo ProgressBar(substr(VerificaPontuacao($i,'16'),0,4));
					$PontPorce = VerificaPontuacao($i,'16');
					$pont100 = substr(VerificaPontuacao($i,'16'),0,4);
$MeuHtml .= <<<HTML
											" role="progressbar" aria-valuemax="100" style="width: {$PontPorce}%;">
												<strong>{$pont100} / 100</strong>
											</div>
										</div>
									
										<center>
											<br>
											<button class="btn btn-primary" onclick="document.location.href='{$URL}?step=1';">Verificar</button>
											<button class="btn btn-primary" onclick="document.location.href='{$URL}?step=2';">Próximo</button>
										</center>
									</div>
								</div>
HTML;
                    } elseif (isset($_GET['step']) && $_GET['step'] == '2') { 
$MeuHtml .= <<<HTML

								<div class="card no-b">
									<div class="card-header  pb-0">
										<div class="stepper sw-main sw-theme-circles" id="smartwizard"
										data-options='{
		
										"theme":"sw-theme-circles",
										"transitionEffect":"fade"
										}'>
											<ul class="nav step-anchor">
												<li><a href="#step-1y">1</a></li>
												<li class="active"><a href="#step-2y">2</a></li>
												<li><a href="#step-3y">3</a></li>
												<li><a href="#step-4y">4</a></li>
											</ul>
										</div>
									</div>

									<div class="card-body ">
										<iframe src="{$urlApi}api/allinstall/termos.php{$Frame}" class="license" frameborder="0" scrolling="auto"></iframe>
										<form action="setup.php">
											<input type="hidden" name="step" value="3">
											<label><input type="checkbox" required=""> Sim, eu aceito</label>
											<center>
												<br>
												<a href="javascript:history.back()"><button class="btn btn-primary">Voltar</button></a>
												<button class="btn btn-primary" type="submit">Próximo</button>
											</center>
										</form>
									</div>
								</div>

HTML;
                    } elseif (isset($_GET['step']) && $_GET['step'] == '3') {
$MeuHtml .= <<<HTML

								<div class="card no-b">
									<div class="card-header  pb-0">
										<div class="stepper sw-main sw-theme-circles" id="smartwizard"
										data-options='{
		
										"theme":"sw-theme-circles",
										"transitionEffect":"fade"
										}'>
											<ul class="nav step-anchor">
												<li><a href="#step-1y">1</a></li>
												<li class="active"><a href="#step-2y">2</a></li>
												<li class="active"><a href="#step-3y">3</a></li>
												<li><a href="#step-4y">4</a></li>
											</ul>
										</div>
									</div>

									<div class="card-body">
										<form method="post" action="?InstallDB">
											<h6><b>1. MySQL - Configuração do Banco de Dados</b></h6><hr>

											<div class="form-group row">
												<label class="col-sm-3 control-label">MySQL Host:</label>
												<div class="col-sm-9">
													<input class="form-control" name="dbhost" value="localhost" required>
												</div>
											</div>

											<div class="form-group row">
												<label class="col-sm-3 control-label">Usuário MySQL:</label>
												<div class="col-sm-9">
													<input class="form-control" name="dbuser" required>
												</div>
											</div>

											<div class="form-group row">
												<label class="col-sm-3 control-label">Senha MySQL:</label>
												<div class="col-sm-9">
													<input class="form-control" name="dbpass">
												</div>
											</div>

											<div class="form-group row">
												<label class="col-sm-3 control-label">Nome do Banco MySQL:</label>
												<div class="col-sm-9">
													<input class="form-control" name="dbname" required>
												</div>
											</div>
												
											<h6><b>2. Configuração Comum</b></h6><hr>

											<div class="form-group row">
												<label class="col-sm-3 control-label">Nome do Site:</label>
												<div class="col-sm-9">
													<input class="form-control" name="nomesite" required>
												</div>
											</div>

											<div class="form-group row">
												<label class="col-sm-3 control-label">URL do Site:</label>
												<div class="col-sm-9">
													<input class="form-control" name="urlsite" value="{$urlsite}" required>
												</div>
											</div>

											<div class="form-group row">
												<label class="col-sm-3 control-label">URL de Instalação:</label>
												<div class="col-sm-9">
													<input class="form-control" name="siteurl" value="{$siteurl}" required>
												</div>
											</div>

											<div class="form-group row">
												<label class="col-sm-3 control-label">Extensão:</label>
												<div class="col-sm-9">
									               <select class="form-control" name="extensao" required>
                                            <option value=""> Selecionar Extensão </option>
                                            <option value="1"> MYSQLI </option>
                                            <option value="2"> PDO </option>

									               </select>
												</div>
											</div>												

											<div class="form-group row">
												<label class="col-sm-3 control-label">Define TimeZone:</label>
												<div class="col-sm-9">
									               <select class="form-control" name="timezone" id="timezone">

HTML;
                    foreach ($timezones as $timezone) :
					echo '<option value="'.$timezone.'" '.$timezone === $current_timezone ? 'selected' : ''.'> '.$timezone.' </option>';
                    endforeach;
$MeuHtml .= <<<HTML
									               </select>
												</div>
											</div>	
											<div class="form-group row">
												<label class="col-sm-3 control-label">E-mail:</label>
												<div class="col-sm-9">
													<input class="form-control" name="email" required>
													<em>Mesmo e-mail cadastrado em nosso Site.</em>
												</div>
											</div>

											<h6><b>3. Configuração do Administrador</b></h6><hr>

											<div class="form-group row">
												<label class="col-sm-3 control-label">Nome do Usuário:</label>
												<div class="col-sm-9">
													<input class="form-control" name="usuario" required>
												</div>
											</div>

											<div class="form-group row">
												<label class="col-sm-3 control-label">Login:</label>
												<div class="col-sm-9">
													<input class="form-control" name="login" required>
												</div>
											</div>

											<div class="form-group row">
												<label class="col-sm-3 control-label">Senha:</label>
												<div class="col-sm-9">
													<input class="form-control" type="password" name="senha" required>
												</div>
											</div>

											<div class="form-group row">
												<label class="col-sm-3 control-label">Senha[confimação]:</label>
												<div class="col-sm-9">
													<input class="form-control" type="password" name="senhaconfirm" required>
												</div>
											</div>

											<center>
												<a class="btn btn-primary" href="javascript:history.back()">Voltar</a>
												<button class="btn btn-primary">Próximo</button>
											</center>
										</form>
									</div>
								</div>
HTML;
               } elseif (isset($_GET['step']) && $_GET['step'] == '4') {
$MeuHtml .= <<<HTML
								<div class="card no-b">
									<div class="card-header  pb-0">
										<div class="stepper sw-main sw-theme-circles" id="smartwizard"
										data-options='{
		
										"theme":"sw-theme-circles",
										"transitionEffect":"fade"
										}'>
											<ul class="nav step-anchor">
												<li><a href="#step-1y">1</a></li>
												<li class="active"><a href="#step-2y">2</a></li>
												<li class="active"><a href="#step-3y">3</a></li>
												<li class="active"><a href="#step-4y">4</a></li>
											</ul>
										</div>
									</div>

									<div class="card-body">
										<div>
											<h4><b>Instalação realizada com sucesso!</b></h4>
										<p>Agora você poderá utilizar o seu {$projeto}, em caso de dúvidas entre em contato com o suporte: <b>{$emailautor}</b></p>
										</div>
										<center>
						        <form action="{$URL}?step=4" method="post">
                                     <button type="submit" name="realizar_login" class="btn btn-primary">Realizar Login</button>
                                </form>
										</center>
									</div>
								</div>
HTML;								
							 } 
if (isset($_POST['realizar_login'])) {
    // Deletar os arquivos
    @unlink('setup.php');
    @unlink($URL);
    @unlink('termos.php');
    @unlink('database/BD.sql');
    @unlink('controller/setup.php');

    // Redirecionar para a página de login ou outra página desejada
    header('Location: login.php?finish');
    exit;
}								 
$MeuHtml .= <<<HTML

							<div class="box-footer">
								<center>
									Todos os Direitos Reservados {$autor}
								</center>
							</div>
						</div>
					</div>
				</div>
			</div>
		</main>
	</div>
	<script src="{$urlApi}api/allinstall/assets/js/app.js"></script>
</body>
</html>

HTML;


echo $MeuHtml;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é causado pelas chamadas ao echo no meio da string <<<HTML. Isso faz com que o PHP misture a saída do buffer de código HTML com a saída do PHP antes de completar a construção da string. Para resolver isso, encapsule a lógica PHP em funções ou variáveis antes de construir a string HTML.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder 

 

Então Williams eu quero poder ofuscar codigo php e html junto, mas sempre dá erro..

 

Se eu ofuscar só o php da certo 

 

Eu fiz este ofuscar e simples 

 


<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$response = [
    'status' => 'error',
    'message' => 'Ocorreu um erro desconhecido.'
];

function obfuscatePHP($code, $fileName) {
    // Diretório onde o arquivo de código ofuscado será salvo
    $outputDirectory = 'CodigoFuscado/';

    // Cria um nome de subdiretório baseado na data e hora atual
    $subDirectoryName = 'pasta_' . date('d-m-Y-H-i-s') . '/';
    $subDirectoryPath = $outputDirectory . $subDirectoryName;

    // Verifica se o subdiretório não existe; se não, tenta criá-lo
    if (!file_exists($subDirectoryPath) && !is_dir($subDirectoryPath)) {
        if (!mkdir($subDirectoryPath, 0777, true)) {
            return false;
        }
    }

    // Caminho completo do arquivo de saída dentro do subdiretório
    $newFileName = $subDirectoryPath . $fileName;

    // Escreve o código ofuscado no arquivo
    $obfuscatedContent = "<?php\n";
    $obfuscatedContent .= "// Todos os Direitos Reservados a PHPADMIN Fone: (69) 9.9203-0882\n";
    $obfuscatedContent .= "\$OOO00O00O0=file(__FILE__);";
    $obfuscatedContent .= "eval(gzinflate(base64_decode('";
    $obfuscatedContent .= base64_encode(gzdeflate($code));
    $obfuscatedContent .= "')));\n";
    $obfuscatedContent .= "?>";

    if (file_put_contents($newFileName, $obfuscatedContent)) {
        return $newFileName;
    } else {
        return false;
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
        $fileTmpPath = $_FILES['file']['tmp_name'];
        $fileName = $_FILES['file']['name'];
        $fileSize = $_FILES['file']['size'];
        $fileType = $_FILES['file']['type'];
        $fileNameCmps = explode(".", $fileName);
        $fileExtension = strtolower(end($fileNameCmps));

        if ($fileExtension === 'php') {
            $code = file_get_contents($fileTmpPath);

            // Remove tags PHP de abertura e fechamento
            $code = str_replace(['<?php', '?>'], '', $code);

            // Realiza a ofuscação
            $generatedFileName = obfuscatePHP($code, $fileName);

            if ($generatedFileName) {
                $response['status'] = 'success';
                $response['message'] = "Arquivo ofuscado criado com sucesso: $generatedFileName";
            } else {
                $response['message'] = 'Erro ao criar o arquivo ofuscado.';
            }
        } else {
            $response['message'] = 'Tipo de arquivo inválido. Apenas arquivos PHP são permitidos.';
        }
    } else {
        $response['message'] = 'Erro no upload do arquivo. Código de erro: ' . $_FILES['file']['error'];
    }
} else {
    $response['message'] = 'Método de requisição inválido.';
}

header('Content-Type: application/json');
echo json_encode($response);
?>

Então eu pensei em mudar pra <<<HTML.  

 

Pra ver se resolve..

 

Se eu conseguir fazer com todos os php e html junto seria bom..

 

Eu posso esta errado em algo no php de ofuscado 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá, ofuscar o código pode parecer uma boa ideia para proteger a propriedade intelectual e impedir a engenharia reversa, mas há várias razões pelas quais isso pode não ser a melhor abordagem:

1. Manutenção Difícil

Ofuscar o código torna a manutenção extremamente difícil. Se um bug ou problema surgir, a depuração de código ofuscado pode ser um pesadelo, mesmo para os desenvolvedores originais. Isso pode aumentar significativamente o tempo e o custo de manutenção do software.

2. Impacto na Performance

A ofuscação pode introduzir complexidade desnecessária e aumentar o tempo de execução do código. Variáveis e funções com nomes curtos podem parecer menores, mas o processamento adicional para interpretar e executar o código pode impactar negativamente o desempenho.

3. Problemas de Compatibilidade

Ferramentas de ofuscação podem gerar código que não é totalmente compatível com todas as versões de PHP ou com todas as bibliotecas e frameworks utilizados. Isso pode levar a erros inesperados e problemas difíceis de diagnosticar.

4. Segurança Ilusória

A ofuscação oferece uma falsa sensação de segurança. Hackers experientes ainda podem deofuscar ou contornar a proteção. A segurança do software deve ser baseada em boas práticas de codificação, controle de acesso e criptografia de dados sensíveis, não apenas na ofuscação do código.

5. Dificuldade de Integração

Trabalhar com outras equipes ou integrar o código em sistemas maiores pode ser complicado quando o código está ofuscado. A colaboração é prejudicada, pois o entendimento do código é severamente limitado.

6. Experiência do Desenvolvedor

A ofuscação degrada a experiência do desenvolvedor. Novos desenvolvedores que se juntam ao projeto enfrentarão uma curva de aprendizado muito mais íngreme e terão dificuldade em contribuir eficazmente para o código base.

7. Problemas de Licenciamento

Se o seu software depende de bibliotecas de terceiros, a ofuscação pode violar os termos de licença dessas bibliotecas, que muitas vezes exigem que as modificações sejam visíveis e compreensíveis.

Conclusão

Embora a ofuscação possa parecer uma solução para proteger o código, os contras superam os prós na maioria dos casos. A segurança e a proteção da propriedade intelectual devem ser alcançadas através de boas práticas de desenvolvimento, revisões de código, testes de segurança e uma sólida arquitetura de software. A ofuscação pode ser uma camada adicional de proteção, mas não deve ser a principal estratégia de segurança.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por landerbadi
      Tenho uma tabela chamada "item" com os seguintes campos: id, name, active. Nela tem cadastrado vários itens. No campo "active" eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo active. E outra tabela chamada "product" com os seguintes campos (id, name) com os seguintes registros: 1, Produto A 2, Produto B 3, Produto C E uma terceira tabela chamada "product_item" com os seguintes campos (productID, itemID). No campo productID eu coloco o id de um produto da tabela "product" e no campo "itemID" eu coloco o id do produto da tabela "item". Exemplo: 1, 1 1, 3 1, 4 2, 3 2, 4 Sendo assim o produto A da tabela 'product" comtem os itens casa, cama e moto. Eu preciso fazer uma busca da seguinte maneira:  Eu escolho um registro da tabela "item", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "product" que contenham a palavra "casa" e que os demais itens estejam ativos no siste. Ou seja, que contenham um "S" no campo "active"  Eu consegui fazer isso da seguinte maneira: SELECT P.id, P.name, GROUP_CONCAT(I.name ORDER BY I.name) AS items FROM product P JOIN product_item PI ON P.id = PI.productID JOIN item I ON I.id = PI.itemID AND I.active = 'S' WHERE P.id NOT IN ( SELECT PI.productID FROM product_item PI JOIN item I ON I.id = PI.itemID WHERE I.active IS NULL ) AND P.id IN ( SELECT PI.productID FROM product_item PI JOIN item I ON I.id = PI.itemID WHERE I.name = 'mesa' ) GROUP BY P.id, P.name; O problema que eu estou tendo é o seguinte:
      Quando eu jogo este código para o banco de dados onde eu já tenho os registros cadastrado o php fica lendo uma eternidade e não lista os produtos.
       
      Usando código no banco de dados que eu fiz para testes ele funciona perfeitamente pois nele tem poucos registros.
       
      No banco de dados principal a tabela "item" tem 11.196 registros. A tabela "product" tem 88.214 registros e a tabela "product_item" tem 518.378 registros. 
       
      Eu acredito que, devido o banco de dados ser muito grande, ele não consegue listar.
       
      Alguém sabe de algum meio de resolver isso?
       
       
    • Por Jack Oliveira
      Ola pessoal, boa noite a todos
       
      Bom é o seguinte tenho um codigo html onde selecione um modelo de site para poder criar na base selecionada, ele criar ate então, mas ele esta pegando somente o index.html
      Mas quero que ele salva junto ao novo projeto o css, js, img, images, assets e fonts, quando faço os ajuste para que pega tudo isso ele me da erro ao salvar 
      Vou mostra parte do html onde faz a seleção dos modelos
       
      <!-- new page modal--> <div class="modal fade" id="new-page-modal" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <form id="newPageForm" method="POST" action="save.php"> <div class="modal-content"> <div class="modal-header"> <h6 class="modal-title text-primary fw-normal"><i class="la la-lg la-file"></i> Nova página</h6> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"> </button> </div> <div class="modal-body text"> <div class="mb-3 row" data-key="type"> <label class="col-sm-3 col-form-label"> Modelo <abbr title="O conteúdo deste modelo será usado como ponto de partida para o novo modelo"> <i class="la la-lg la-question-circle text-primary"></i> </abbr> </label> <div class="col-sm-9 input"> <div> <select class="form-select" name="startTemplateUrl"> <option value="themes/modelo-branco/branco-template.html">Modelo em branco</option> <option value="themes/modelo1/index.html">Modelo 1 de L2</option> <option value="themes/modelo2/index.html">Modelo 3 de L2</option> <option value="themes/modelo3/index.html">Modelo 3 de L2 </option> </select> </div> </div> </div> <div class="mb-3 row" data-key="href"> <label class="col-sm-3 col-form-label">Nome da página</label> <div class="col-sm-9 input"> <div> <input name="title" type="text" value="Minha página" class="form-control" placeholder="Minha página" required> </div> </div> </div> <div class="mb-3 row" data-key="href"> <label class="col-sm-3 col-form-label">Nome do arquivo</label> <div class="col-sm-9 input"> <div> <input name="file" type="text" value="my-page.html" class="form-control" placeholder="index.html" required> </div> </div> </div> <div class="mb-3 row" data-key="href"> <label class="col-sm-3 col-form-label">Salvar na pasta</label> <div class="col-sm-9 input"> <div> <input name="folder" type="text" value="my-pages" class="form-control" placeholder="/" required> </div> </div> </div> </div> <div class="modal-footer"> <button class="btn btn-secondary btn-lg" type="reset" data-bs-dismiss="modal"><i class="la la-times"></i> Cancelar</button> <button class="btn btn-primary btn-lg" type="submit"><i class="la la-check"></i> Criar página</button> </div> </div> </form> </div> </div> A ideia aqui é salvar tudo que tiver depois do themes/demo1/
      quando ele salva so salva 
      my-pasta/index.html
      e quando for salva ele salva dentro de um pasta Projetos/MeuSite1
      Projetos/MeuSite2  e assim vai
      Este é o save.php
       
      <?php define('MAX_FILE_LIMIT', 1024 * 1024 * 2);//Tamanho máximo de arquivo HTML de 2 megabytes define('ALLOW_PHP', false);//verifique se o html salvo contém tag php e não salve se não for permitido define('ALLOWED_OEMBED_DOMAINS', [ 'https://www.youtube.com/', 'https://www.vimeo.com/', 'https://www.twitter.com/' ]);//carregar URLs apenas de sites permitidos para oembed function sanitizeFileName($file, $allowedExtension = 'html') { $basename = basename($file); $disallow = ['.htaccess', 'passwd']; if (in_array($basename, $disallow)) { showError('Nome de arquivo não permitido!'); return ''; } //sanitize, remova o ponto duplo .. e remova os parâmetros get, se houver $file = preg_replace('@\?.*$@' , '', preg_replace('@\.{2,}@' , '', preg_replace('@[^\/\\a-zA-Z0-9\-\._]@', '', $file))); if ($file) { $file = __DIR__ . DIRECTORY_SEPARATOR . $file; } else { return ''; } //permitir apenas extensão .html if ($allowedExtension) { $file = preg_replace('/\.[^.]+$/', '', $file) . ".$allowedExtension"; } return $file; } function showError($error) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); die($error); } function validOembedUrl($url) { foreach (ALLOWED_OEMBED_DOMAINS as $domain) { if (strpos($url, $domain) === 0) { return true; } } return false; } $html = ''; $file = ''; $action = ''; if (isset($_POST['startTemplateUrl']) && !empty($_POST['startTemplateUrl'])) { $startTemplateUrl = sanitizeFileName($_POST['startTemplateUrl']); $html = ''; if ($startTemplateUrl) { $html = file_get_contents($startTemplateUrl); } } else if (isset($_POST['html'])){ $html = substr($_POST['html'], 0, MAX_FILE_LIMIT); if (!ALLOW_PHP) { //if (strpos($html, '<?php') !== false) { if (preg_match('@<\?php|<\? |<\?=|<\s*script\s*language\s*=\s*"\s*php\s*"\s*>@', $html)) { showError('PHP não permitido!'); } } } if (isset($_POST['file'])) { $file = sanitizeFileName($_POST['file']); } if (isset($_GET['action'])) { $action = htmlspecialchars(strip_tags($_GET['action'])); } if ($action) { //ações do gerenciador de arquivos, excluir e renomear switch ($action) { case 'rename': $newfile = sanitizeFileName($_POST['newfile']); if ($file && $newfile) { if (rename($file, $newfile)) { echo "Arquivo '$file' renomeado para '$newfile'"; } else { showError("Erro ao renomear arquivo '$file' renomeado para '$newfile'"); } } break; case 'delete': if ($file) { if (unlink($file)) { echo "Arquivo '$file' excluído"; } else { showError("Erro ao excluir arquivo '$file'"); } } break; case 'saveReusable': //bloco ou seção $type = $_POST['type'] ?? false; $name = $_POST['name'] ?? false; $html = $_POST['html'] ?? false; if ($type && $name && $html) { $file = sanitizeFileName("$type/$name"); if ($file) { $dir = dirname($file); if (!is_dir($dir)) { echo "$dir pasta não existe\n"; if (mkdir($dir, 0777, true)) { echo "$dir pasta foi criada\n"; } else { showError("Erro ao criar pasta '$dir'\n"); } } if (file_put_contents($file, $html)) { echo "Arquivo salvo '$file'"; } else { showError("Erro ao salvar arquivo '$file'\nAs possíveis causas são falta de permissão de gravação ou caminho de arquivo incorreto!"); } } else { showError('Nome de arquivo inválido!'); } } else { showError("Faltam dados de elementos reutilizáveis!\n"); } break; case 'oembedProxy': $url = $_GET['url'] ?? ''; if (validOembedUrl($url)) { header('Content-Type: application/json'); echo file_get_contents($url); } else { showError('URL inválida!'); } break; default: showError("Ação inválida '$action'!"); } } else { //salvar pagina if ($html) { if ($file) { $dir = dirname($file); if (!is_dir($dir)) { echo "$dir pasta não existe\n"; if (mkdir($dir, 0777, true)) { echo "$dir pasta foi criada\n"; } else { showError("Erro ao criar pasta '$dir'\n"); } } if (file_put_contents($file, $html)) { echo "Arquivo salvo '$file'"; } else { showError("Erro ao salvar arquivo '$file'\nAs possíveis causas são falta de permissão de gravação ou caminho de arquivo incorreto!"); } } else { showError('O nome do arquivo está vazio!'); } } else { showError('O conteúdo HTML está vazio!'); } } Espero que possam entender o que preciso aqui....  fico no aguardo!  quando eu tento mudar a forma de salva no php, ele me da erro de que não foi salvo, e volta ao orginal como esta ai acima ele salva, talvez eu esteja escapando alguma coisa que não estou vendo.... 
    • Por violin101
      Caros amigos, saudações.
       
      Apenas uma pequena dúvida.
       
      Precisei realizar uma alteração de Validação de usuário/empresa.
       
      Antes essa linha de código estava assim:
      <input type="hidden" id="idEmps" name="idEmps" value="<?php echo $emprsa->idEmpresas; ?>" />  
      Precisei colocar [0] para poder localizar a Empresa Logada.
      <input type="hidden" id="idEmps" name="idEmps" value="<?php echo $emprsa[0]->idEmpresas; ?>" />  
      Agora, o sistema dá erro e não grava.
       
      minha dúvida: qual a função do [0]  e  como consigo corrigir ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, antes de recorrer a ajuda dos amigos, tentei de vários formas mas não consegui sucesso.
       
      Preciso criar uma Rotina com Acesso de Login parecido com o do Site Google.
       
      Tenho uma rotina que faz as Verificação do Usuário e Senha correto, mas após a verificação do Usuário/Senha, gostaria de ser redirecionado para uma Rotina onde possa Selecionar as Empresas vinculada/permissão para cada usuário, ou seja:
      o usuário 1 tem permissão para: Empresa 1 | Empresa 2
      o usuário 2 tem permissão para: Empresa 2
       
      Abaixo, posto o código que faço a verificação de Usuário/Senha.
      <!-- Código da VIEW --> <form class="form-vertical" id="formLogin" method="post" action="<?php echo base_url()?>index.php/admin/controle/verificarLogin"> <?php if ($this->session->flashdata('error') != null) {?> <div class="alert alert-danger"> <button type="button" class="close" data-dismiss="alert">×</button> <?php echo $this->session->flashdata('error');?> </div> <?php } ?> <div class="form-group"> <input type="text" id="email" name="email" class="form-control" placeholder="Email"> </div> <div class="form-group"> <input type="password" id="senha" name="senha" class="form-control" placeholder="Password"> </div> <div class="row"> <div class="col-6"> <a href="<?php echo base_url() ?>" class="btn btn-danger btn-block btn-flat"><i class="fa fa-undo"></i> Voltar ao Site</a> </div> <div class="col-6"> <button type="submit" class="btn btn-primary btn-block btn-flat pull-right">Acessar</button> </div> <!-- /.col --> </div> <div class="login-recup"> Esqueceu sua senha: <a href="<?php echo base_url()?>admin/controle/recupera"> clique aqui</a>. </div> </form>  
      //Código no Controller public function index() { if ((!session_id()) || (!$this->session->userdata('logado'))) { redirect('admin/controle/login'); } $this->load->view('estilo/header', $this->data); $this->load->view('admin/tema/topo'); $this->load->view('admin/tema/conteudo'); $this->load->view('estilo/footer'); } public function login() { $this->load->view('admin/controle/login'); } public function verificarLogin() { header('Access-Control-Allow-Origin: '.base_url()); header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); header('Access-Control-Max-Age: 1000'); header('Access-Control-Allow-Headers: Content-Type'); $this->load->library('form_validation'); $this->form_validation->set_rules('email', 'E-mail', 'valid_email|required|trim'); $this->form_validation->set_rules('senha', 'Senha', 'required|trim'); if ($this->form_validation->run() == false) { $json = array('result' => false, 'message' => validation_errors()); echo json_encode($json); } else { $email = $this->input->post('email'); $password = $this->input->post('senha'); $this->load->model('Admin/Controle_model'); $user = $this->Controle_model->check_credentials($email); if ($user) { if (password_verify($password, $user->senha)) { $session_data = array('nome' => $user->nome_user, 'email' => $user->email, 'id' => $user->idUsuarios, 'permissao' => $user->permissoes_idPermissao, 'logado' => true); $this->session->set_userdata($session_data); $json = array('result' => true); echo json_encode($json); //$this->envia(); } else { $json = array('result' => false, 'message' => 'Os dados de acesso estão incorretos.'); echo json_encode($json); } } else { $json = array('result' => false, 'message' => 'Usuário não encontrado, verifique se informou os dados corretamente.'); echo json_encode($json); } } die(); }  
      Como faço o redirecionamento para selecionar a Empresa Vinculada, antes de acessar o Sistema ?
       
      Grato,
       
      Cesar
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.