Помощ - Търсене - Потребители - Събития
Пълна версия: Стартиране на сайт с променливи
GGbit.info > Hi-Tech > Web разработка
bogastyle
Здравейте. Направил съм си страничка, в която всеки линк от менюто инклудва различен php файл. Интересувам се обаче, как да направя така, че когато за първи път се влезе във фаила да се зареди точно определена информация, която после ще се подменя от менюто.
Пример меню:
CODE
<a href="index.php?go=link1">link1</a>
<a href="index.php?go=link2">link2</a>
<a href="index.php?go=start">link3</a>



Във страницата:
CODE
<?php if (file_exists ("$go.php")) {
include("$go.php");
}
else {
echo "UNDERCONSTRUCTION";
}


Става въпрос за link3. Когато го натисна ще зареди start.php. Аз обаче искам когато потребителя влезе в сайта също да се зареди start.php на указаното място. Един вид още в самото начало да задам променлива на индекса.

Може би някаква сесия или бисквитка, ама не са ми ясни.

Моля за компетентната ви помощ! Благодаря!
Relevant Advertise!
QuaKy
Код
$go = empty($_GET['go']) ? 'start' : $_GET['go'];

Така ако няма въведена стойност за go, т.е. никой не е кликнал на някой от линковете, $go ще е равно на start. Друг начин е със суич. Например нещо от сорта на:
Код
switch ($go) {
case 'link1' : include("$go.php"); break;
case 'link2' : include("$go.php"); break;
case 'start' : include("$go.php"); break;
default : include("start.php"); break;
}


Само да спомена, че нещо базирано на втория пример, ще е доста по-сигурно от първия (както и твоя като цяло), тъй като такъв код позволява на някой лош батко да include-не който си иска файл. Престави си, че вместо index.php?go=start, някой напише index.php?go=http://bad-site.com/bad-code (ти автоматично ще допълниш .php със скрипта си). Както, надявам се, виждаш, това не би било много риятно wink.gif. Най-сигурния метод за защита е да не ползваш include-ване на променливи, но ако все пак го ползваш, използваш switch както във втория пример. Така ако някой въведе нещо, което го няма като "case", то ще изпълни default-а и ще include-не start.php

P.S. Да добавя само, че начина по който си го написал, подсказва, че най-вероятно имаш включени register globals. Това също е сериозна опасност, за това най-добре ги изключи в php.ini или например с ini_set в кода си smile.gif.
vIkToRsHeFa
Цитат(QuaKy @ Jan 23 2008, 16:08) *
Само да спомена, че нещо базирано на втория пример, ще е доста по-сигурно от първия (както и твоя като цяло), тъй като такъв код позволява на някой лош батко да include-не който си иска файл. Престави си, че вместо index.php?go=start, някой напише index.php?go=http://bad-site.com/bad-code (ти автоматично ще допълниш .php със скрипта си). Както, надявам се, виждаш, това не би било много риятно wink.gif. Най-сигурния метод за защита е да не ползваш include-ване на променливи, но ако все пак го ползваш, използваш switch както във втория пример. Така ако някой въведе нещо, което го няма като "case", то ще изпълни default-а и ще include-не start.php
Проверката базирана на ползване на суич е може би най-сигурното решение когато човек има краен брой варианти. Онази първата е крайно несигурна. Иначе за инклуда... Ако не се лъжа повечето хостери по дефаулт изключват при самото компилиране на php-то възможноста за инклудвания от екстернал сайтове, но пак си е опасно тъй като може да работи със файловете налични на самият сървър, което никак ама никак не е добре... :>

ПП. Едно време като хакваха сайта на битивито по тоя начин с екстернал инклужън аднаха хакерският код за да дефейснат страницата, има ги всякакви, но предимно руски, направо мини админ панелчета за сайта. smile.gif


Цитат(QuaKy @ Jan 23 2008, 16:08) *
P.S. Да добавя само, че начина по който си го написал, подсказва, че най-вероятно имаш включени register globals. Това също е сериозна опасност, за това най-добре ги изключи в php.ini или например с ini_set в кода си smile.gif.
Мммм Опасност е, ако не си задава правилно променливите иначе доста популярни приложения и до ден днешен отказват да работят без него. Иначе при една добра филтрация на входните данни не би трябвало да има каквито и да било проблеми. smile.gif
bogastyle
Тоава със Switch ми харесва. Сигурно съм направил грешки в кода, но съм още начинаещ. Уча се от спецове във форумите, но не всичко ми е ясно.

В случая не разбрах как точно да вържа тези case с менюто. Дайте примерен код за меню с Link1 Link2 и Home (default case), ако не е много нахално. Благодаря ви пак за отговорите.
QuaKy
E то това е беше примерният код.

switch ($var) {
case 'neshto' : code; ще рече, че "code" кодът ще се изпълни само при положение, че стойността на $var == 'neshto' .

П.С.1. За протокола, обикновено се нарича RFI - Remote file inclusion.
П.С.2. Според мен, включен register globals си е опасност за сигурността, каквото и да си говорим.
bogastyle
Разбрах! Много Благодаря за помощта! rolleyes.gif
Това е "lo-fi" версия на нашия форум. За да видите пълната версия, моля натиснете тук.
Invision Power Board © 2001-2018 Invision Power Services, Inc.