[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux-support] PHP
Hallo Martin
> Ich getrau mich schon fast nicht mehr...
Keine Bange...
> Jetzt öffnet sich bei mir nur die error Page. Funktioniert das bei dir?
Ich habe das Script nicht getestet, kann mir aber vorstellen wo der
Fehler liegt (siehe unten)
>>>> OK, ich würde sagen, das Script müsste etwa wie folgt aussehen:
>>>>
>>>> <?PHP
>>>>
>>>> $strFile = "home.php4";
>>>> if (isset($_GET["open"]))
>>>> {
>>>> $strFile = $_GET["open"].".php4";
>>>
>>>
>>>
>>>
>>> Vielleicht noch ein bisschen Input-Validierung?
>>> Wie waere es mit GET /index.php4?open='/pfad/zu/script-mit-passwoertern'
>>
>>
>>
>> Ja, da gebe ich Dir recht, dass mein Beispiel nicht das höchste der
>> Sicherheitsgefühle ist (ups, da ging mir das Script von gestern abend
>> doch zu schnell durch). Ich hab das Script jedoch rel. einfach
>> entsprechend der Frage gehalten.
>> Wenn ich etwas in der Art entwickle, mache ich das sonst immer über
>> ein Array, so dass ich die Dateinamen vorgebe:
>>
>> <?PHP
>>
>> $arrData[0] = "home.php4";
>> $arrData[1] = "error.php4";
>> $arrData[2] = "myfile.php4";
>> $arrData[3] = "myproduct.php4";
>>
>> $strFile = $arrData[0];
>> if (isset($_GET["open"]))
>> {
>> $nData = $_GET["open"];
Da $_GET["open"] ein String enthalten dürfte, wird dieser Datentyp auch
auf $nData übertragen. Die Zeile sollte besser heissen:
$nData = intval($_GET["open"]);
Damit haben wir nun in $nData auf jeden Fall einen Integerwert, was auch
eine Vereinfachung der folgenden Bedingung ermöglicht:
>>
>> if (is_int($nData) && ($nData >= 0) && ($nData < count($arrData)))
if (($nData >= 0) && ($nData < count($arrData)))
>> {
>> $strFile = $arrData[$nData];
>> }
>> else
>> {
>> $strFile = $arrData[1];
>> }
>> }
>> ?>
>> ....
>> <a href="<?PHP echo $PHP_SELF."?open=0"; ?>">Link 1</a>
>> <a href="<?PHP echo $PHP_SELF."?open=2"; ?>">Link 2</a>
>> <a href="<?PHP echo $PHP_SELF."?open=3"; ?>">Link 3</a>
>> ....
>> <?PHP include($strFile);
>> ....
Ich hoffe, dass es nun klappt und ich nicht wieder etwas übersehen habe ;-)
Gruss
Markus