Otoz mam taki problem mam 3 pliki, config. php, index.php i requestprocessor.php
config to wiadomo, stale.
mam w nim cos takiego
<?php
//$sitetitle = "Rechniewskiego-United";
define("SITE_NAME", "Rechniewskiego-United");
// Define DB Params
define("DB_HOST", "localhost"); define("DB_NAME", "tajemnica");
//Define URL
define("ROOT_LANDING_URL", "serwer1937930.home.pl"); define("ROOT_APP_URL", "app.serwer1937930.home.pl"); define("ROOT_SHORT_URL", "inny_url.pl");
foreach (glob ("app/*.php") as $filename) { include $filename ;
}
include_once("RequestProcessor.php");
?>
Jak widac znajduja sie w nim stale ktore odpowiadaja zmiennej superglobalnej HTTP_HOST
Nastepnie jest index.php
<?php
require_once('config.php');
use Aplikacja as app;
$processor = new app\RequestProcessor();
switch($_SERVER['HTTP_HOST'])
{
case ROOT_LANDING_URL:
$processor->processLandingRequest($_SERVER['REQUEST_URI']);
break;
case ROOT_APP_URL:
$processor->processAppRequest($_SERVER['REQUEST_URI']);
break;
case ROOT_SHORT_URL:
$processor->processShortRequest($_SERVER['REQUEST_URI']);
break;
default:
header("Location:http://" . ROOT_LANDING_URL
); break;
}
?>
Jak widac, odbiera on stala app.blablabla i gdy domena zgadza sie z ta zapisana wysyla mnie do procesora
Procesor tworzy instancje klasy Dashboard() i odsyla mnie do metody ProcessRequest, REQUEST_URI jest walniety do konstruktora klasy
<?php
namespace Aplikacja;
class RequestProcessor
{
public function processShortRequest($request) {
$shortener = new Shortener();
$shortener->RedirectToDestinationUrl(str_replace('/', '', $request)); }
public function processAppRequest($request) {
$dashboard = new Dashboard($request);
$dashboard->ProcessRequest();
}
public function processLandingRequest($request) {
require("landingpage.view.php");
}
}
dalej
<?php
namespace Aplikacja;
class Dashboard
{
private $request;
private $post;
private $get;
public function __construct($request){
$requestString = explode("?", $request); $this->request = empty($requestString) ?
$request : $requestString[0
]; //$this->request = $request;
}
public function ProcessRequest()
{
if(!$this->request)
{
return;
//echo "cos sie zjebalo";
}
$this -> post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
$this -> get = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
switch ($this->request)
{
case "/piramida/registerForm/":
//$this->showRegister();
break;
case "/piramida/":
$this->showDashboard($this->request);
break;
case "/piramida/loginForm":
$this->showLogin();
break;
//dalsze inputy
default:
$this->showDashboard("as");
break;
}
//echo $this->request;
}
Konstruktor pobiera dane i zwraca wartosc bez zmiennych GET do pola $this->request. Nastepnie sprawdzam w switchu wartosc requesta i porownuje ze stringiem. I o ile case "/piramida/" dziala (nazwa podfolderu na hoscie) to reszta w ogole i wywala mi blad 404. w ogole nie wiem, dlaczego. Wie ktos?