To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

HTML/PHP/AJAX/JS - [PHP] Problem z ?page=strona

WoGuziczek - 07-03-2008, 16:26
Temat postu: [PHP] Problem z ?page=strona
Witam!

Obecnie bawię się troszkę skryptem Rapidshare.de Clone.
Mój plik index.php wygląda tak:

Kod:
<?php


include("./config.php");
include("./header.php");


$sizehosted = 0; //get the storage size hosted
$handle = opendir("./storage/");
while($file = readdir($handle)) {
$sizehosted = $sizehosted + filesize ("./storage/".$file);
  if((is_dir("./storage/".$file.'/')) && ($file != '..')&&($file != '.'))
  {
  $sizehosted = $sizehosted + total_size("./storage/".$file.'/');
  }
}
$sizehosted = round($sizehosted/1024/1024,2);

if(isset($allowedtypes)){ //get allowed filetypes.
  $types = implode(", ", $allowedtypes);
  $filetypes = "<b>Dozwolone typy plikow:</b> ".$types."<br /><br />";
} else { $filetypes = ""; }

if(isset($categories)){ //get categories
  $categorylist = "Kategorie: <select name=\"category\">";
  foreach($categories as $category){
    $categorylist .= "<option value=\"".$category."\">".$category."</option>";
  }
  $categorylist .= "</select><br />";
} else { $filetypes = ""; }

if(isset($_GET['page']))
  $p = $_GET['page'];
else
  $p = "0";
include 'total.php';

switch($p) {
default: include("./pages/upload.php"); break;
}

include("./footer.php");
?>


O co chodzi - Z ostatnich linijek:
Kod:
if(isset($_GET['page']))
  $p = $_GET['page'];
else
  $p = "0";
include 'total.php';

switch($p) {
default: include("./pages/upload.php"); break;
}


Łapiemy, że domyślną stroną jest upload.php, która znajduje się katalogu pages.
Gdzie problem - otóż nie działa mi system podstron tzn jak wpisze http://adres_strony.pl/index.php?page=jakaś_strona to mimo, że strona znajduje się w katalogu pages - nadal wyświetla mi się upload.php (default).

Gdzie leży błąd?
Z góry dziękuje za pomoc :)

Radek - 07-03-2008, 16:30

zamiast tego:
Kod:
switch($p) {
default: include("./pages/upload.php"); break;
}

daj:
Kod:
switch($p) {
case 'jakas_strona':
include('jakisplik.php');
break;
case 'jakas_strona2':
include('jakisplik2.php');
break;
default: include("./pages/upload.php"); break;
}

itd wg. schematu dodajesz dozwolone opcje dla 'page'

WoGuziczek - 07-03-2008, 16:52

RuseK, RuseK, Dziękuję - działa :)

a da się jakoś inaczej zrobić, żeby po prostu nie dodawać ciągle nowych stron do index.php ?

Kiedyś w innym skrypcie bawiłem się z czymś takim:


Kod:
<?php
error_reporting(0);
import_request_variables( 'gpc' );
$url= explode('/', $url);
 if($url[0] == '.' or $url[0] == '..'){echo"<center><b><font size='4'>ŹLE CZYNISZ!!</font></center></b>";
}
else
{
if($url[0] == '' or $url[0] == 'glowna' or $url[0] == 'index' or $url[0] == 'glowna' or $url[0] == 'Index' )
{
include('index2.php');
}
else
{
if(file_exists("strony/$url[0].php") == true)
{
include('strony/'.$url[0].'.php');
}
else
{
echo"<center><b><font size='4'>BŁĄD 404 : Nie ma takiej strony<br><br>ERROR 404 : Page not found</font></center></b>";
}
}
}
?>



Tylko, że to działało na zasadzie zupełnej innej niż tej powyższy skrypt także trzeba mega przerobić. :)

Radek - 07-03-2008, 17:06

a wrzuc ten kod:
Kod:
$p = htmlspecialchars(trim($_GET['page']));
$p = basename($p);
$p = str_replace(array('http://', '/', '.', '.php'), '', $p);

if ( !empty($p) && file_exists('./pages/' . $p . '.php') )
{
    include('./pages/' . $p . '.php');
}
else
{
    include('./pages/upload.php');
}

zamiast tego:
Kod:
if(isset($_GET['page']))
  $p = $_GET['page'];
else
  $p = "0";
include 'total.php';

switch($p) {
default: include("./pages/upload.php"); break;
}

Nie testowane.

WoGuziczek - 07-03-2008, 18:14

RuseK, powiem tak - działa jeśli chodzi o podstrony,
ale na stronie głównej wywala na górze błąd:

Kod:
Notice: Undefined index: page in C:\Program Files\EasyPHP 2.0b1\www\nightvision\index.php on line 32

Radek - 07-03-2008, 18:41

może tak?
Kod:
if ( !empty($_GET['page']) )
{
    $p = htmlspecialchars(trim($_GET['page']));
    $p = basename($p);
    $p = str_replace(array('http://', '/', '.', '.php'), '', $p);

    if ( file_exists('./pages/' . $p . '.php') )
    {
        include('./pages/' . $p . '.php');
    }
    else
    {
        include('./pages/upload.php');
    }
}
else
{
    include('./pages/upload.php');
}

WoGuziczek - 07-03-2008, 18:54

I GITARA :)

Działa bez żadnych błędów :)

Bardzo Ci dziękuje, RuseK
Pozdrawiam



Powered by phpBB modified by Przemo © 2003 phpBB Group