Sascha: Antwortseite eines Formulares in Tabelle XY ausgeben?

Beitrag lesen

Hallo Carsten,

erstmal vielen Dank für die sehr gute und ausführliche Antwort!
Aus deiner Antwort kann man einiges lernen finde ich.

Nun also du hast mich schon fast ganz richtig verstanden. Nur meine index.php macht nicht alles, sondern habe das schon so wie du es schon gesagt:

Wenn diese Seite index.php heisst, sehen die Links (z.B.) so aus:
  <a href="index.php?m_id=text_eins.htm">zum Inhalt eins</a>
  <a href="index.php?m_id=text_zwei.htm">zum Inhalt zwei</a>

wobei meine index.php praktisch so aussieht, das mit Hilfe von Tabellen als Frameersatz sozusagen diese nachgebildet werden, so ist z.B. links eine Tabelle, wo ein Menue includet wird, dann rechts daneben wird in einer anderen Tabelle der entsprechende Inhalt dazu geliefert! Die Links sehen genau so aus, wie du meintest. Wobei halt da logischerweise halt dann statt index.php z.B. guestbook.php oder download.php oder oder steht ...

So nun zu meinem Formular, dieses entsteht wiederum nicht aus der Hauptwebseite index.php, sondern sozusagen aus einer zweiten index.php Datei, wobei die einen anderen Namen hat, nennen wir sie einfach mal test-index.php, diese wurde per Klick im Menue in meine Tabelle m_id geladen, so nun kann man in dieser Tabelle einige Actionen ausführen, die immer wieder in dieser Tabelle auch erscheinen, soweit habe ich das auch schon mal hinbekommen. Bis halt auf das Formular da! Habe mal das ausprobiert, was du geschrieben hast, was allerdings leider noch nicht funktioniert hat! Der Fehler liegt wohl anscheinend in meiner Suchformularseite. Wenn ich mal in den nächsten Tagen etwas mehr Zeit habe, werde ich diese Seite wohl am besten von Grund auf neu programmieren.

Hatte es mit:

<form action="search.php3" method="post">
<input type="hidden" name="m_id" value="search.php3">

ausprobiert, weil die Formularseite heißt search.php3 und da die Antwort auch von der search.php3 kommt, bin ich davon ausgegangen, das es so heißen müste. Aber anscheinend steckt wohl irgendwo ein größerer Fehler im kompletten Search-Script!

Nun gut, soviel dazu.

Ich hätte da noch einmal eine Nachfrage zu folgendem:

Entweder filterst du alle .. aus, oder du machst ein Array mit allen Dateinamen und übergibst nur einen symbolischen Namen darauf:

$seitenurls=array ("ueber" => "about.html",
                     "neu"   => "news.html",
                     "suchen" => "suchen.php" );

Ein Link sieht dann so aus: <a href="index.php?m_id=neu">....
und das include:
  <?php include ("/homepages//htdocs/cb/".$seitenurls[$m_id]); ?>

Ich wollte das nun mal ausprobieren an einem anderen Projekt, da ich die Idee sehr gut fande und schon vor einiger Zeit schon an soetwas gedacht habe. Nur irgendwie funktioniert das bei mir nicht!

Und zwar habe ich folgendes ins Script geschrieben:

$seitenurls=array ( "download"   => "download.php4",
"neuzugang"  => "neueingang.php4",
"anmelden"   => "prog_add.php4",
"forum"      => "forum.html",
"partner"    => "partnersite.php4",
"feedback"   => "feedback.php4",
"kontakt"    => "kontakt.php4",
"impressum"  => "impressum.php4"
 );

dann in meiner Tabelle steht folgendes:

<? include ("/homepages/htdocs/beta-version/".$seitenurls["a_id"]); ?>

Und in meinem Menue stehen dann Links, die dieses Format:

index.php?a_id=partner

Nur ich bekomme ständig folgende Fehlermeldung in meiner Tabelle a_id:

Fatal error: input in flex scanner failed in /homepages/beta-version on line 1

Kannst du mir vielleicht sagen, was ich da falsch mache?

Ich würde mich über eine Antwort sehr freuen.

Im voraus besten Dank.

Mfg.

Sascha

Hallo Sascha,

Wenn ich dich richtig verstanden habe, hast du _eine_ PHP-Seite die alles macht.
Wenn diese Seite index.php heisst, sehen die Links (z.B.) so aus:
  <a href="index.php?m_id=text_eins.htm">zum Inhalt eins</a>
  <a href="index.php?m_id=text_zwei.htm">zum Inhalt zwei</a>

Die PHP-Seite (die index.php mit der Tabelle) muss jetzt auch die Formularauswertung machen.
Das Formular, das ebenfalls aus index.php kommt (es kann also in index.php oder in einer der includeten Dateien stehen!) sieht so aus:
  <form action="index.php" method="post">
  <input type=hidden name="m_id" value="suchen.php">
  <input type=text name="query">
    ... Rest vom Formular...

Jetzt brauchst du nur noch eine Datei 'suchen.php' die auf $query die
gewünschte Antwort liefert: Beispielsweise:
  <?php
    echo "Die Eingabe: <b>$query</b> enthält ".strlen($query)." Zeichen";
  ?>

SICHERHEITSHINWEIS:
Die hier gewählte Methode $m_id direkt als Dateinamen zu benutzen ist für öffentliche Webserver untauglich. Damit kann man sich nämlich auch Dateien ausserhalb von htdocs/ anzeigen lassen!
(http://deine.domain.de/index.php?index.php?m_id=../../../etc/passwd )
Entweder filterst du alle .. aus, oder du machst ein Array mit allen Dateinamen und übergibst nur einen symbolischen Namen darauf:

$seitenurls=array ("ueber" => "about.html",
                     "neu"   => "news.html",
                     "suchen" => "suchen.php" );

Ein Link sieht dann so aus: <a href="index.php?m_id=neu">....
und das include:
  <?php include ("/homepages//htdocs/cb/".$seitenurls[$m_id]); ?>

Anmerkung:
Variablen die per URL (gleichwertig <form ... method=GET> ) oder per <form ....method=POST> übergeben werden stehen in PHP automatisch zur Verfügung. Die Schreibweise mit $HTTP_GET_VARS[..] ist nur nötig, wenn man eine Methode erzwingen möchte.

Gruss,
Carsten