Fehler bei neuer XAMP Version mit php Script

Alles, was PHP betrifft, kann hier besprochen werden.

Fehler bei neuer XAMP Version mit php Script

Postby 28Gavleborg » 14. October 2007 15:12

Ich benutze dieses Script um einen switch in meine Seite einzubauen:

Code: Select all
<?php
if(!isset($action))
{
include("service.php");
}
else
{
if(file_exists("$action.php"))
{
include("$action.php");
}
else
{
include("404.php");
}
}
?>


Der Seitenaufruf erfolgt dann mit:

index.php?action=service

Die Seite wird zwar angezeigt, auch oben in der Adresszeile erscheint dann die Url in form von:

http://www.domain.de/index.php?action=service

Nur wird nichts in der Seite geändert. Mit dem alten Xamp war das kein Problem. Die Versionen bis 1.4 von Xamp funktionieren, nur die neuesten Versionen machen das nicht. Wobei im Internet wenn ich die Seite hochlade wird es richtig interpretiert.

Woran kann das liegen? Muss ich wieder umsteigen auf alte Xamp versionen?
28Gavleborg
 
Posts: 8
Joined: 14. October 2007 15:05

Postby Wiedmann » 14. October 2007 15:59

Code: Select all
<?php
if(!isset($action)) {

index.php?action=service
...
Woran kann das liegen?

An mangelhafter (veralteter) Programmierung:
http://de.php.net/manual/en/language.va ... ternal.php
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby 28Gavleborg » 14. October 2007 16:18

Und was wäre dann besser. Anhand des Links konnte ich nichts finden. Damit war der Link also eigendlich keine großartige Hilfe. habe eigendlich die komplette Seite als html aufgebaut. dort wo wie gesagt der inhalt rein soll den switch eingefügt der wie open gepostet unter xamp nicht funktioniert.

Welche bessere möglichkeit gäbe es da sonst? Oder welcher Code wäre besser? hatte mal einen Code genommen der jede Seite einzeln definiert hatte nur musste ich dann für jede neue seite auch den switch ändern und das will ich eigendlich nicht.
28Gavleborg
 
Posts: 8
Joined: 14. October 2007 15:05

Postby Wiedmann » 14. October 2007 16:25

Und was wäre dann besser. Anhand des Links konnte ich nichts finden.

Du hast diese Seite wirklich gelesen, das Beispiel dort durchgearbeitet und auch verstanden (was dieses macht)?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby 28Gavleborg » 14. October 2007 16:30

Danke für die klasse Hilfe, wenn ich auf der Seite etwas gefunden hätte würde ich den Tread hier schon auf Close setzen. Wie mann sieht habe ich dort nichts im bereich gefunden der mir weiterhelfen könnte.
28Gavleborg
 
Posts: 8
Joined: 14. October 2007 15:05

Postby Knight1 » 14. October 2007 17:13

Das ist das einzige was Dir weiterhilft.
Lese Dir diese Seite mal genauer durch. (Gibts auch auf Deutsch)
Vorallem die Beispiele.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby 28Gavleborg » 14. October 2007 17:24

Den jetzigen Code habe ich damals auf der seite gefunden und entsprechend meiner seite nur die links geändert. Also frage ich mich wen es dort mal so angegeben war wiso sollte es auf einmal falsch sein? Habe beide seiten bereits 3 mal gelesen aber nichts gefunden was weiterhelfen könnte. Immerhin online funktioniert es schon mehrere Monate so ohne das nur ein einziger Browser das nicht anzeigen kann. Nur offline auf dem neuen XAMP gehts nicht, also hängt das ja nicht am code sondern vielleicht eher das das neue php den coder nicht mehr kann.

Und was auf dieser seite sollte mir da jetzt helfen?

kann keiner hier eventuell einen code posten der funktioniert das mann mal einen vergleich sieht? Irgendwelche Links kann jeder posten aber weiterhelfen tut das nicht im geringsten.
28Gavleborg
 
Posts: 8
Joined: 14. October 2007 15:05

Postby Wiedmann » 14. October 2007 17:44

Und was auf dieser seite sollte mir da jetzt helfen?

Da steht, wie man auf einen Wert (richtig) zugreift, der per z.B. GET übergeben wird.

Und da du es nicht so machst, schlägt schon dein erstes if() fehl:
--> Eine nicht vorhandene Variable wird natürlich nie vorhanden sein (!isset()).

BTW:
Beim Entwickeln, Testen und Debuggen von PHP-Code, solltest du dein error_reporting auf E_ALL einstellen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby 28Gavleborg » 14. October 2007 17:51

Eine andere variante wäre:

Code: Select all
<?php

$action = $_POST['action']; // oder eben: $_GET['action']

if (!isset($action)) {
    include 'service.php';
} else {
    if (file_exists($action . '.php')) {
        include $action . '.php';
    } else {
        include '404.php';
    }
}
?>


Fazit auch die variante geht nicht auf dem XAMP System, und eine weitere die auch nicht geht:

<?php
//Dateien die unkludiert werden. Der Schlüssel des Arrays stellt das dar was du per GET in dein Skript rein holst
//der Inhalt des Arrays ist die datei die dann inkludiert wird. Genau genommen gibt es eigentlich nur den Wert des
//Arrays zurück. beim Funktionsaufrauf weiter unten wird erst inkludiert. Als dritten parameter ist dann natürlich
//auch noch die Fehlerseite mit dabei
$file_array = array();
$file_array["section_1"] = "file.php";
$file_array["section_2"] = "ueberfile.php";

function getInclude($file_key,$files_array,$error_file="404.php") {
if(isset($files_array[$file_key])) {
return $files_array[$file_key];
}
else {
return $error_file;
}
}


if(isset($_GET['action'])) {
include (getInclude($_GET['action'],$file_array));
}
else {
include("service.php");
}

?>

Bei beiden Varianten sollten ja die verknüpfungen mit ?action=seitenname gleich bleiben wenn ich mich recht erinnere.

Aber funktionieren tun die trotzdem nicht.
28Gavleborg
 
Posts: 8
Joined: 14. October 2007 15:05


Return to PHP

Who is online

Users browsing this forum: No registered users and 1 guest