Aufgerufene PHP-Datei

Alice

Erfahrenes Mitglied
Hallo.

Ich lade in einer PHP-Datei alle möglichen JS-Dateien. Auf bestimmtenn Seiten sollen weitere JS-Dateien geladen werden.

Die Möglichkeit mit "GET" entfällt in diesem Fall leider.

Ich habe es mit Session versucht, aber es scheint nicht richtig zu funktionieren.

Welche Möglichkeiten gibt es noch außer GET, Session und HTTP-Referer?
 
Hi

Wie genau wird die PHP-Datei für mehrere Seiten verwendet?
Include aus anderen PHP-Dateien? Modrewrite? ...?

Stehen die JS-Einbdingungen einfach so im globalen Raum, oder in einer Funktion, oder...?

Nach welchen Kriterien werden welche weiteren JS.Dateien geladen?
 
Die Datei "js.php" ist im "javascript" Verzeichnis gespeichert. Die JS-Dateien werden mittels "file_get_contents" geladen und mit entsprechenden Header ausgegeben. Die "js.php" habe ich im "Header-Template" eines vBulletin Forums eingebunden, damit diese jeder Seite zur Verfügung steht.

www.beispiel.de/javascript/js.php

Wenn ich jetzt z.B. auf "calender.php" unterwegs bin, soll dies in der "js.php" Datei erkannt werden und eine zusätzliche JS-Datei geladen werden.
 
Die Session Lösung würde mir am besten gefallen, sie will aber nicht funktionieren.

PHP:
session_start();
if ($_SERVER["SCRIPT_NAME"] != "/javascript/js.php")
{
$_SESSION['ref'] = $_SERVER["SCRIPT_NAME"];
}

Footer:
HTML:
<script type="http://beispiel.de/javascript/js.php"></script>

js.php
PHP:
session_start();

header('Content-type: text/javascript');

@readfile("...");
@readfile("...");
@readfile("...");

if ($_SESSION['ref'] == "/forum/calendar.php")
{
@readfile("...");
}

Die IF-Bedingung wird nie erfüllt. Wenn ich sie ausgebe, wird mir als SCRIPT_NAME tatsächlich "/javascript/js.php" angezeigt, obwohl die Session doch nur gesetzt werden soll, wenn es eben NICHT die js.php ist.
 
Hi

PHP:
if ($_SERVER["SCRIPT_NAME"] == "/forum/calendar.php")
	echo '<script src="http://beispiel.de/javascript/js.php?addition=1"></script>';
else
	echo '<script src="http://beispiel.de/javascript/js.php"></script>';
PHP:
header('Content-type: text/javascript');
 
@readfile("...");
@readfile("...");
@readfile("...");

$addition = 0;
if(isset($_COOKIE['addition']))
	$addition = (int)$_COOKIE['addition'];

if ($addition == 1)
{
	@readfile("...");
}
 
Das ganze wird doch etwas komplexer als angenommen.

Im Header (headinclude) von vBulletin werden verschiedene JS-Variablen wie z.B. "realpath" gebildet. Also wäre es auf jeden Fall vom Vorteil den Dateinamen (z.B. index.php) und den Pfad (z.B. /forum/startseite.html) irgendwie mitzugeben um mein Vorhaben (JS komplett bündeln) umzusetzen.

Aber wie?

Get oder Session?
 
Ich habe das Problem gefunden.

Das Problem ist das vBulletin Backend. Wenn ich die "js.php" in den Root verschiebe, dann funktioniert alles Einwandfrei. Sprich: Bei jeder Aktion wird die Session mit dem richtigen Wert gespeichert, außer im "js.php" Skript.

Vielleicht kann mir ja jemand helfen das Problem zu lösen?

So geht es:
PHP:
session_start();

//vBulletin-Backend laden
require_once('./global.php');

echo 'Session: '.$_SESSION['Online_Ref'];

So geht es nicht:
PHP:
session_start();

//vBulletin-Backend lade
$Get_vBulletin = getcwd();
chdir('/www/htdocs/blablabla/');
require_once('./global.php');
chdir($Get_vBulletin);

echo 'Session: '.$_SESSION['Online_Ref'];

Ich kenne mich mit diesem Part überhaupt nicht aus (CHDir) aber es wirkt auf mich, als würde die "global.php" irgendwie VORHER (?) verarbeitet werden und deswegen die Session nicht berücksichtigt wird.
 
Lösung: Um das vBulletin Backend nutzen zu können, muss sich die "js.php" leider im Forum-Root befinden.
 

Neue Beiträge

Zurück