简体   繁体   English

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

[英]How to generate a HTML page dynamically using PHP?

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? 我想知道是否/如何为每个数据库行“创建”一个html页面,因为我认为这对SEO更好? Having multiple pages with keywords on rather than one dynamic page? 有多个带有关键字的页面,而不是一个动态页面?

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! 我的属性是通过网站上的表单/上载系统添加到数据库的,我当时认为创建上载页面可能是最简单的,但欢迎提出建议!

I was wondering if/how I can 'create' a html page for each database row ? 我想知道是否/如何为每个数据库行“创建” html页面

You just need to create one php file that generate an html template, what changes is the text based content on that page. 您只需要创建一个生成html模板的php文件,更改的就是该页面上基于文本的内容。 In that page is where you can get a parameter (eg. row id) via POST or GET and then get the info form the database. 在该页面中,您可以通过POSTGET获取参数(例如,行ID),然后从数据库获取信息。

I'm assuming this would be better for SEO? 我以为这对于SEO会更好?

Search Engine as Google interpret that example.php?id=33 and example.php?id=44 are 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.php and single.php ), because is better link this pages from the listing.php . Google将Google搜索引擎解释为example.php?id=33example.php?id=44是不同的页面, 是的 ,从SEO角度来看,这种方法比单个列表页面更好,因此您只需要两个php文件至少( listing.phpsingle.php ),因为最好从listing.php链接此页面。

Extra advice: 额外建议:

example.php?id=33 is really ugly and not very seo friendly, maybe you need some url rewriting code. example.php?id=33确实很丑,并且对seo不太友好,也许您需要一些url重写代码。 Something like example/properties/property-name is better ;) example/properties/property-name更好;)

Just in case someone wants to generate/create actual HTML file... 万一有人想生成/创建实际的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! 请享用!

As per your requirement you dont have to generate a html page dynamicaly. 根据您的要求,您不必动态生成html页面。 It can be done by .htaccess file . 可以通过.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文件,只需更改文件名的扩展名

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

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

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. 我建议您使用URL重写mod足以解决您的问题,我也遇到同样的问题,但是使用URL重写mod并获得良好的SEO响应。 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. 例如,您考虑使用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 示例:不带url重写mod的wordpress url-url重写模式后domain.com/?p=123-domain.com/ {文章标题}如domain.com/seo-url-rewrite-mod

i think you have understood what i want to say you 我想你已经了解了我想说的你

I've been working kind of similar to this and I have some code that might help you. 我一直在从事与此类似的工作,并且我有一些代码可能会对您有所帮助。 The live example is here and below, is the code I'm using for you to have it as reference. 在活生生的例子是在这里和下面,是我用你把它作为参考的代码。

create-page.php create-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. 希望此文件可以帮助并作为启动和增强您的项目的参考。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM