Как сгенерировать HTML-страницу динамически с помощью PHP?

У меня есть страница, которая отображает информацию о свойстве на основе уникального идентификатора из URL-адреса, который ищет базу данных mysql для этого идентификатора, получая всю информацию из этой строки и т.д., довольно стандартно.

Мне было интересно, если/как я могу "создать" html-страницу для каждой строки базы данных, так как я предполагаю, что это будет лучше для SEO? Наличие нескольких страниц с ключевыми словами, а не одной динамической страницы?

Мои свойства добавляются в базу данных с помощью формы/системы загрузки на сайте, я думал, что создание страницы при загрузке может быть проще всего, но я открыт для предложений!

Ответ 1

Мне было интересно, если/как я могу "создать" html-страницу для каждой строки базы данных?

Вам просто нужно создать один php файл, который генерирует html-шаблон, какие изменения будут текстовым контентом на этой странице. На этой странице вы можете получить параметр (например, идентификатор строки) через POST или GET, а затем получить информацию из базы данных.

Я предполагаю, что это будет лучше для SEO?

Поисковая система Google интерпретирует, что example.php?id=33 и example.php?id=44 - разные страницы, а да, этот способ лучше, чем отдельная страница с точки зрения SEO, поэтому вам просто нужно два php файлы, по крайней мере (listing.php и single.php), потому что лучше связывать эти страницы с listing.php.

Дополнительные советы:

example.php?id=33 действительно уродливый и не очень дружелюбный к SEO, возможно, вам нужен код перезаписи URL. Что-то вроде example/properties/property-name лучше;)

Ответ 2

На всякий случай кто-то хочет создать/создать фактический файл HTML...

$myFile = "filename.html"; // or .php   
$fh = fopen($myFile, 'w'); // or die("error");  
$stringData = "your html code php code goes here";   
fwrite($fh, $stringData);
fclose($fh);

Наслаждайтесь!

Ответ 3

В соответствии с вашим требованием вам не нужно генерировать динамическую страницу html. Это можно сделать .htaccess.

Тем не менее это пример кода для создания HTML-страницы

<?php

 $filename = 'test.html';
 header("Cache-Control: public");
 header("Content-Description: File Transfer");
 header("Content-Disposition: attachment; filename=$filename");
 header("Content-Type: application/octet-stream; ");
 header("Content-Transfer-Encoding: binary");
?>

вы можете создать любой файл .html,.php, просто изменив расширение в имени файла

Ответ 4

Вам не нужно создавать какую-либо динамическую страницу html, просто используйте файл .htaccess и перепишите URL-адрес.

Ответ 5

Я предлагаю вам использовать URL-код перезаписи, достаточный для вашей проблемы, у меня такая же проблема, но с использованием мода перезаписи URL и получения хорошего ответа от SEO. Я могу привести небольшой пример. Пример заключается в том, что вы рассматриваете WordPress, здесь данные хранятся в базе данных, но с использованием перезаписи URL-адресов многие веб-сайты WordPress получают хорошие ответы от Google и получают звание также.

Пример: wordpress url с кодом url переписать - domain.com/?p=123 после перезаписи URL-адреса - domain.com/{title статьи}, например domain.com/seo-url-rewrite-mod

Я думаю, вы поняли, что я хочу сказать вам.

Ответ 6

Я просто обновляю код, чтобы содержать изменения, и прокомментирую его, чтобы вы могли ясно видеть, что происходит...

<?php   
include("templates/header.htm");   

// Set the default name 
$action = 'index'; 
// Specify some disallowed paths 
$disallowed_paths = array('header', 'footer'); 
if (!empty($_GET['action'])) { 
    $tmp_action = basename($_GET['action']); 
    // If it not a disallowed path, and if the file exists, update $action 
    if (!in_array($tmp_action, $disallowed_paths) && file_exists("templates/{$tmp_action}.htm")) 
        $action = $tmp_action; 
} 
// Include $action 
include("templates/$action.htm"); 

include("templates/footer.htm");

Ответ 7

Я работал с подобным образом, и у меня есть код, который может вам помочь. Живой пример здесь и ниже, это код, который я использую для вас, чтобы он был ссылкой.

создать-page.php

<?php

// Session is started.
session_start();

// Name of the template file.
$template_file = 'couples-template.php';

// Root folder if working in subdirectory. Name is up to you ut must match with server folder.
$base_path = '/couple/';

// Path to the directory where you store the "couples-template.php" file.
$template_path = '../template/';

// Path to the directory where php will store the auto-generated couple pages.
$couples_path = '../couples/';

// Posted data.
$data['groom-name'] = str_replace(' ', '', $_POST['groom-name']);
$data['bride-name'] = str_replace(' ', '', $_POST['bride-name']);
// $data['groom-surname'] = $_POST['groom-surname'];
// $data['bride-surname'] = $_POST['bride-surname'];
$data['wedding-date'] = $_POST['wedding-date'];
$data['email'] = $_POST['email'];
$data['code'] = str_replace(array('/', '-', ' '), '', $_POST['wedding-date']).strtoupper(substr($data['groom-name'], 0, 1)).urlencode('&').strtoupper(substr($data['bride-name'], 0, 1));

// Data array (Should match with data above order).
$placeholders = array('{groom-name}', '{bride-name}', '{wedding-date}', '{email}', '{code}');

// Get the couples-template.php as a string.
$template = file_get_contents($template_path.$template_file);

// Fills the template.
$new_file = str_replace($placeholders, $data, $template);

// Generates couple URL and makes it frendly and lowercase.
$couples_url = str_replace(' ', '', strtolower($data['groom-name'].'-'.$data['bride-name'].'.php'));

// Save file into couples directory.
$fp = fopen($couples_path.$couples_url, 'w');
fwrite($fp, $new_file);
fclose($fp);

// Set the variables to pass them to success page.
$_SESSION['couples_url'] = $couples_url;
// If working in root directory.
$_SESSION['couples_path'] = str_replace('.', '', $couples_path);
// If working in a sub directory.
//$_SESSION['couples_path'] = substr_replace($base_path, '', -1).str_replace('.', '',$couples_path);

header('Location: success.php');

?>

Надеемся, что этот файл может помочь и работать как ссылка для запуска и повышения вашего проекта.

Ответ 8

Это выглядит забавно, но оно работает.

<?php 
$file = 'newpage.html';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new person to the file
$current .= "<!doctype html><html>
<head><meta charset='utf-8'>
<title>new file</title>
</head><body><h3>New HTML file</h3>
</body></html>
";
// Write the contents back to the file
file_put_contents($file, $current);
?>