Frage von TheLeon111, 54

Wie kann ich mit PHP die Datei in der URL ausgeben, aber trotzdem Daten weitergeben?

Hallo,

vielleicht ist meine Überschrift ein Wenig verwirrend, aber hier nochmal ausführlich. Ich habe z.B. meine index.php und eine user.php. Wenn ich die Domain aufrufe, dann wird man sowieso auf die index.php geleitet und es wird nichts als Datei angezeigt. Aber wie mach ich es nun, dass, wenn ich user.php aufrufe, dies auch nicht im URL steht? Muss ich da quasi ein Verzeichnis user anlegen und dann meine user.php dort hineingeben und in index.php umbenennen?

Und nun zum zweiten Problem. Wenn ich einen user "test" habe, wie kann ich dann auf diesen Zugreifen? Also wenn ich jemandem den Link gebe, war es bis jetzt so, dass in der URL "user.php?user=test" stand. Aber wie funktioniert das nun? "domain.com/user/user=test"?

Danke für Antworten, LG!

Antwort
von Homero, 11

Wenn es Dir darum geht, das Du Deine Parameter in der URL verbergen möchtest, also nicht in der Adresse domain.tld/user.php?user=test

sonder domain.tld/user/test

dann braucht du mode-rewrite und eine .htaccess.

Damit must Du Dich intensiv beschäftigen, das geht leider nicht so ruckzuck

In der htaccess (das ist eine Datei im TXT-Format) werden URLS nach definierten Mustern intern umgeleitet.

Im Grunde brauchst Du aber Deine user.php auch nicht direkt über die URL ansprechen.

Das könnte auch so aussehen:

domain.tld/index.php?user=test

if(!empty($_GET['user']){
include('pfadzurusesr.php/user.php');
}

Du solltest aber immer wenn Du $_GET verwendest, dafür Sorge tragen, das Du die Inhalte der Variablen auf erlaubte Inhalte überprüfen kannst, und das auch tun. Sonst ist das eine Sicherheitlücke für Deine Seite.

Enthält die Variable z.B. unerlaubte Zeichen, leitest Du auf eine Fehlerseite weiter und bearbeitest den Variableninhalt nicht weiter.

Zum ausprobieren ist das aber noch nicht notwendig, solange die URL nicht öffentlich ist.

Antwort
von webflexer, 31

Du musst immer eine Datei angeben!

Die index.html oder index.php wird auch angegeben aber nicht von dir sondern ist automatisch im Server so eingestellt falls ein Dateiname nicht angegeben wird.

Natürlich kannst du die user.php in index.php umbenennen und in das Unterverzeichnis user anlegen.

Der Aufruf würde dann so aussehen domain.com/user/?user=test oder domain.com/user/index.php?user=test

Antwort
von Kiboman, 24

index.php?user=abc

in der index

kannst du die variable mit $_GET['user'] abrufen

dateien kannst du mit include() nachladen

Antwort
von fluffiknuffi, 5

Homero hat es bereits indirekt gesagt, aber nur damit das klar wird: Der bessere Ansatz ist wahrscheinlich, dass user.php gar nicht direkt aufgerufen wird sondern immer index.php und diese user.php einbindet. Also von der Idee her:

http://localhost/index.php -> index.php aufrufen und normal anzeigen

http://localhost/index.php?page=user -> index.php aufrufen und diese bindet user.php ein und diese wird dann ausgeführt

Zu deiner anderen Frage:

Statt 



http://localhost/user.php?user=test

dann

http://localhost/user/test

Was das bedeuten soll? "user" steht für die Seite, also user.php.

"test" steht für den Usernamen.

Die Parameterbezeichnung "user" kannst du weglassen.






Kommentar von fluffiknuffi ,

Damit das ganze gut funktioniert wäre natürlich das festlegen von "Routen" zu  empfehlen. Sprich du definierst dir eine Route "user/<username>" die deine Website auswertet damit sie weiß, was die Bedeutung der URL-Parameter ist.

Allerdings ist das schon ein deutlicher Schritt nach vorne. Vielleicht ist es dafür auch noch zu früh.

Keine passende Antwort gefunden?

Fragen Sie die Community