Ir para conteúdo

POWERED BY:

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

Ola, sobre Manutenção Difícil, eu fiz uma forma que toda vez que for fazer um ajsute etc.. ele automaticamente faz atualização no cliente entende... tipo para mim o codigo é normal, para o cliente ele vai ofuscado.....

 

 

Ele é um projeto que estou criando do zero no php puro sem uso de Framework 

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 luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
×

Informação importante

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