Antworten auf deine Fragen:
Neues Thema erstellen

Seite überprüfen mit $_GET oder serverseitig?

GeKiller

Liqu1d

Hey,

es wird ja eigentlich bei jeder gut besuchten Seite oder großen Seite oder wie auch immer überprüft, ob die Seite existiert und das ja soweit ich weiß vom Server und wenn nicht, kommt ja Error 404. Zudem wird ja bei den Dateien bspw. der Name ersetzt, so sieht ma ja z.B nicht, ob es jetzt eine html oder PHP Datei ist, wie macht man das?

Wie kann ich verhindern, das jemand oben einfach in der Adresszeile eingibt, sodass man dann direkt zur index.php weitergeleitet wird? Natürlich habe ich schon überprüft, ob der User autorisiert ist und die Seite wäre natürlich sonst gültig aber wenn man jetzt z.B mal nimmt dann ja schon eher nicht.

Wenn es eine Seite nicht gibt, kann man ja auch glaube ich in den Servereinstellungen einstellen, das man dann nach einer gewissen Zeit weitergeleitet wird oder? (Wo eigentlich?)

Ich habe es wohl schon so gemacht, das man dann bei einem Link dann hier sowas hat und dann auf diese Datei referenziert, also so: index.php?site=frontend", nur mal so als Beispiel.

index.php Datei
Code:
<?php

  $site = isset($_GET['site']) ? $_GET['site'] : 'frontend';

  switch($site)
  {
      case 'frontend':
          include('Frontend/index.php');
          break;

      case 'backend':
          include('Backend/backend.php');
          break;

      case 'backend-login':
          include('Backend/login.php');
          break;

      default:
          include('Frontend/index.php');
          break;
  }

?>

Wie kriege ich es aber jetzt bspw. beim Aufruf der Seite hin, das man dann da anstatt stehen hat?

Eine Sache verstehe ich auch noch nicht. Wieso macht man das eigentlich überhaupt, also das man nicht sehen kann, um welche Datei es sich dabei wirklich handelt oder diese alias Benennung?

BTW: Das fällt mir grad spontan ein:
Wie verhindert man eigentlich, das jemand bspw. bei Eingabe meiner Serverip das komplette Verzeichnis sehen kann und sich sogar so auf dem Server bewegen kann? Ist das eine Servereinstellung?
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

Wenn es eine Seite nicht gibt, kann man ja auch glaube ich in den Servereinstellungen einstellen, das man dann nach einer gewissen Zeit weitergeleitet wird oder? (Wo eigentlich?)
Das macht in der Regel die 404-Seite selbst, die ausgeliefert wird.
Wie kriege ich es aber jetzt bspw. beim Aufruf der Seite hin, das man dann da anstatt stehen hat?
Stichwort "mod_rewrite", siehe http://de.wikipedia.org/wiki/Rewrite-Engine
Wieso macht man das eigentlich überhaupt, also das man nicht sehen kann, um welche Datei es sich dabei wirklich handelt oder diese alias Benennung?
Lesbare URLs. Es ist einfacher für dich und für Suchmaschinen, eine Bedeutung hinter zu erkennen als .
Wie verhindert man eigentlich, das jemand bspw. bei Eingabe meiner Serverip das komplette Verzeichnis sehen kann und sich sogar so auf dem Server bewegen kann? Ist das eine Servereinstellung?
Ja, z.B. beim Apache ist das eine Option namens "Indexes", siehe https://wiki.apache.org/httpd/DirectoryListings


Duddle
 

GeKiller

Liqu1d

mh, das macht natürlich Sinn aber würde man das denn realisieren? Ist das so mit der oben beschrieben Methode mit dem $_GET schon okay? Ich habe ja jetzt zwar keine Kategorieren aber das man das dann über eine index Datei macht und dann auch so weiterleitet mit index.php?site=wasauchimmer?

Würde man das auch so in einem größeren Projekt realisieren und auch, wie du das so mit den Kategorieren beispielsweise gemacht hast?
 

msa1989

Bin da

@GeKiller
Wenn du möchtest, dass anstatt nur steht, dann kannst du das mit ein paar htaccess-Zeilen wie diesen machen:
Code:
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^?]*)$ /index.php?action=$1 [NC,L,QSA]
</IfModule>

Das bedeutet, dass alles was hinter dem "/" der variable "action" zugewiesen wird. Die Zeilen 3 und 4 sagen, dass diese Regel nicht für Dateien und Ordner gilt (praktisch z.B. für /img/logo.jpg etc.).
In deiner index.php kannst du mit
PHP:
$_GET['action']
auf den Inhalt zugreifen und je nach Bedarf den richtigen Inhalt einbinden. Diesen kannst du ja mithilfe einer Datenbank oder ohne DB mit einer Textdatei etc. bestimmen.

Wenn es jetzt z.B. die action nicht gibt, bzw. halt die angeforderte Seite, dann kannst du deine personalisierte Error-Seite einbinden, welche deine Fehlermeldung ausgibt.
Dabei solltest du beachten, dass der Browser (bzw. interessanter: die Suchmaschinen) die Seite dann nur als Error erkennen, wenn du einen passenden Header mit PHP sendest:
PHP:
header('HTTP/1.0 401 Unauthorized');
header('HTTP/1.0 403 Forbidden');
header("HTTP/1.0 404 Not Found");
header("HTTP/1.0 410 Gone");
(Mehr sind mir jetzt grad nicht eingefallen). Mit folgendem Code:
PHP:
header('refresh: 10; url=www.meine-seite.de);
kannst du z.B. den Benutzer dann nach 10 Sekunden automatisch an eine andere Seite weiterleiten.

War das hilfreich?
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben