Как става FILE.PHP?**=******* (модули)

valqka

Registered
Здравейте, искам да Ви попитам как да направя нещо което всъщност и аз незнам какво точно е ...
Исками се да направя нещо като модули - незнам дали точно така да го нарека, много сайтове използват такъв php script .. Честно казано не съм много наясно ... например имам 1 index.php и искам да направя като се напише например: sait.com/index.php?videa=mu - да се отваря index.php файла нали там целият му, дизайн, ала бала всичко и точно на едно определено място да се include съдържанието на файла mu.php или mu.html който съответно ще се намира в папка /videos - например. Мисълта ми е в index.php като се напише това ?videa=mu например и както си е в индекса там на точно определено място например ако в mu.php има някакаф код за видео в youtube и този същият код да се показва на точно определено място кадето да съответно ще се показват и всички други ?videa=IME_NA_FAILA (.php, който ще бъде в папка - /video - naprimer), и така общо взета като include функцията самоче ми се иска да е по-динамично и вместо да си играя да правя 100 страници да направя от 1 .index.php да може същата "кожа" (style), същият код какъвто си е на index.php такъв да си остане само една определена част да се променя ...
Стана доста заплетено, неподредено и неястно, за което моля да ме извините. Надявам се че някой от Вас който разбира от точно такива работи ме е разбрал. Моля ако някой може да ми даде код с което да направя това. Благодаря Ви предварително. Поздрави. :)
 
PHP:
<?
$_GET['m'] = htmlspecialchars($_GET['m']);
if (!isset($_GET['m'])){
	$page = "modules/index.php";
}else{
	if (!isset($_GET['ext']) || $_GET['ext'] == ''){
		if ($_GET['m'] == "home") {
			$page = "modules/index.php";
		}else{
		if ($_GET['m']) {
$page = "modules/" . $_GET['m'] . "/index.php";
	}else{
				$page = "modules/index.php";
			}
		}
	}else{
		if ($_GET['m']) {

$page = "modules/" . $_GET['m'] . "/" . $_GET['ext'] . ".php";
}else{
			$page = "modules/index.php";
		}
	}
}
if(!file_exists($page))
{
echo 'Грешка 404';
}
else
{
include("$page");
}
?>
Така?
 
Не ползвай горния скрипт, защото е много уязвим към атаки. Най-добре е да изброиш страниците (файловете), които могат да се ползват.
 
StormBreaker каза:
Не ползвай горния скрипт, защото е много уязвим към атаки. Най-добре е да изброиш страниците (файловете), които могат да се ползват.
Исками се да не ги изброявам а направо index.php?***=STRANICA (без .php) да се отваря автоматично (ако я има а ако я няма да връща грешка)
 
Styl3rbg, Благодаря ти за бързият отговор и за скрипта. Понеже съм ламер в буквалняит смисъл много бих се радвал ако ти се занимава за 2/3 минути да напишеш малко пояснение към скрипта - кое какво прави в общи линии. Благодаря за скрипта отново ще го разгледам 10/15 мин., и ще се опитам да му проследя мисълта, и ще го тествам след това
 
valqka каза:
StormBreaker каза:
Не ползвай горния скрипт, защото е много уязвим към атаки. Най-добре е да изброиш страниците (файловете), които могат да се ползват.
Исками се да не ги изброявам а направо index.php?***=STRANICA (без .php) да се отваря автоматично (ако я има а ако я няма да връща грешка)

Ако не ги изброиш ще имаш сериозна дупка в сигурността. Така всеки може да си инклудва който си иска файл.
 
ако имаш един index.php и в него имаш
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'];
}


if (isset($page)) {
switch($page) {
case 'login' :
include $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'modules/login.php';
break;
case 'register' :
include $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'components/register.php';
break;

}
}
elseif (!isset($page)) {
include $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'default_page.php';
}
?>



и сега ако въведеш линка
site.com/index.php?page=login

ще ти зареди логин модула и ако отвориш
site.com/index.php?page=register

ще ти зареди страница за регистриране, а ако прост въведеш
site.com, ще ти зареди default_page.php , което ще ти бъде страницата по подразбиране.

Т.е линк от вида index.php?нещо=файл&нещо2=файл2 се получават като във формата, с която пренасочваш обработващият скрипт или просто ти си въведеш адреса в браузъра, въведеш метод GET и след това например на дадено меню за линк към логин модула даваш в индекса :
<li><a href='<?php echo $_SERVER['HTTP_HOST'] . DIRECTORY_SEPARATOR'; ?>index.php?page=login'>ЛОГИН</a></li>
 
nbacool2, Благодаря ти и на теб, обаче ми трябва скрипт в който да не въвеждам ръчно страниците който могат да бъдат отворени а той автоматично да проверява например дали в папка /video има такава страница и ако има да "include" (или нещо подобно) съдържанието и в точно определено място - например правя един div и в него точно искам да се "include" съдържанието на файл video1.php който се намира в папка /videos като се напише sait.com/index.php?videota=video1 ...
 
Може би не имаш правилен подход. По-добре е да съхраняваш в база данни кой потребител какви клипове има или е качил.
 
nbacool2, пич този скрипт ми трябва за моят персонален сайт в смисъл - там няма регистраций там просто ще слагам мои файлове клипове и т.н..
 
Извинявам се за ламерския въпрос, но ...
Първият даден скрипт, как бачка? :D

за този става дума:

PHP:
<?
$_GET['m'] = htmlspecialchars($_GET['m']);
if (!isset($_GET['m'])){
        $page = "modules/index.php";
}else{
        if (!isset($_GET['ext']) || $_GET['ext'] == ''){
                if ($_GET['m'] == "home") {
                        $page = "modules/index.php";
                }else{
                if ($_GET['m']) {
$page = "modules/" . $_GET['m'] . "/index.php";
        }else{
                                $page = "modules/index.php";
                        }
                }
        }else{
                if ($_GET['m']) {

$page = "modules/" . $_GET['m'] . "/" . $_GET['ext'] . ".php";
}else{
                        $page = "modules/index.php";
                }
        }
}
if(!file_exists($page))
{
echo 'Грешка 404';
}
else
{
include("$page");
}
?>
 
valqka каза:
Извинявам се за ламерския въпрос, но ...
Първият даден скрипт, как бачка? :D

за този става дума:

PHP:
<?
$_GET['m'] = htmlspecialchars($_GET['m']);
if (!isset($_GET['m'])){
        $page = "modules/index.php";
}else{
        if (!isset($_GET['ext']) || $_GET['ext'] == ''){
                if ($_GET['m'] == "home") {
                        $page = "modules/index.php";
                }else{
                if ($_GET['m']) {
$page = "modules/" . $_GET['m'] . "/index.php";
        }else{
                                $page = "modules/index.php";
                        }
                }
        }else{
                if ($_GET['m']) {

$page = "modules/" . $_GET['m'] . "/" . $_GET['ext'] . ".php";
}else{
                        $page = "modules/index.php";
                }
        }
}
if(!file_exists($page))
{
echo 'Грешка 404';
}
else
{
include("$page");
}
?>

И аз имам един "ламерски" въпрос. Защо не седнете да научите основите на PHP пък после да правите скриптове. Разбирам да няма от къде но само в този форум има поне няколко хиляди урока.. А има и други форуми и сайтове за уроци!
 
t0shk0 каза:
valqka каза:
Извинявам се за ламерския въпрос, но ...
Първият даден скрипт, как бачка? :D

за този става дума:

PHP:
<?
$_GET['m'] = htmlspecialchars($_GET['m']);
if (!isset($_GET['m'])){
        $page = "modules/index.php";
}else{
        if (!isset($_GET['ext']) || $_GET['ext'] == ''){
                if ($_GET['m'] == "home") {
                        $page = "modules/index.php";
                }else{
                if ($_GET['m']) {
$page = "modules/" . $_GET['m'] . "/index.php";
        }else{
                                $page = "modules/index.php";
                        }
                }
        }else{
                if ($_GET['m']) {

$page = "modules/" . $_GET['m'] . "/" . $_GET['ext'] . ".php";
}else{
                        $page = "modules/index.php";
                }
        }
}
if(!file_exists($page))
{
echo 'Грешка 404';
}
else
{
include("$page");
}
?>

И аз имам един "ламерски" въпрос. Защо не седнете да научите основите на PHP пък после да правите скриптове. Разбирам да няма от къде но само в този форум има поне няколко хиляди урока.. А има и други форуми и сайтове за уроци!
Много ми се иска да те поставя на място ама айде няма. :evil:
Защо спамиш, защо се заяждаш - защото си търсиш някой да ти нарита жалкият задник ... то се знае, ама няма да съм аз защото просто не ми се занимава с отрепки като теб.

-------------------------------------------------
Сериозно питам как бачка кода на какъв принцип, каде трябва да се постави в моят index.php (в началото ли в края ли ...), и каде трябва да са файловете който ще отваря в коя директория и как ще ги отваря- демек какво трябва да се напише? index.php?m=fail ? - пробвах ама нещо нестана. Ако може някой да обесни човешки и нормално ще съм му благодарен. (Моля комплексарите и хората който няма да го направят да си трят.)
 
StormBreaker каза:
valqka каза:
StormBreaker каза:
Не ползвай горния скрипт, защото е много уязвим към атаки. Най-добре е да изброиш страниците (файловете), които могат да се ползват.
Исками се да не ги изброявам а направо index.php?***=STRANICA (без .php) да се отваря автоматично (ако я има а ако я няма да връща грешка)

Ако не ги изброиш ще имаш сериозна дупка в сигурността. Така всеки може да си инклудва който си иска файл.
Точно за това искам да се include-ват само файлове от определена директория, в която ще поставям само файлове който трябва да се include.
 
Много ми се иска да те поставя на място ама айде няма. Evil or Very Mad
Защо спамиш, защо се заяждаш - защото си търсиш някой да ти нарита жалкият задник ... то се знае, ама няма да съм аз защото просто не ми се занимава с отрепки като теб.

Хайде давай де.. наритай ме :cry: Много ви обичам такива биячи :D:D Ако не си забелязал в този скрипт няма нищо което да не от основните работи. Няколко if-а, GET и 2, 3 функции..

Сега малко по темата. Няма да е лошо да го сложиш този код в началото на кода си. Линкът ти трябва да е така index.php?m=dir&ext=fail
 
Аз лично използвам следният код и до ден днешен нямам никакъв проблем.

Код:
<?
$m = isset($_GET['m']) ? trim($_GET['m']) : '';

switch($m)
{
	case 'home':
		include 'pages/index.php';
		break;
       case 'videa':
		include 'pages/videa.php';
		break;
	default:
		include 'pages/index.php';
		break;
}
?>

Ето и малко разяснение... Всички файлове ми се намират във папката pages, но може да си ги слагаш и в други по отделно, както виждаш, се изброяват. Та нека ти разясня кое какво е...

case 'home':
include 'pages/index.php';
break;

Това е така 'home' това означава, че сайта ще бъде така ?m=home, това ще ми отваря началната страница.

include 'pages/index.php';

Това ти е пътят към файла, който ще отваряш със думата 'home'. Ти примерно искаш да отваряш клипове правиш така.. Добавяш под

Код:
	case 'home':
		include 'pages/index.php';
		break;

добавяш това
Код:
case 'videa':
		include 'pages/videa.php';
		break;


или целият код ще стане така:

Код:
<?
$m = isset($_GET['m']) ? trim($_GET['m']) : '';

switch($m)
{
	case 'home':
		include 'pages/index.php';
		break;
       case 'videa':
		include 'pages/videa.php';
		break;
	default:
		include 'pages/index.php';
		break;
}
?>

Сега да разясня този код какво прави:

Код:
	default:
		include 'pages/index.php';
		break;

Това е като другият код с единствената разлика, че този код определя, коя страница да ти е като отвориш сайта, може да е която ти искаш.

Целият код, който трябва да сложиш, го слагаш където ти поискаш. Ако имаш въпрос, питай. Надявам се да съм ти помогнал. :)

Едит: Мисля, че съм забравил да кажа, че линковете ще ти бъдат така..

http://site.com/index?m=home
http://site.com/index?m=videa
 
t0shk0 каза:
Много ми се иска да те поставя на място ама айде няма. Evil or Very Mad
Защо спамиш, защо се заяждаш - защото си търсиш някой да ти нарита жалкият задник ... то се знае, ама няма да съм аз защото просто не ми се занимава с отрепки като теб.

Хайде давай де.. наритай ме :cry: Много ви обичам такива биячи :D:D Ако не си забелязал в този скрипт няма нищо което да не от основните работи. Няколко if-а, GET и 2, 3 функции..

Сега малко по темата. Няма да е лошо да го сложиш този код в началото на кода си. Линкът ти трябва да е така index.php?m=dir&ext=fail
Относно по-горното няма какво да коментирам нито те знам от каде си нито ми се идва до твоят град нито пак си заслужава за такава глупост.

Иначе нещо пак ми дава:
Грешка 404 ....
Този код къде трябва да го поставя - скрипта ? и там на мястото на m=DIR?ext=FAIL << какво трябва да се напише? - директорията и файла който да се include ? Ако е така имали някакаф начин без да се пише директория а направо само файл а директорията да е само /videos например?
 
TaLenTo, Братле този код къде трябва да се постави :D В началото на страницата или там където искам да се include файл-а ? Благодаря ти много мисля че ще ми свърши перфектна работа стига да успея да го поткарам с моя ниш интелект :D Ще го пробвам след 1/2 часа най-вероятно.
 
Ето ти го кода
PHP:
<?
$_GET['m'] = htmlspecialchars($_GET['m']);
if (!isset($_GET['m'])) {
    $page = "videos/index.php";
} else {
    if ($_GET['m']) {
        $page = "videos/" . $_GET['m'] . ".php";
    }
    if (!file_exists($page)) {
        echo 'Грешка 404';
    } else {
        include("$page");
    }
}
?>
Ползва се така index.php?m=stranica

Скрипта ще зареди videos/stranica.php
 
Пробвай с моят код. Другото което искаш примерно /videos да е само, се прави със htaccess ;) Първо да подкараме скрипта останалото е лесно. :) Дай скайп направо ако искаш ще ти обясня, скайпа си дай на ЛС ;)
 

Back
Горе