• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Php- Hp

Status
Für weitere Antworten geschlossen.

Trompedo

Neues Mitglied
Hi,

langsam verstehe ich PHP und möchte das jetzt auch bei meinen zukünftigen HP´s gebrauchen.

Ich wollte mal fragen, wie man das den jetzt mit HP´s macht? Also ich kenne Leute die nehmen keine Frames sondern machen die Inhalte mit PHP, wie sieht das aus (vielleicht beispiel HP) und wie funktionierts? Können User dann in einem Internen Bereich die Inhalte verändern??
 
Es läuft im Allgemeinen so:

Du klickst eineln Link, der per beispielsweise eine Seite so aufruft:

index.php?mode=news

Indeinem Contentbereich steht nun so etwas:

PHP:
<?php

$file = dirname(__FILE__) . "/modes/".$_GET['mode'].".php";

if (file_exists($file)) {
include($file);
}
else {
include "./modes/news.php";
}

?>

Er holt sich also mit $GET['mode'] das, was in der URL hinter mode= steht, in unserem Dall 'news'.

Nun wird versucht das File ./modes/news.php zu laden.

Ich erkläre es jetzt nicht ausführlicher, da du PHP ja angibst zu können, bei Bedarf konkretisier ich aber gerne jeden einzelnen Schritt (:
 
Es gibt sehr viele Methoden.
Jeder benutzt seine belibtestete.

Also die hier habe ich anfangs benutzt.
Man macht mit der Superglobalen $_GET ein switch() und kann so verschiedene case definieren.

Also so:
PHP:
<?php
if(!isset($_GET['seite'])) // Also wenn index.php?seite= nicht gesetzt ist,
{
 include "standart.php"; // Standartseite einbinden
}
else // Wenn es doch definiert ist, switch einbauen
{
 switch($_GET['seite'])
 {
  case 'home' : include "standart.php"; break; // Jetzt wird seite=home definiert
  case 'seite2' : include "standart.php"; break; // Jetzt seite=seite2
  case ' // und so weiter.
 }
}
?>
So kannst du beliebig viele einsetzen. Den Namen der Superglobalen kannst du auch ändern, je nachdem wie du es willst.
Meistvererwendet sind site, panel, page, usw....

Info, dass andere nicht schimpfen:
Man kann das ganze auch einfacher machen, doch meine Methode geht eins auf sicher.
Also hier das ganze nochmal in der 0815 Methode:
PHP:
switch($_GET['seite'])
{
 case 'home' : include "standart.php"; break;
 // Und so weiter
 default : include "standart.php"; break;
}
Und, kapiert?
Also es gibt noch den default wert, also Standart.
Bei mir hatte der schon manchmal seine Probleme, und darum verwende ich es wie beim 1. Beispiel. (Verwendete).

Hab nun einen einfacheren Code, dass ich nicht immer bei einer neuen Seite einen neuen case definieren muss.

Zwar so:
PHP:
<?php
if(isset($_GET['site'])) // Wenn site= definiert ist,
{
 $site = $_GET['site']; // Superglobale in Variable
 if(!file_exists("seiten/" . basename($site) . ".php") // Prüfen ob Datei existiert
 {
  include "seiten/error.php"; // Wenn nicht, error
 }
 else
 {
  include "seiten/" . basename($site) . ".php"; // Wenn doch, Seite einbinden
 }
}
else // Wenn nicht definiert
{
 include "seiten/home.php"; // Homeseite einbinden.
}
?>
Also bei meinem Code, wenn oben steht index.php?site=aktuelles
Dann ist die eingefügte Seite aktuelles.php.
Is doch simpel und einfach, aber hat seinen Zweck erfüllt :D


MfG, matibaski
 
Das ganze kannst du auch per Querystring machen, finde ich persöhnlich eleganter:

PHP:
if(empty($_SERVER['QUERY_STRING'])
{
    require_once('sites/news.php');
}
else
{
    require_once('sites/'.$_SERVER['QUERY_STRING']);
}
Das ganz muss natürlich getestet werden, ob der querystring auch nur die Seite enthält, und ob es eine erlaube Seite ist.
 
und bitte auch nicht die ganzen injectionsmöglichkeiten vergessen !


ich verwende immer glob() bei sowas mit =))
 
und um euch zu zeigen was ihr an euren script verbessern müsst hier ein beispiel zu dem script von m0sT und dem dritten script von matibaski ;)

nehmen wir an alle daten die ihr zur auswahl haben wollt sind im ordner "sites"

und ihr setzt euren string so zusammen

$site = 'sites/' . $_GET['site'] . '.php';

dann könnte jetzt jemand schreiben

?site=../../../andere_datei%00

somit hätte er die andere datei weil durch das %00 (0 Byte) der rest des strings ignoriert wird!

also verbessert eure scripts ;)
 
Wenn jemand es wirklich nötig hat, eine kleine Seite zu knacken, dann tut er mir leid.
Ich würde eher grössere Seiten anpacken.
Würde ich eine grosse Community oder so führen, würde ich mit .htaccess arbeiten. :D


MfG, matibaski
 
Wenn jemand es wirklich nötig hat, eine kleine Seite zu knacken, dann tut er mir leid.
Ich würde eher grössere Seiten anpacken.
Würde ich eine grosse Community oder so führen, würde ich mit .htaccess arbeiten. :D


MfG, matibaski
Es ist hier nicht nach dem gefragt, was du machen würedst, sondern nach dem was Cracker machen! Und glaub ja nicht, dass die sich nur auf große Seiten beschränken...

Und komm jetzt nciht mit .htaccess, denn davon sehe ich keine Spur in dem von die verwendeten Code...
 
Ich sagte, wenn ich eine Community führen würde, würde ich .htaccess verwenden.
Momentan habe ich nur eine kleine private Webseite.


MfG, matibaski
 
Ich sagte, wenn ich eine Community führen würde, würde ich .htaccess verwenden.
Momentan habe ich nur eine kleine private Webseite.


MfG, matibaski
Was nichts daran ändert, dass der User deinen Code verwenden könnte, auch wenn er kein .htaccess benutzt...



Merke: Usereingaben niemals direkt verwenden!!!
 
mysql_real_escaped_user();
oder wie heisst die funktion?

Ich schau mal, was die macht (ausser mir fällt der NAme nicht mehr ein).



MfG, matibaski
 
Das lustige ist, dass selbst grosse Seiten manchmal imense Sicherheitslücken im Script aufweisen. Selbst für VB kommen wöchentlich neue Möglichkeiten für Shell Code Injection per JPG File raus :P
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben