如何使用 PHP 动态生成 HTML 页面?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/14871014/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 08:06:52  来源:igfitidea点击:

How to generate a HTML page dynamically using PHP?

phphtmlmysqldynamic

提问by rpsep2

I have a page which displays info about a property, based on the unique ID from the url, searching the mysql database for that ID, getting all the info from that row etc, fairly standard really.

我有一个页面,它根据 url 中的唯一 ID 显示有关属性的信息,在 mysql 数据库中搜索该 ID,从该行获取所有信息等,确实相当标准。

I was wondering if/how I can 'create' a html page for each database row, as I'm assuming this would be better for SEO? Having multiple pages with keywords on rather than one dynamic page?

我想知道是否/如何为每个数据库行“创建”一个 html 页面,因为我假设这对 SEO 会更好?有多个带有关键字的页面而不是一个动态页面?

My properties are added to the database by a form/ upload system on the site, I was thinking creating the page on upload might be easiest, but am open to suggestions!

我的属性通过网站上的表单/上传系统添加到数据库中,我认为在上传时创建页面可能最简单,但我愿意接受建议!

回答by Armand

Just in case someone wants to generate/create actual HTMLfile...

以防万一有人想生成/创建实际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);

Enjoy!

享受!

回答by Tom Sarduy

I was wondering if/how I can 'create' a html page for each database row?

我想知道是否/如何为每个数据库行“创建”一个 html 页面

You just need to create one phpfile that generate an html template, what changes is the text based content on that page. In that page is where you can get a parameter (eg. row id) via POSTor GETand then get the info form the database.

您只需要创建一个php生成 html 模板的文件,更改的是该页面上基于文本的内容。在该页面中,您可以通过POST或获取参数(例如行 ID)GET,然后从数据库获取信息。

I'm assuming this would be better for SEO?

我假设这对 SEO 会更好?

Search Engine as Google interpret that example.php?id=33and example.php?id=44are different pages, and yes, this way is better than single listing page from the SEO point of view, so you just need two php files at least (listing.phpand single.php), because is better link this pages from the listing.php.

搜索引擎如谷歌解释说example.php?id=33,并example.php?id=44有不同的页面,并,这种方式比从视SEO角度单一上市页更好,所以你只需要两个PHP文件至少(listing.phpsingle.php),因为是更好的联系这个网页从listing.php.

Extra advice:

额外建议:

example.php?id=33is really ugly and not very seo friendly, maybe you need some url rewriting code. Something like example/properties/property-nameis better ;)

example.php?id=33真的很丑,而且不是很 seo 友好,也许你需要一些 url 重写代码。类似的东西example/properties/property-name更好;)

回答by sandip

As per your requirement you dont have to generate a html page dynamicaly. It can be done by .htaccess file .

根据您的要求,您不必动态生成 html 页面。它可以通过 .htaccess 文件来完成。

Still this is sample code to generate HTML Page

这仍然是生成 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");
?>

you can create any .html , .php file just change extention in file name

您可以创建任何 .html , .php 文件,只需更改文件名的扩展名

回答by Yashankit Vyas

You dont need to generate any dynamic html page, just use .htaccess file and rewrite the URL.

您不需要生成任何动态 html 页面,只需使用 .htaccess 文件并重写 URL。

回答by KAZZABE

I've been working kind of similar to this and I have some code that might help you. The live example is hereand below, is the code I'm using for you to have it as reference.

我一直在做与此类似的工作,我有一些可能对您有所帮助的代码。现场示例在这里和下面,是我用来供您参考的代码。

create-page.php

创建-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's 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's 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's 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's 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');

?>

Hope this file can help and work as reference to start and boost your project.

希望这个文件可以帮助并作为参考来启动和提升你的项目。

回答by KAZZABE

It looks funny but it works.

它看起来很有趣,但它有效。

<?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);
?>

回答by santosh

I suggest you to use URL rewrite mod is enough for your problem,I have the same problem but using URL rewrite mod and getting good SEO response. I can give you a small example. Example is that you consider WordPress , here the data is stored in database but using URL rewrite mod many WordPress websites getting good responses from Google and got rank also.

我建议您使用 URL rewrite mod 足以解决您的问题,我有同样的问题,但使用 URL rewrite mod 并获得良好的 SEO 响应。我可以给你举个小例子。例如,您考虑使用 WordPress ,这里的数据存储在数据库中,但使用 URL 重写 mod 很多 WordPress 网站从 Google 获得了良好的响应并获得了排名。

Example: wordpress url with out url rewrite mod -- domain.com/?p=123 after url rewrite mode -- domain.com/{title of article} like domain.com/seo-url-rewrite-mod

示例:wordpress url 没有 url rewrite mod -- domain.com/?p=123 after url rewrite mode -- domain.com/{title of article} like domain.com/seo-url-rewrite-mod

i think you have understood what i want to say you

我想你已经明白我想对你说的话了

回答by Julien

I'll just update the code to contain the changes, and comment it to so that you can see what's going on clearly...

我只会更新代码以包含更改,并对其进行注释,以便您可以清楚地看到发生了什么......

<?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's 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");