[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тернарный оператор
XCross
index.php

<?php
# # # # # # # # # # # # # # # # # # # # #
# @Script Name: index.php (Home Page) #
# @Autor: KMAKS #
# @Since: 4/09/2011 13:24 #
# # # # # # # # # # # # # # # # # # # # #


session_start(); # Starting session
error_reporting(E_ALL); # Show all error

header('Content-type: text/html; Charset=UTF-8'); # Send header

include 'system/functions.php'; # Site functions
include 'system/config.php'; # Site conf(Connect to DataBase server, auth)
include 'system/init_var.php'; # Initialization system vars


$sitePages = array(
/* Array all site pages */
'index', # Home Page
'register', # Register page
'login', # Auth page
'downloads', # Port Releases
'about', # Info
'feedback', # FeedBack...
);

if(in_array($site_page['name'], $sitePages)){

$site_page['caption'] = $captions[$site_page['name']];
var_dump($site_page);

}else{

var_dump($site_page);
# header("HTTP/1.0 404 Not Found");
# exit();


}






?>


init_var.php
<?php
$site_page['name'] = isset($_GET['page']) ? $_GET['page'] : 'index';
?>



Если не указать page, то $site_page['name'] присвоится '', а если убрать isset и не указать page, то все гуд. В чем проблема?

Если убрать проверку на существование переменной, то все гуд.

.htaccess
AddDefaultCharset UTF-8

Options -Indexes

RewriteEngine on
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]



Я так думаю, что это из-за ЧПУ? Нужно заменить isset на empty?



Спустя 11 минут, 11 секунд (4.09.2011 - 10:34) Invis1ble написал(а):
RewriteRule ^(.+)$ index.php?page=$1 [L,QSA]

Цитата
Я так думаю, что это из-за ЧПУ? Нужно заменить isset на empty?

можно и так

Спустя 27 секунд (4.09.2011 - 10:34) alex12060 написал(а):
Цитата
Если не указать page, то $site_page['name'] присвоится '', а если убрать isset и не указать page, то все гуд. В чем проблема?


Странные у тебя мысли :)

Если так:


$site_page['name'] = $_GET['page'] ? $_GET['page'] : 'index';


То в любом случае выполнится условие после ?
Тут не стоит условия как бы, и результат всегда будет true

Спустя 1 минута, 58 секунд (4.09.2011 - 10:36) XCross написал(а):
Цитата
Странные у тебя мысли :)


:D Забросил просто это дело. Сейчас опять захотелось что-нибудь сделать. Вот что делает лето с человеком =). Чуть расслабился и все, мозги стухли. Даж объяснить не могу.


Да, да. Ты меня кажись понял =)

$site_page['name'] = $_GET['page'] ? $_GET['page'] : 'index';


При таком раскладе все гуд, но. Если теперь перейти на http://localhost/0, то перейдет на index и 404 ошибки не будет, а ведь это минус уже =(

Спустя 9 минут, 11 секунд (4.09.2011 - 10:45) alex12060 написал(а):
Цитата

а ведь это минус уже =(


Да ладно? Оо
аха
Нет, не минус ниразу.
Если так, то поменяй на:


RewriteRule ^([a-zA-Z_-])$ index.php?page=$1 [L,QSA]

Спустя 1 минута, 29 секунд (4.09.2011 - 10:47) XCross написал(а):
Я не про отрицательные числа. а про то, что если наберешь в адресной строке такой URL:

site.ru/0
то попадешь на index...


Се, проблема решилась так:
$site_page['name'] = isset($_GET['page']) ? $_GET['page'] : 'index';

RewriteRule ^(.)$ index.php?page=$1 [L,QSA]



Всем спасибо, тема закрыта.

Спустя 21 час, 26 минут, 7 секунд (5.09.2011 - 08:13) linker написал(а):
Цитата (alex12060 @ 4.09.2011 - 10:34)
Если так:


$site_page['name'] = $_GET['page'] ? $_GET['page'] : 'index';


То в любом случае выполнится условие после ?
Тут не стоит условия как бы, и результат всегда будет true

TRUE будет если $_GET['page'] любое не пустое и не нулевое значение. Ошибка будет, если элемента с ключом page не существует. Всё остальное вернёт FALSE. Т.е. такое условие не всегда является истинным.


_____________
Обмен Ukash на WebMoney
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.