2016-01-11 14 views
5

Ich habe gerade angefangen zu lernen PHP und nur mit $_POST/$_GET. Nun möchte ich wissen, was ist das Pro und Con's der PHP die Daten aus einem Formular in der gleichen Datei verarbeiten oder senden Sie die Daten an eine andere Datei (action="anotherfile")?PHP in der gleichen Datei wie Formular oder separat? Geschwindigkeit

Logischerweise werde ich denken, dass das Senden in eine andere Datei würde die Zeit Prozess erhöhen, aber ist das wahr? Wenn ich das PHP-Skript in der gleichen Datei habe, scheint die Seite nicht neu zu laden, wenn ich den Submit-Button drücke (aber der Inhalt ändert sich). Oder tut es? Wenn dies der Fall wäre, wäre der einzige Unterschied, dass ich das Skript für das Menü (sagen wir, Sie haben das gleiche Menü auf allen Seiten) in beiden Dateien eingeben müsste? Was würde zu mehr Codierung/weniger Platz führen?

+0

haben Sie versucht, es selbst zu messen? –

+2

Als Hinweis auf Ihre Follow-up: Verwendung von GET-Parameter macht eine Verbindung leicht shareable. Sehen Sie sich an, wie Google Maps Standortinformationen in der Url speichert, oder stellen Sie sich vor, ein Produkt mit jemand anderem über einen Link wie http://www.someshop.com/?product=fancyproduct –

+2

@ T3H40 zu teilen, aber Sie müssen wirklich sicherstellen, dass keine sensiblen Daten weitergegeben werden. –

Antwort

11

Was ist das Pro und Contra der PHP die Daten von einem Formular in der gleichen Datei zu verarbeiten, oder senden Sie die Daten an eine andere Datei (action = "anotherfile")?

Du conflating Dateien und Urls.

Durch die logische Aufteilung zwischen verschiedenen Dateien (und dann include d wo angemessen) Sie seperate concerns und machen Sie Ihren Code einfacher zu verwalten.

durch eine einzige URL verantwortlich sein, die für beide die Form und Anzeigen der Formulardaten verarbeiten Sie nicht in die peinliche Situation enden, wo das Ergebnis der Verarbeitung des Datenform erfordert, dass Sie das Formular erneut anzuzeigen mit Fehlermeldungen darin. Wenn Sie dort zwei verschiedene URLs verwenden, müssen Sie entweder das Formular auf der Verarbeitungs-URL anzeigen (Sie haben also zwei verschiedene URLs, die das Formular anzeigen) oder eine HTTP-Umleitung zurück zur ursprünglichen URL durchführen, während Sie Details der Fehler irgendwie weitergeben .

Logischerweise werde ich denken, dass das Senden in eine andere Datei den Zeitaufwand erhöhen würde, aber ist das wahr?

Nein. Es spielt keine Rolle, in welchen Zeitskalen gearbeitet wird.

Wenn ich das PHP-Skript in der gleichen Datei habe, scheint die Seite nicht neu zu laden, wenn ich den Absenden-Knopf drücke (aber der Inhalt ändert sich).

Es wird neu geladen.

Wenn dies der Fall ist, wäre der einzige Unterschied, dass ich das Skript für das Menü (sagen wir, Sie haben das gleiche Menü auf allen Seiten) in beiden Dateien eingeben müsste?

Das ist, was include s sind.

+0

Danke! Beantwortete meine Fragen wirklich gut. – saltcracker

2

In jeder Sprache versuchen wir immer sauberen Code zu schreiben. Deshalb folgen wir MVC.

Logischerweise werde ich denken, dass das Senden in eine andere Datei würde die Zeit Prozess erhöhen, aber ist das wahr? Ich denke nicht.

Da, wenn wir Daten an eine andere Seite und auf einer anderen Seite an der Spitze senden wir Echo, dass Post-Daten und beenden. Du wirst sehen, dass es keine Zeit brauchen wird. Es braucht Zeit, wenn wir danach eine HTML-Seite umleiten/laden.

Es spielt keine Rolle, wo wir Daten senden (gleiche Seite oder andere Seite). Materie ist, was danach geladen wird.

+0

Vielen Dank für Ihren Beitrag, ich werde in den "MVC" schauen! – saltcracker

2

Es gibt keinen Unterschied in Bezug auf die Geschwindigkeit.

Unabhängig davon, ob Sie den Inhalt Ihres Formulars im Standard-Submit veröffentlichen, werden diese Daten an den Server gesendet und eine Antwort (nach der Verarbeitung) wird heruntergeladen.

Der einzige Unterschied ist die Organisation Ihres Codes. Die Logik, die das Seitenblatt (Menü oder andere feste Teile) zeichnet, sollte in einer Datei gespeichert werden, die Sie separat hinzufügen oder von einer Funktion aufrufen können.

Ist auch wahr, dass wenn Sie Ihre Daten aus irgendeinem Grund, registrieren Sie einen Benutzer zum Beispiel. Es ist eine gute Praxis, dass die PHP-Datei, die die Benutzerregistrierung behandelt, das tut und die Nachrichten und keine anderen Funktionen ausgibt. Wenn Ihre Datei über Logikschalter verfügt, die entweder ein leeres Formular oder eine Registrierungsnachricht basierend auf dem Vorhandensein von Post- oder Get-Variablen ausgeben, werden Sie feststellen, dass komplexere Aufgaben die Komplexität des Codes erhöhen .

+0

Danke! Ich begann heute, die Website neu zu organisieren. Erstellt ein Vorlagenverzeichnis für einige der DIVs und das Menü. Das Buch, das ich benutze "inc" (wahrscheinlich bedeutet "include") in den Namen der Dateien, die in anderen Dateien enthalten sind, zum Beispiel "menu.inc.php". Ist das ein Standard in der PHP-Community oder ist es nur ein Beispiel im Buch? – saltcracker

+1

Ich lege sie einfach in den Ordner namens Include, ich weiß es wirklich nicht. Normalerweise haben Sie mindestens eine Sicherheitsverwaltung und Datenbankverbindung sowie Vorlagen. Normalerweise habe ich einen Haupt-Include für Seiten, die angesehen werden sollen, und einen kleineren für Seiten, die mit AJAX-Techniken geladen sind. – AndreaBogazzi

+0

Oh ich sehe! Ich sehe zwar nicht, wofür ich die Sitzungs- und Sicherheitsverwaltungsverzeichnisse verwenden würde, aber wahrscheinlich später, wenn ich mehr über die Sprache (und SQL/Datenbanken, ein verdammt gutes Buch, das ich in einem anderen Kurs erlerne) erfahre. . Ich werde definitiv meinen Webserver besser organisieren müssen, da ich manchmal etwas verloren bin, weil der Code/die Skripte sehr groß werden. – saltcracker

1

Ich werde versuchen, sicherzustellen, dass ich Ihre Frage verstehe, indem ich es neu formuliere.

Wenn Sie ein Formular haben (/form.php), und die "Aktion" dieser Übermittlungsschaltfläche führt Sie zu einer separaten PHP-Seite (/form_action.php), gibt es keinen Unterschied in der Geschwindigkeit. Jede HTTP-Anfrage (form.php und) ist unabhängig - "form_action.php" erinnert sich an nichts über "form.php", es sei denn, Sie übergeben diese Information (als Parameter). Das meinen die Leute, wenn sie das sagen: HTTP is stateless. Es lohnt sich, neben den Details von PHP allgemein über how HTTP works zu lernen.

Wenn Sie ein PHP-Skript haben, das wiederum andere PHP-Skripte enthält, gibt es eine winzige Auswirkung auf die Leistung - zu klein, um es in so ziemlich jedem Fall zu messen.

Durch die Verwendung von Includes können Sie jedoch das Markup (HTML) von der Logik (PHP) trennen. Das ist eine wirklich gute Sache, wenn Sie etwas anderes als Basteln tun. Es ermöglicht Ihnen, Funktionen wiederzuverwenden, es macht es viel einfacher, den Code im Laufe der Zeit zu ändern und zu pflegen, und es hilft Ihnen, zu überlegen, was Sie erreichen möchten.

Es gibt viele verschiedene Möglichkeiten, wie Menschen das Rätsel "Wie behalte ich meinen Code sauber?" Gelöst haben; die aktuelle Orthodoxie ist "Model-View-Controller" (wie @monty sagt). Es gibt auch PHP-Frameworks, die das ein wenig einfacher zu implementieren machen - sobald Sie die Grundlagen der Sprache haben, können Sie sich Zend oder TinyMVC ansehen (es gibt mehrere andere, jede mit ihren Vor- und Nachteilen).

+0

Ja, Sie verstehen meine Frage. Ich werde auf jeden Fall schauen, wie HTTP (und andere Protokolle) funktioniert. Ich habe gestern darüber nachgedacht. HTML und PHP trennen, wenn das PHP-Skript mehrfach mit include wiederverwendet werden könnte. Ich werde in den MVC schauen, danke Mann! – saltcracker

Verwandte Themen