Include Formulare POST

Steusi

Nasenbär
Also ich habe folgendes Problem.

Ich habe eine Seite(A) in der mehrere unterseiten(B,C) eingebunden werden.

In der Unterseite(B) befindet sich ein Formular, welches die Infos mittes POST an eine weitere Seite(D) sendet!

Wie bekomme ich es hin, dass diese Seite(D) in der Hauptseite(A) am gleichen Platz wie die anderen Seiten (B,C) erscheint?
Ich bekommes es leider nicht hin. Mir fällt nur eins ein, ich sende meine Formulardaten an $_SERVER['PHP_SELF'] (entspricht Seite A) und auf der Seite sage ich, wird das Formular ausgeführt binde Seite D ein, denn diese kann mit den Informationen etwas anfangen.

Aber ich denke es geht einfacher oder?
Hoffe jemand hat einen guten Tipp :D DANKE schon mal!
 
okay....

da fallen mir spontan 3 Fragen ein

1. Wie sind die Seiten eingebunden?
2. Was haben wir zur Verfügung
3. Was willste alles senden bzw. wie sieht die Ursprungsseite und die Zielseite aus?
 
Hauptseite (ausschnitt):
PHP:
<!--Menü # LINKS-->
   			<div id="menu">
				
				<?php 
				if ($login){
				require("site/menu.php");
				}
				?>
       
        	</div>
        <!--Menü ENDE-->
        
        <!--Hauptbereich # MITTE-->
        	<div id="main">

				<?php 
				if ($login){
				require("site/allocator.php");
				} else {
				require("site/loginsite.php");
				}
				?>

     		</div>
		<!--Hauptbereich ENDE-->
Verteilerseite: allocator
PHP:
<?php   
require("lib/checkuser.inc.php");
  if(isset($_GET['section']))
    {switch($_GET['section'])
	  {case "main":require "mainsite.php";
	     break;
// usw.
default:  // Wenn eine ungültige Section angegeben wurde soll main gezeigt werden
	    require "mainsite.php";
		 break;
	  }
	}
  else
  {        // wenn section nicht angegeben wurde soll main angezeigt werden.
   require "mainsite.php";
  }
?>
angenommen Unterseite mainsite:

PHP:
echo('<form action="WAS_MUSS_HIER_STEHEN" method="post">');
echo('Benutzername: <br><input name="Nickname" type="text"><br>');
echo('Passwort: <br><input name="pass1" type="password"><br>');
echo('Passwort best&auml;tigen: <br><input name="pass2" type="password"><br>');
// etc.
echo('</form><p>');

Das Formular wird ein eine Seite gesendet, welche:
a) auch in der Hauptseite wie "mainsite" eingebunden sein soll
b) ein POPup ist, welches man dann schließt, würde auch gehen.

Für b) habe ich nur folgendes gefunden:
PHP:
<form action="http://www.tutorials.de" target="popup" onsubmit="window.open('','popup','width=400,height=400')">
 
Zuletzt bearbeitet:
Ich verstehe... ja das Problem das du hast haben oft Template Systeme, da hier alles über einen "zentralen" Parser läuft.

Es gibt mehrere Möglichkeiten dies zu beheben. Der klassische Weg der auch z.B. im ZEND Framework gegangen wird, ist der Weg über Worker bzw. Controller (Zend Framework). Hierbei schickst du dein Formular in eine zentrale Verarbeitungsdatei, z.B. /controller/form_d.controller.php

Diese verarbeitet deine Formulare und erstellt das "Datenarray" für die neue Aussageseite. Dieses speicherst du in deiner Session zwischen und wendest anschließend das Datenarray auf die neue Templateseite an oder aber lädst die Daten direkt in der eingebunden Seite. Wie die Seite dargestellt wird, ob zur "Ursprungsseite" zurückgegangen und PopUp bzw. weiterleitung ist dann vollkommen egal. Weil das kannst du für jede "Aktion" im Controller festlegen. Somit hast du auch effektiv die Anwendungs- von der Verarbeitungsschicht getrennt.

Die neue Seite selber bindest du ganz normal ein. Nur, dass sie halt keinen Menüeintrag bekommt und somit nur vom Controller aus anspringbar ist.

WICHTIG
du musst Sicherheitsabfragen einbauen, die Verhindern, dass der Controller z.B. von Bots fernbedient wird und die Zielseite "D" nur über den Controller erreichbar ist. Dazu prüft man einfach die Aufrufe quelle.

Nicht sauber abgefangene Controller sind auch die häufigste Schwachstelle bzw. Angriffsstelle für z.B. Forenhacks. Auch das Forum hier arbeitet mit solch einer Technik. Deswegen sollte man umbedingt NIE! eine allmächtige Controllerfile erstellen sondern "kritische" Aktionen in besonderst geschützte Files auslagern.

PHP:
< form action="[controllerfile]" method="post" name="" etc>

Aus der Controllerfile schickst du das ganze dann über einen Header weiter an die endgültige Zielseite.

Ich hoffe das hilft dir erstmal weiter.
 
Zuletzt bearbeitet:
Gut, das ähnelt ja meinem Ideenansatz am Anfang. Hm, ich werde es mal testen. Sollte machbar sein :D

DANKE

Hast du den Befehl für das ermitteln der Ursprungsseite zufällig im Kopf?
War mit REQUEST aber wie genau? $_SERVER['REQUEST'] vielleicht?
 
Zuletzt bearbeitet:
ne leider nicht wir haben uns für sowas ein eigenes Framework geschrieben :) aber einfach mal die(print_r($_SERVER)); ausgeben das findest du es sicherlich.

Wir gehen da sogar noch ne Stufe härter und legen alle Templates in die Datenbank und prüfen anhand von Hashkeys ob die Seite von extern "manipuliert" wurde etc.

gern geschehen ;)

viel Erfolg.
 
Ah [REQUEST_URI] na fast :D
Mit einer Datenbank klingt es auch nicht schlecht, habt ihr dadurch nur die erlaubten Seiten oder ersetzt ihr dadurch auch noch gleich die Session-methode?
 
nicht ganz...

die Templates werden primär über die DB verwaltet aber natürlich liegen sie auch Filemäßig vor. Einfach um durch Caching die Zugriffe zu beschleunigen.
 
Gibt es dieses Framework auch irgendwo zum angucken / runterladen?

EDIT: Meine das von SeeKing.
 
Zuletzt bearbeitet:
Zurück