PHP включает в себя помощь - PullRequest
0 голосов
/ 02 августа 2011

Мне нужна помощь с моим PHP-кодом. Вот код, о котором я буду говорить:

<?php 
$default = 'about'; //Whatever default page you want to display if the file doesn't exist or you've just arrived to the home page. 
$page = isset($_GET['p']) ? $_GET['p'] : $default; //Checks if ?p is set, and puts the page in and if not, it goes to the default page. 
$page = basename($page); //Gets the page name only, and no directories. 
if (!file_exists('content/'.$page.'.php'))    { //Checks if the file doesn't exist 
    $page = $default; //If it doesn't, it'll revert back to the default page 
    //NOTE: Alternatively, you can make up a 404 page, and replace $default with whatever the page name is. Make sure it's still in the inc/ directory. 
} 
include('content/'.$page.'.php'); //And now it's on your page! 
?> 

Хорошо, это вызовет "about.php" в качестве моей индексной страницы из-за кодировки, следующей за ней. Тем не менее, я бы хотел, чтобы страница индекса по умолчанию вызывала страницу URL, например "http://www.mywebsite.com/frontpage/". Я пытался заменить" about "на URL, и он просто добавляет расширение" .php "в конец URL. и '/ content' в начале URL-адреса. Из-за этого я получаю сообщение об ошибке PHP.

Может ли кто-нибудь помочь мне с кодом, который будет делать то, что я действительно хочу (как обсуждалось выше)? Спасибо:)

Ответы [ 3 ]

0 голосов
/ 02 августа 2011

Вы не можете сделать это только с помощью PHP, поскольку веб-сервер должен знать, что делать с этим URL.Если вы используете Apache, вы можете использовать mod_rewrite для псевдонима example.com/frontpage, где находится PHP-скрипт frontpage.

Другой вариант - создать каталог frontpage вкорень документа и добавьте index.php в этот каталог, затем заставьте index.php загрузить фактическую главную страницу (или просто index.php содержит содержимое главной страницы).

РЕДАКТИРОВАТЬ: Я, вероятно, неправильно понял вопрос: если вы хотитеэтот скрипт для загрузки страницы по умолчанию из другого каталога, вы можете сделать:

if( $page == $default ) {
    include( 'path/to/frontpage/file.php' );
}
else {
    include('content/'.$page.'.php');
}
0 голосов
/ 02 августа 2011

Если я правильно понимаю вашу проблему, это должно сделать:

<?php 
$default = 'about'; //Whatever default page you want to display if the file doesn't exist or you've just arrived to the home page. 
$page = isset($_GET['p']) ? $_GET['p'] : $default; //Checks if ?p is set, and puts the page in and if not, it goes to the default page. 
$page = basename($page); //Gets the page name only, and no directories. 
if (!file_exists('content/'.$page.'.php'))    { //Checks if the file doesn't exist 
    $page = $default; //If it doesn't, it'll revert back to the default page 
    //NOTE: Alternatively, you can make up a 404 page, and replace $default with whatever the page name is. Make sure it's still in the inc/ directory. 
}
else {
    $page = 'content/'.$page.'.php';
}
include($page); //And now it's on your page! 
?>

Я должен отметить, что это плохая идея. Вместо того, чтобы просто включить файл, если он существует, вы должны ограничить его белым списком. Как if (in_array($page,array('frontpage,'about',...)) ....

0 голосов
/ 02 августа 2011

Вы можете использовать file_get_contents, например, include. Просто проверьте, является ли это внешний URL. И подумайте о безопасности. Возможно, вы можете получить доступ к некоторым файлам конфигурации или что-то без проверки $ _GET ['p'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...