DRAP AND DROP
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
<?phpdefine('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....Discussão (5)
Carregando comentários...