wake-up-neo.net

Wie generiert man eine HTML-Seite dynamisch mit PHP?

Ich habe eine Seite, die Informationen zu einer Eigenschaft anzeigt, basierend auf der eindeutigen ID aus der URL, die MySQL-Datenbank nach dieser ID durchsucht, alle Informationen aus dieser Zeile abgerufen usw., ziemlich normal. 

Ich habe mich gefragt, ob/wie ich eine HTML-Seite für jede Datenbankzeile "erstellen" kann, da ich davon ausgehe, dass dies für SEO besser wäre. Mehrere Seiten mit Schlüsselwörtern auf einer dynamischen Seite?

Meine Eigenschaften werden durch ein Formular-/Upload-System auf der Website zur Datenbank hinzugefügt. Ich dachte, das Erstellen der Seite beim Hochladen wäre vielleicht am einfachsten, aber ich bin offen für Vorschläge!

11
rpsep2

Ich habe mich gefragt, ob/wie ich eine HTML-Seite für jede Datenbankzeile "erstellen" kann ?

Sie müssen lediglich eine php-Datei erstellen, die eine HTML-Vorlage generiert. Die Änderungen betreffen den auf Text basierenden Inhalt dieser Seite. Auf dieser Seite können Sie einen Parameter (z. B. Zeilen-ID) über POST oder GET abrufen und dann die Informationen aus der Datenbank abrufen.

Ich gehe davon aus, dass dies für SEO besser wäre?

Suchmaschine als Google interpretiert, dass example.php?id=33 und example.php?id=44 unterschiedliche Seiten sind und ja , dies ist aus SEO-Sicht besser als eine einzige Auflistungsseite. Sie benötigen also mindestens zwei PHP-Dateien (listing.php und single.php). weil es besser ist, diese Seiten vom listing.php aus zu verlinken. 

Zusätzliche Hinweise:

example.php?id=33 ist wirklich hässlich und nicht sehr ansehnlich, vielleicht benötigen Sie Code zum Umschreiben von URLs. So etwas wie example/properties/property-name ist besser;)

21
Tom Sarduy

Für den Fall, dass jemand eine HTML-Datei erzeugen/erstellen möchte ...

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

Genießen! 

18
Armand

Gemäß Ihrer Anforderung müssen Sie keine HTML-Seite dynamisch generieren. Dies kann über die . htaccess-Datei erfolgen.

Dies ist immer noch Beispielcode zum Generieren einer HTML-Seite

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

sie können eine beliebige .html-, .php-Datei erstellen, indem Sie die Erweiterung im Dateinamen ändern

8
sandip

Sie brauchen keine dynamische HTML-Seite zu generieren, verwenden Sie einfach die .htaccess-Datei und schreiben Sie die URL neu.

3
Yashankit Vyas

Es sieht komisch aus, aber es funktioniert.

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

Ich habe so ähnlich gearbeitet und ich habe einen Code, der Ihnen helfen könnte. Das Live-Beispiel ist hier und unten ist der Code, den ich für Sie verwende, um ihn als Referenz zu haben. 

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

?>

Ich hoffe, diese Datei kann helfen und als Referenz dienen, um Ihr Projekt zu starten und zu steigern.

1
KAZZABE

Ich schlage vor, Sie verwenden den URL-Umschreibungsmodus für Ihr Problem. Ich habe das gleiche Problem, aber mit dem URL-Umschreibungsmodus und einer guten SEO-Antwort. Ich kann Ihnen ein kleines Beispiel geben. Ein Beispiel ist, dass Sie WordPress in Betracht ziehen, hier werden die Daten in der Datenbank gespeichert, aber bei Verwendung des URL-Umschreibungsmoduls erhalten viele WordPress-Websites gute Antworten von Google und erhielten Rang.

Beispiel: WordPress-URL mit out-URL umschreiben mod - domain.com/?p=123 nach dem Umschreiben von URLs - domain.com/{title of article} wie domain.com/seo-url-rewrite-mod

ich glaube, du hast verstanden, was ich dir sagen will

1
santosh

Ich werde einfach den Code aktualisieren, um die Änderungen zu enthalten, und ihn kommentieren, damit Sie sehen können, was los ist ... 

<?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");
0
Julien