Создание MySQL PHP CMS URL (необходимо редактировать) - PullRequest
0 голосов
/ 20 октября 2011

Я прошу прощения за длину этого вопроса, и хотел бы сказать спасибо заранее.

Ниже приведен фрагмент рассматриваемого кода.У меня есть таблица MySQL, в которой хранится информация из пользовательской программы PHP MySQL CMS, основанной на этом учебном пособии: учебное пособие по cms .Как вы можете видеть на страницах списка и в функциях Display Admin, URL строится с использованием базового URL и идентификатора, а также заголовка.Идентификатор - это первичный ключ в таблице MySQL, который извлекает всю необходимую информацию для отображения на странице.Как бы я переписал приведенный ниже код, чтобы он отображал заголовок только в URL-адресе, а не в идентификаторе, но при этом не использовался идентификатор в качестве уникального идентификатора для отображения информации на страницах?

Из 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; ?>'

1 Ответ

1 голос
/ 21 октября 2011

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

...