Zur Navigation

URL's dem DB-Inhalt zuordnen [2]

11 John821

Ja stimmt, aber egtl. sieht dass ganz gut aus:

Lokal wird die URL aufgerufen: http://localhost/weblokal-fragebogen/
und mit
<?php echo 'Request URI: ' . $_SERVER['REQUEST_URI']; ?>
bekomme ich Request URI: /weblokal-fragebogen/

Und live wird die URL aufgerufen: https://www.weblokal.net/ und mit
<?php echo 'Request URI: ' . $_SERVER['REQUEST_URI']; ?>
bekomme ich Request URI: / zurück

Ist das was man bekommen möchte, oder?

P.s:
und bei der Unterseite https://www.weblokal.net/profile.php bekomme ich ebenfalls Request URI: /profile.php

15.02.2018 22:09 | geändert: 15.02.2018 22:13

12 Jörg Kruse

Wie wird der Request Uri weiterverarbeitet, um daraus die ID für die Datenbank zu erhalten?

Auf dem lokalen Server muss hierbei vermutlich zuerst noch der Installations-Pfad "/weblokal-fragebogen" entfernt werden? wie wird das gemacht und sichergestellt, dass auf weblokal.net nichts entfernt wird?

16.02.2018 08:33 | geändert: 16.02.2018 08:36

13 John821

hier ist der Anfang der index.php:

<?php
require_once 'include/global.php';
$database = new Database();

$preview = isset($_GET['preview']);
if($preview){
    $header = $database->getHeader($_SESSION['preview_header_id']);
    $content = $_SESSION['preview_content'];
}
else{
    $url = $_SERVER['REQUEST_URI'];
    $path = dirname($url);
    if($path === '/'){
        $script = '';
    }
    else{
        $script = substr($url, strlen($path) + 1) ;
    }

    $page = $database->getPageByUrl($script);

    if(empty($page)){
        $content = 'Site not found';
    }
    else{
        if($page['header_id'] > 0){
            $header = $database->getHeader($page['header_id']);
        }
        $content = $page['content'];
    }
}

hab die Kommentare rausgenommen, wenn du die sehen willst geb mir kurz bescheid.

Und die URL's werden bei mir unter class/Path.php abgelegt, hier die lokale Konfiguration:
<?php 
class Path {
	public static function getRootUrl(){
		return '/weblokal-fragebogen/index.php';
	}
	public static function getRootPath(){
		return '/weblokal-fragebogen/';
	}
	public static function getCssPath(){
		return '/weblokal-fragebogen/css/';
	}
}


Und hier die live Konfiguration (jeweils ohne weblokal-fragebogen):
<?php 
class Path {
	public static function getRootUrl(){
		return '/index.php';
	}
	public static function getRootPath(){
		return '/';
	}
	public static function getCssPath(){
		return '/css/';
	}
}


CSS-Dateien werden auch richtig included
Den Installations-Pfad habe ich doch damit entfernt, oder meinst du noch an anderer Stelle?

16.02.2018 11:37 | geändert: 16.02.2018 11:40

14 Jörg Kruse

    if($path === '/'){
        $script = '';
    }

Die Bedingung trifft auch auf /profile.php zu, so dass hier ein leerer String an getPageByUrl() übergeben wird!

Vielleicht funktioniert es so sowohl lokal (im Unterverzeichnis) als auch live (im Wurzelverzeichnis):

    if ($path == '/') {
        $path = '';
    }
    $script = substr($url, strlen($path) + 1);

16.02.2018 14:36 | geändert: 16.02.2018 14:37

15 John821

Ahh ok, probier ich gleich aus, danke!

Wie ist es aber zu erklären, dass es lokal mit meiner Variante immer funktioniert?
Der Leerstring soll ja egtl. übergeben werden, live wird ja die URL mit weblokal.net/profile.php auch richtig ausgelesen

16.02.2018 15:01

16 Jörg Kruse

Wie ist es aber zu erklären, dass es lokal mit meiner Variante immer funktioniert?

Da ergibt $path immer "/weblokal-fragebogen", so dass die erste Bedingung nicht zutrifft, infolgedessen $script grundsätzlich ein leerer String zugeordnet wird

Der Leerstring soll ja egtl. übergeben werden

Ja, wenn $url == '/', aber $path == '/' trifft auf alle URLs zu, die kein Verzeichnis enthalten

live wird ja die URL mit weblokal.net/profile.php auch richtig ausgelesen

Der Fehler kommt ja auch erst später in dem von mir geposteten Abschnitt. Der sorgt dafür, dass $script nicht nur bei "/", sondern auch bei '/profile' ein leerer String zugeordnet wird.

16.02.2018 16:11 | geändert: 16.02.2018 16:13

1 Forenmitglied fand diesen Beitrag gut

17 John821

ja klingt logisch, in 30 min weiß es es genauer, danke und schönen Abend dir

16.02.2018 16:25

18 John821

Hallo Jörg,
vielen Dank für deine Hilfe. Deine Variante funktioniert nun, auch wenn lokal nun nicht mehr, aber live und das ist die Hauptsache.

Schönen Abend dir und Gruß aus Berlin

16.02.2018 20:15

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]