POST-Variablen bei Aliasing /anmelden/


MarcoElias

Grünschnabel
Hallo zusammen,
ich sehe gerade den Wald vor Bäumen nicht...

Konfiguration: Virtueller Webserver bei Provider x.

Ich habe eine index.php erstellt, diese steht im Verzeichnis /.
Also: /index.php - darin befindet sich ein kleines Formlar (action="/index.php" method="post" usw)

Nun möchte ich einen Alias verwenden, zB /anmelden/
Konkret: www.domain.de/anmelden/
Diese "Route" landet ja ebenfalls bei: /index.php

Benutze ich in der Formular-ACTION direkt www.domain.de/index.php, dann werden die Formular-Felder korrekt übergeben.

Problem:
Benutze ich in der Formular-ACTION jedoch den Alias www.domain.de/anmelden/ geht er ja auch auf /index.php - aber es kommen hier die Formular-Felder nicht mit.
Noch nicht einmal die METHODE wird korrekt angezeigt
--> echo "Methode: " . $_SERVER['REQUEST_METHOD']; gibt immer dann GET aus, wenn die ACTION über /anmelden/ läuft.

Ich dachte, ich bin ein alter Hase, aber entweder zu alt oder zu spät ins Bett... ^^
Jemand, der mir kurz die Augen öffnet?

Herzlichen Dank!!
ME
 

ComFreek

Mod | @comfreek
Moderator
Wie genau hast du dieses Aliassing definiert bei deinem Webserver?

Dass die Request Method GET zeigt, sieht mir danach aus, dass dein Webserver bei Requests an /anmelden/ einfach eine stinknormale Weiterleitung durchführt. Das könntest du auch einfach mit den Dev Tools deines Browser nachvollziehen: im Netzwerktab das Aufnehmen aller Requests aktivieren und dann das Formular abschicken.
 

EuroCent

Klappstuhl 2.0
Hallo zusammen,
ich sehe gerade den Wald vor Bäumen nicht...

Konfiguration: Virtueller Webserver bei Provider x.

Ich habe eine index.php erstellt, diese steht im Verzeichnis /.
Also: /index.php - darin befindet sich ein kleines Formlar (action="/index.php" method="post" usw)

Nun möchte ich einen Alias verwenden, zB /anmelden/
Konkret: www.domain.de/anmelden/
Diese "Route" landet ja ebenfalls bei: /index.php

Benutze ich in der Formular-ACTION direkt www.domain.de/index.php, dann werden die Formular-Felder korrekt übergeben.

Problem:
Benutze ich in der Formular-ACTION jedoch den Alias www.domain.de/anmelden/ geht er ja auch auf /index.php - aber es kommen hier die Formular-Felder nicht mit.
Noch nicht einmal die METHODE wird korrekt angezeigt
--> echo "Methode: " . $_SERVER['REQUEST_METHOD']; gibt immer dann GET aus, wenn die ACTION über /anmelden/ läuft.

Ich dachte, ich bin ein alter Hase, aber entweder zu alt oder zu spät ins Bett... ^^
Jemand, der mir kurz die Augen öffnet?

Herzlichen Dank!!
ME

Entweder man macht es über die HTACCESS oder man nutzt eine Funktion die deine QUERY_STRING aufsplittet.

Beispielweise zur alternative von HTACCESS:

PHP:
<?php
//$url = $_SERVER['REQUEST_URI'];
$url = "https://www.google.de/index.php/anmelden/";

//$https = $_SERVER['REQUEST_SCHEME'] === 'https';

$indexPHPPosition = strpos($url,'index.php');
$baseUrl = $url;

if(false !== $indexPHPPosition){
  $baseUrl = substr($baseUrl,0,$indexPHPPosition);
}

if(substr($baseUrl,-1) !== '/'){
  $baseUrl .='/';

}
define('BASE_URL',$baseUrl);

$route = null;

if(false !== $indexPHPPosition){
  $route = substr($url,$indexPHPPosition);
  $route = str_replace('index.php','',$route);
}

if(strpos($route,'/anmelden/') !== false){
    //require_once __DIR__.'/index.php';
    //exit();
    echo "Zur Anmelden Seite";
}

Dein Aufruf wäre dann "https://www.deineSeite.de/index.php/anmelden/". :)

Auf der Seite kannst Du bisschen Spielen: PHP Sandbox, test PHP online, PHP tester
 

MarcoElias

Grünschnabel
Wie genau hast du dieses Aliassing definiert bei deinem Webserver?

Dass die Request Method GET zeigt, sieht mir danach aus, dass dein Webserver bei Requests an /anmelden/ einfach eine stinknormale Weiterleitung durchführt. Das könntest du auch einfach mit den Dev Tools deines Browser nachvollziehen: im Netzwerktab das Aufnehmen aller Requests aktivieren und dann das Formular abschicken.
ja, da scheint mir der Hase im Pfeffer zu sitzen, das habe ich nicht geprüft, weil es bisher "doch immer gegangen ist"... ;) *sigh*
Welche Tools meinst Du zum Aufzeichnen der Requests? Ich weiß das nicht, Browser-intern oder ein bestimmtes Add-On?

Danke!!
 

MarcoElias

Grünschnabel
Entweder man macht es über die HTACCESS oder man nutzt eine Funktion die deine QUERY_STRING aufsplittet.

Beispielweise zur alternative von HTACCESS:

PHP:
<?php
//$url = $_SERVER['REQUEST_URI'];
$url = "https://www.google.de/index.php/anmelden/";

//$https = $_SERVER['REQUEST_SCHEME'] === 'https';

$indexPHPPosition = strpos($url,'index.php');
$baseUrl = $url;

if(false !== $indexPHPPosition){
  $baseUrl = substr($baseUrl,0,$indexPHPPosition);
}

if(substr($baseUrl,-1) !== '/'){
  $baseUrl .='/';

}
define('BASE_URL',$baseUrl);

$route = null;

if(false !== $indexPHPPosition){
  $route = substr($url,$indexPHPPosition);
  $route = str_replace('index.php','',$route);
}

if(strpos($route,'/anmelden/') !== false){
    //require_once __DIR__.'/index.php';
    //exit();
    echo "Zur Anmelden Seite";
}

Dein Aufruf wäre dann "https://www.deineSeite.de/index.php/anmelden/". :)

Auf der Seite kannst Du bisschen Spielen: PHP Sandbox, test PHP online, PHP tester
Ja, das ist gut, aber das meinte ich nicht. Ich wollte die Form /index.php/anmelden/ usw. gerade vermeiden. Danke herzlich trotzdem für Deinen Tip!!!
 

Neue Beiträge

Forum-Statistiken

Themen
272.361
Beiträge
1.558.639
Mitglieder
187.834
Neuestes Mitglied
jordanx0206