Scriptname verarbeiten

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
DetlefT
Mitglied
Beiträge: 237
Registriert: 03.02.2009 15:39
Wohnort: Bedburg
Kontaktdaten:

Scriptname verarbeiten

Beitrag von DetlefT »

Hallo,

ich suche schon den ganzen Abend nach einer sicherlich ziemlichen einfachen Lösung, finde aber immer nur Teilstückchen, die ich nicht zu einem kompletten Ganzen zusammensetzen kann.

Aufgabe: Ein aufgerufenes php-Script soll mir den Namen des Scriptes verraten, wichtig dabei ist eigentlich nur der Dateiname und die Argumente.
Beispiel: Scriptname "http://example.com/ordner/datei.php?arg1=a&arg2=b&arg=c"
Ich brauche unbedingt den Teil "?arg1=a&arg2=b&arg=c" (mit oder ohne Fragezeichen), weniger wichtig ist der Teil "ordner/datei.php".

Gefunden habe ich $_SERVER['argv'], die Ausgabe ist aber NULL, $_SERVER[''PHP_SELF''] bringt mir schon mal "/ordner/datei.php".

Zu lösen ist die Aufgabe (ohne .htaccess), über php eine Weiterleitung zu realisieren von einem Ordner in einen anderen Ordner (respektive Subdomain)
http://example.com/phpBB3/datei.php?arg1=a&arg2=b&arg=c
nach
http://forum.example.com/datei.php?arg1=a&arg2=b&arg=c

Ansatz:

Code: Alles auswählen

<?
...nötige Stringverarbeitungen ...
header("Status: 301 Moved Permanently"); 
header("Location: http://forum.example.com/");
exit();
?>
??? :-?
Grüße, DetlefT *** Mein Forum: FJR-Tourer Deutschland

http://einfachpur.de
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Scriptname verarbeiten

Beitrag von cYbercOsmOnauT »

http://test.cybercosmonaut.de/servervar ... =blablabla

Such Dir die $_SERVER aus die Du benötigst. (Tipp: SCRIPT_NAME und QUERY_STRING)

argv und argc sind Werte die bei Shellaufrufen verwendet werden. Das sie bei einem Webaufruf leer sind, erklärt sich von selbst.

SERVER_NAME würde ich zum Prüfen des Host verwenden um zu schauen, ob man schon auf dem neuen Host ist oder nicht.
Zuletzt geändert von cYbercOsmOnauT am 23.03.2013 00:43, insgesamt 1-mal geändert.
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Scriptname verarbeiten

Beitrag von gn#36 »

Den Dateinamen bekommst du am sichersten mit __FILE__.

Ansonsten kannst du dir die Superglobale $_SERVER ja einfach mal mit print_r($_SERVER); ausgeben lassen. Dann kannst du dir aussuchen was dir am besten passt für dein Skript, da gibt's nämlich mehrere Möglichkeiten ($_SERVER['REQUEST_URI'] und $_SERVER['QUERY_STRING'] beispielsweise, evtl. noch mehr die ich gerade nicht im Kopf habe).

EDIT: Da war der Tekin wohl schneller...
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
DetlefT
Mitglied
Beiträge: 237
Registriert: 03.02.2009 15:39
Wohnort: Bedburg
Kontaktdaten:

Re: Scriptname verarbeiten

Beitrag von DetlefT »

Hallo Ihr Zwei,

danke, dass Ihr mich auf's Pferd gesetzt habt - ja jetzt ja, eine Insel!

Ausprobiert und nach ersten Erkenntnissen klappt es genau wie erhofft. Many thanks! :grin:
Grüße, DetlefT *** Mein Forum: FJR-Tourer Deutschland

http://einfachpur.de
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Scriptname verarbeiten

Beitrag von BNa »

Code: Alles auswählen

"?arg1=a&arg2=b&arg=c"
Warum nicht request_var()?
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Scriptname verarbeiten

Beitrag von cYbercOsmOnauT »

BNa hat geschrieben:Warum nicht request_var()?

Code: Alles auswählen

function request_var($var_name, $default, $multibyte = false, $cookie = false) 
Woher weißt Du welche Argumente im Query String stehen? ;) Mit Deinem Weg müsste man QUERY_STRING erst aufsplitten und die Variablennamen der Argumente ausfiltern. Dann diese einzeln mit request_var abrufen, daraus dann wieder eine neue URL bilden und zu dieser per 301 umleiten. Da der QUERY_STRING sich aber nicht ändert, kann man den auch einfach so nehmen wie er ist, oder? ;)
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
DetlefT
Mitglied
Beiträge: 237
Registriert: 03.02.2009 15:39
Wohnort: Bedburg
Kontaktdaten:

Re: Scriptname verarbeiten

Beitrag von DetlefT »

Hi,

ich habe es so gelöst:

Code: Alles auswählen

<?
$datu = $_SERVER['REQUEST_URI'];
$kurz = substr($datu,1,6);
if ($kurz == 'phpBB3') {
     $datu = substr($datu,7);
}
$datu = 'http://forum.example.com'.$datu;
header("Status: 301 Moved Permanently"); 
header("Location: ".$datu);
exit();
?>
die zusätzlichen Codezeilen mit mit substr() habe ich eingebaut, weil sowohl SCRIPT_NAME wie auch PHP_SELF den Filenamen mit dem Ordner bringen, also beide Variablen bringen phpBB3/filename.php.
Grüße, DetlefT *** Mein Forum: FJR-Tourer Deutschland

http://einfachpur.de
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Scriptname verarbeiten

Beitrag von cYbercOsmOnauT »

Du kannst diese 3 Zeilen

Code: Alles auswählen

$datu = 'http://forum.example.com'.$datu;
header("Status: 301 Moved Permanently"); 
header("Location: ".$datu); 
auch zusammenfassen zu einer Zeile

Code: Alles auswählen

header("Location: http://forum.example.com".$datu, 301); 
PHP header Beschreibung
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Scriptname verarbeiten

Beitrag von BNa »

cYbercOsmOnauT hat geschrieben:Woher weißt Du welche Argumente im Query String stehen?
Achja, aber das kommt davon, wenn man nur mit nem halben Ohr hinhört :grin:
Benutzeravatar
DetlefT
Mitglied
Beiträge: 237
Registriert: 03.02.2009 15:39
Wohnort: Bedburg
Kontaktdaten:

Re: Scriptname verarbeiten

Beitrag von DetlefT »

cYbercOsmOnauT hat geschrieben:

Code: Alles auswählen

header("Location: http://forum.example.com".$datu, 301);
Danke für den Tip. :)
Grüße, DetlefT *** Mein Forum: FJR-Tourer Deutschland

http://einfachpur.de
Antworten

Zurück zu „Coding & Technik“