我對這個問題的長度表示歉意,並且想提前說聲謝謝。MySQL PHP CMS創建URL(需要編輯)
下面是有問題的代碼片段。我有一個MySQL表,用於存儲基於本教程的自定義PHP MySQL CMS程序的信息:cms tutorial。正如您在「列表頁面」和「顯示管理」功能中所看到的,該URL是使用基本URL和ID以及標題構建的。該ID是MySQL表中的主鍵,用於提取所有必要的信息以顯示在頁面上。我將如何重寫下面的代碼,以便它僅在URL中顯示標題而不在ID中顯示標題,但是仍然將ID作爲用於在頁面中顯示信息的唯一標識符?
來自的functions.php:
'// Display center bottom column
function centerbottomcolumn() {
if ($_GET['id']) {
$pageID = (int) $_GET['id'];
$result = mysql_query("SELECT centerbottomcolumn FROM pages WHERE id='$pageID'");
$row = mysql_fetch_array($result);
echo $row['centerbottomcolumn'];
} else {
$result = mysql_query("SELECT value FROM settings WHERE name='homePage'");
$row = mysql_fetch_array($result);
$pageID = $row['value'];
$result = mysql_query("SELECT centerbottomcolumn FROM pages WHERE title='$pageID'");
$row = mysql_fetch_array($result);
echo $row['centerbottomcolumn'];
}
}
// List the pages
function listPages() {
// List the home page first
$result = mysql_query("SELECT value FROM settings WHERE name='homePage'");
$row = mysql_fetch_array($result);
$homeID = $row['value'];
$result = mysql_query("SELECT title FROM pages WHERE id='$homeID'");
$row = mysql_fetch_array($result);
$homeTitle = $row['title'];
echo "<li><a href='" . BASE_URL . "/index.php'>$homeTitle</a></li>";
// List the rest of the pages
$result = mysql_query("SELECT id, title FROM pages");
while ($row = mysql_fetch_array($result)) {
// Do not list the home page twice
if ($row['title'] != $homeID) {
$pageID = $row['title'];
$pageTitle = $row['title'];
echo "<li><a href='" . BASE_URL . "/?id=$id&title=$pageTitle'>$pageTitle</a></li>";
}
}
}
// Display admin table
function displayAdmin() {
// Find the home page ID
$result = mysql_query("SELECT value FROM settings WHERE name='homePage'");
$row = mysql_fetch_array($result);
$homeID = $row['value'];
// Display a table
$result = mysql_query("SELECT id, title, date FROM pages");
echo '<table width="961">';
echo '<tr height="50">
<th align="left">ID</th>
<th align="left">Title of the Page</th>
<th align="left">Date Created</th>
<th align="left">Actions</th>
</tr>';
while ($row = mysql_fetch_array($result)) {
$id = $row['id'];
$title = $row['title'];
$date = date('M d, Y', $row['date']);
echo "<tr>
<td>$id</td>
<td><a href='". BASE_URL . "/id=$id&title=$title'>$title</a>";
if ($id == $homeID) {
echo ' <strong>(Home Page)</strong>';
}
echo "</td>
<td>$date</td>
<td><a href='edit.php?id=$id'>Edit</a></td><td>
<a href='confirm.php?id=$id'>Delete</a></td><td>
<a href='sethome.php?id=$id'>Set as Home</a>";
}
echo '</table>';
}
// Get array with page IDs
function getArray() {
$result = mysql_query("SELECT id FROM pages");
$IDs = array();
$i = 0;
while ($row = mysql_fetch_array($result)) {
$IDs[$i] = $row['id'];
$i++;
}
return $IDs;
}
From index.php:
(above head tag)
require_once 'functions.php';
connect();
$IDs = getArray();
(from body)
<?php if (in_array($_GET['id'], $IDs) || !$_GET): ?>
<?php centerbottomcolumn(); ?>
<?php else: ?>
<!-- Show a not found error -->
<p>Not found</p>
<?php endif; ?>'
我該怎麼做呢?對不起,我對此很新。隨我去學習! – KGDD
一個典型的實現是在創建記錄時生成guid並存儲guid列中的每條記錄。您可以使用自己的算法進行guid生成或使用您的語言或數據庫提供的算法(例如MySql中的uuid())。向guid添加一個唯一的索引。那麼,無論你在哪裏使用ID,都可以使用guid。你仍然需要傳遞它,但是你降低了某人猜測下一個GUID的概率。但爲什麼你想隱藏身份證號碼?真正的解決方案可能是防止授權訪問。 –
我不想阻止訪問。我需要ID從表格中提取頁面信息。所以我希望通過.htaccess隱藏URL中的id,並在.htaccess中指定一系列id編號,但還沒有想出如何。所以我正在探索所有的選擇。 – KGDD