require_once, include funktioniert für die Datenbankverbindung nicht

Hallo Leute,

normalerweise funktioniert require_once, include um das file abzurufen, welches die PDO - Datenbankverbindung gespeichert hat. Jedoch funktioniert es nicht in einem von Jquery abgefragten php file.
Wieso nicht?
Was kann ich machen das es funktioniert?
Es funktioniert weder der relative noch der absolute Pfad (/… oder http…).

Lg,
Chris

Oder minimales Codebeispiel deines Problems hilft dir hier keiner, wie auch?

Für mich klingt das nach Kauderwelsch:

Mit jquery über include_once() eine php-Datei zur Datenbankverbindung inkludieren.

Dass das Quatsch ist, sollte dir klar sein, also zeig her was du hast. Aber keine A4-Seite Quelltext, sondern nur das, was unbedingt nötig ist, dein Problem zu verdeutlichen.

Hallo Schmidt,

danke für deine AW.
Kurz beschrieben ich habe 3 Dateien:

  1. Datei php welche über den index abgerufen wird
  2. jquery file welche das File von Punkt 3 abruft
  3. PHP File das nur über Jquery abgerufen wird. (PDO Verbindung klappt wenn man dort eine neue PDO Verbindung erstellt, jedoch nicht wenn man die Bestehende includiert oder mit require once einfügt.)

Dieser Code ist der selbe wie im index.php allerdings funktioniert er nicht:
Bsp:
require_once(‚FolderA/FolderB/db_connection.php‘);
oder so
require_once(’/FolderA/FolderB/db_connection.php’);

oder wenn ich include verwende.
Was mach ich falsch?

Danke und lg,
Chris

Warum zerstückelst du das in unterschiedliche Dateien? Das führt dazu, dass du den gleichen Code mehrfach kopieren musst und damit verstößt du gegen das DRY-Prinzip.

Um zunächst deine Frage zu beantworten: Vermutlich liegt es an den relativen Pfaden, die vermutlich bei index und der anderen PHP unterschiedlich sind. Da du aber kein wirkliches Minimalbeispiel (!) lieferst, bleibt das eine Vermutung.

Die Lösung (auch für das DRY-Problem) wäre es, die Index.php auch mit jquery aufzurufen und innerhalb der index.php anhand eines parameters zu unterscheiden, welcher Content auszuliefern ist.

Vorteil:
-Redundanzen sind vermeidbar
-Berechtigungsverwaltung wird zentralisiert, falls du das hast
-Fragmentierung des Codes wird vermieden
-Übersichtlichkeit und Wartbarkeit des Codes können verbessert werden

Nachteil:
-wüsste nicht welcher

Günther

Stern? Bitte gern.

1 Like

Hi,

also vielleicht reden gerade alle an einander vorbei, aber…

Warum zerstückelst du das in unterschiedliche Dateien? Das
führt dazu, dass du den gleichen Code mehrfach kopieren musst
und damit verstößt du gegen das DRY-Prinzip.

eine index.php als „ViewController“ -> Routing zu benutzen, die auf einzelne Dateien verweisen ist gar nicht mal schlecht!

Um zunächst deine Frage zu beantworten: Vermutlich liegt es an
den relativen Pfaden, die vermutlich bei index und der anderen
PHP unterschiedlich sind. Da du aber kein wirkliches
Minimalbeispiel (!) lieferst, bleibt das eine Vermutung.

Wenn man die index.php als „ViewController“ verwendet hat man eigentlich keine Probleme mit relativen Pfaden!

Die Lösung (auch für das DRY-Problem) wäre es, die Index.php
auch mit jquery aufzurufen und innerhalb der index.php anhand
eines parameters zu unterscheiden, welcher Content
auszuliefern ist.

Warum sollte ich eine „Servertechnologie“ in dem Fall, in den Client verschieben/aufrufen? Lieber mache ich das umgekehrt und ich vermute mal, dass war von dem User die Frage:
Seine DB-Connect funktioniert nicht auf den Ajax-Request (weil in dem spezifischen Fall der Pfad nicht stimmt). Was, wenn man eine Webapplikation korrekt aufbaut eigentlich kein Problem sein dürfte, da der User bisher nicht mit dem entsprechenden Code rum kommt, bleibt das ein Blick in die Glaskugel!

Gruß XXD

Hallo XXD,

danke für deine AW.
Ich wusste nicht ganz wie ich auf die AW von Schmidt antworten sollte.
Deine AW trifft genau das Problem.
Ich habe den relativen Pfad des index.php zu DB kopiert und jede erdenkliche Möglichkeit ausprobiert. Nur der absolute Pfad mit www… führt zu keiner Fehlermeldung.
Allerdings werden auch keine Daten von der Datenbank ausgelesen.

Welchen Code soll ich als Bsp.: in das Forum posten?
Der index code ist lang und der des zweiten abgerufenen php Files auch.

Gruß,
Chris

Hallo Chris,

Ich habe den relativen Pfad des index.php zu DB kopiert und
jede erdenkliche Möglichkeit ausprobiert.

Wie sieht den deine index.php aus? Kannst du die posten?

Nur der absolute
Pfad mit www… führt zu keiner Fehlermeldung.
Allerdings werden auch keine Daten von der Datenbank
ausgelesen.

Ajax-Request? Kannst du die Fehlermeldung posten (entweder den Inhalt der Log-Datei oder die Ausgabe vom Client (Entwicklerconsole)

Welchen Code soll ich als Bsp.: in das Forum posten?

Den Teil der den Request abhandelt!

Der index code ist lang und der des zweiten abgerufenen php
Files auch.

Mag sein! Relevant ist der Request auf die spezifische Aktion und Aufbau deiner App!

Poste mal was du hast! Ich schau mal drüber (kannst es mir auch per mail schicken, wenn du magst).

Gruss XXD

Mein Freund,

also vielleicht reden gerade alle an einander vorbei, aber…

… du hast mein Posting und das des Fragers nicht verstanden.

Warum zerstückelst du das in unterschiedliche Dateien? Das
führt dazu, dass du den gleichen Code mehrfach kopieren musst
und damit verstößt du gegen das DRY-Prinzip.

eine index.php als „ViewController“ -> Routing zu benutzen,
die auf einzelne Dateien verweisen ist gar nicht mal schlecht!

DAS ist genau MEIN Vorschlag, der Poster macht das genaue Gegenteil davon.

Wenn ich sein Kauderwelsch richtig verstanden habe, hat er zwei verschiedene Einstiegspunkte in seine Applikation.

  1. Der Benutzer ruft im Browser die index.php auf, da funktionieren die relativen Pfade zur Inklusion weiterer PHP-Dateien.

  2. Wenn der Browser jetzt was per Ajax holen will, ruft er eine andere (!!!NICHT DIE INDEX.PHP!!!) auf, und DA funktionieren die relativen Pfade plötzlich nicht mehr.

Und jetzt lies einfach nochmal, was ich vorgeschlagen habe und wie sich das abgrenzt von den wirren Aussagen des Fragers.

Um zunächst deine Frage zu beantworten: Vermutlich liegt es an
den relativen Pfaden, die vermutlich bei index und der anderen
PHP unterschiedlich sind. Da du aber kein wirkliches
Minimalbeispiel (!) lieferst, bleibt das eine Vermutung.

Wenn man die index.php als „ViewController“ verwendet hat man
eigentlich keine Probleme mit relativen Pfaden!

DAS ist genau MEINE Rede.

da der User bisher nicht mit dem entsprechenden
Code rum kommt, bleibt das ein Blick in die Glaskugel!

Auch DAS habe ich mehrfach wiederholt.

Ich wusste nicht ganz wie ich auf die AW von Schmidt antworten
sollte.

Hm, mit einer Rückfrage etwa. Oder mit einem MINIMALBEISPIEL!!!

Deine AW trifft genau das Problem.
Ich habe den relativen Pfad des index.php zu DB kopiert und
jede erdenkliche Möglichkeit ausprobiert. Nur der absolute
Pfad mit www… führt zu keiner Fehlermeldung.

Da du immernoch daran glaubst, dass man aus einer PHP-Datei in deinem Fall eine andere PHP-Datei über eine URL aufrufen kann, unterstelle ich dir einfach mal, du hast die Dokumentation zu include() nicht gelesen oder zumindest nicht verstanden.

Welchen Code soll ich als Bsp.: in das Forum posten?
Der index code ist lang und der des zweiten abgerufenen php
Files auch.

Oh Mann! Wir brauchen ein MINIMALBEISPIEL.

Was ist ein vollständiges Minimalbeispiel?

Ein vollständiges Minimalbeispiel (oder kurz Minimalbeispiel oder VM) ist die kleinste Menge Code, die notwendig ist, um ein Problem zu reproduzieren.

Im Idealfall besteht ein VM aus genau einer Datei mit wenigen Zeilen Code. Zwar gibt es Fälle, in denen mehr als eine Datei benötigt wird, um das Problem zu reproduzieren, für diese Fälle gibt es aber Hilfmittel, die unter »Vollständige Minimalbeispiele aus mehreren Dateien« beschrieben sind.

Man sollte auch nicht versuchen, ein VM zu erstellen, das mehr als ein Problem verdeutlicht. So wie zu genau einem Problem genau eine Frage gehört und eine Frage genau ein Problem auf einmal behandeln sollte, sollte auch das zugehörige VM genau dieses eine Problem zeigen.

Was ist der Sinn eines vollständigen Minimalbeispiels?

Die Erstellung eines VMs ist ein in den allermeisten Fällen notwendiger Schritt, um einerseits die Ursache eines Problems zu ermitteln und andererseits mögliche Lösungen zu testen. In der Regel sollte ein Fragesteller daher immer davon ausgehen, dass ein solches VM benötigt wird und es auch selbst erstellen.

Im Idealfall findet man bei der Erstellung des VMs bereits die Ursache und die Lösung des Problems. Falls dies nicht der Fall sein sollte, sollte man eine entsprechende Frage formulieren und dabei auch das erzeugte VM als Code-Block mit angeben.

http://texwelt.de/wissen/fragen/569/was-ist-ein-voll…

Ich fasse das so zusammen: Wenn du hier viel Code reinkopierst wirst du genauso scheitern, wie ohne Code. Also erzeuge dir eine auf das wesentliche runtergebrochene Datei, die bei dir das Problem reproduziert. Dann kopierst du den ganzen Dateiinhalt hierher. Dann kann ich mir das nehmen, in eine PHP-Datei reinkopieren und müsste es folglich auch bei mir reproduzieren können.

Wichtig ist: Das Beispiel muss lauffähig sein. Nur ein Codefragment, wo ich noch "

Mein Freund,

Wusste gar nicht das wir befreundet sind?

also vielleicht reden gerade alle an einander vorbei, aber…

… du hast mein Posting und das des Fragers nicht verstanden.

Dein posting ehrlich gesagt nicht, auch beim Frager wird es schwer jedoch hatte ich mit ihm schon eine Diskussion darüber und er hatte mir versichert, er hätte das Prinzip (ViewController) auch so umgesetzt.

Warum zerstückelst du das in unterschiedliche Dateien? Das
führt dazu, dass du den gleichen Code mehrfach kopieren musst
und damit verstößt du gegen das DRY-Prinzip.

eine index.php als „ViewController“ -> Routing zu benutzen,
die auf einzelne Dateien verweisen ist gar nicht mal schlecht!

DAS ist genau MEIN Vorschlag, der Poster macht das genaue
Gegenteil davon.

Kann ich aus dem Post nicht rauslesen (ich habe immer noch im Hinterkopf er hat das so umgesetzt, wie ich ihm es zuvor schon geraten habe)

Wenn ich sein Kauderwelsch richtig verstanden habe, hat er
zwei verschiedene Einstiegspunkte in seine Applikation.

Glaskugel…ohne Code weiss ich das nicht (hoffe nicht!)

  1. Wenn der Browser jetzt was per Ajax holen will, ruft er
    eine andere (!!!NICHT DIE INDEX.PHP!!!) auf, und DA
    funktionieren die relativen Pfade plötzlich nicht mehr.

Jetzt kommen wir der Ursache schon näher…die index.php (kontrolliert die Seite -> wenn der User das so umgesetzt hat, wie ich ihm in anderen Post schon, klar machen wollte -> gibt es da kein Problem, da die index.php die View kontrolliert und egal ob meine ajax.php sonst wo liegt und der Pfad lautet dann z.B (ajax/ordnerA/ajax.php)…ist das völlig schmerzfrei…das konnte ich deinem Post nicht entnehmen und leider auch nicht des Fragestellers,…wir haben wenigstens das Glück uns auf Fakten berufen zu können (Codeteil) und der fehlt leider, würde dieser vorliegen, gehe ich davon aus das wir bestimmt einer Meinung wären.

Und jetzt lies einfach nochmal, was ich vorgeschlagen habe und
wie sich das abgrenzt von den wirren Aussagen des Fragers.

Um zunächst deine Frage zu beantworten: Vermutlich liegt es an
den relativen Pfaden, die vermutlich bei index und der anderen
PHP unterschiedlich sind. Da du aber kein wirkliches
Minimalbeispiel (!) lieferst, bleibt das eine Vermutung.

Wenn man die index.php als „ViewController“ verwendet hat man
eigentlich keine Probleme mit relativen Pfaden!

DAS ist genau MEINE Rede.

Nimm es mir nicht übel, ich hatte extra den post eingeleitet mit dem Satz „…vielleicht reden wir gerade alle aneinander vorbei“ Wörter sind Wörter…ich hätte lieber Codeausschnitte die sind eindeutig und gehe davon aus, dass wir dann bestimmt einer Meinung wären!

Hallo Leute,

danke für eure Hilfe.
Im Moment hab ich folgendes schon versucht:

  1. 1:1 den include Pfad aus dem index kopiert --> funktioniert nicht
  2. 1:1 die Datenbankverbindung aus dem db.php kopiert --> die einzige Möglichkeit die funktioniert
  3. einen absoluten Pfad (http…) eingefügt --> keine Fehlermeldung aber auch keine Daten die ausgelesen werden.
  4. eine Kopie der Datei in einen anderen Ordner angelegt und versucht auf diesen zuzugreifen.

Die Fehlermeldung für Punkt 1, 4 lautet: Unable to access /Global/db.php.
Nachdem ein 2 ter Programmierer auch schon darüber geschaut hat bin ich mir sicher dass es nicht aufgrund des relativen Pfades ist.

Daher habe ich auch XXD einen FTP Zugang via Email geschickt der direkt auf den Ordner verweist. Ansonst kann man diese Fehlermeldung auch in den errors von dieser Seite sehen, wenn man erneut die Suche betätigt und damit JS ausführt: http://www.best-global-support.com/find-job/?searchW…

Ich werd für morgen den Fehler lassen, aber dann anschließend wenn es keinen besseren Lösungsvorschlag gibt wieder auf Punkt 2 umstellen.

Für alle Lsg Ansätze wäre ich froh, jedoch scheint es kompliziert zu sein.

Lg,
Chris

Hallo Chris,

  1. 1:1 den include Pfad aus dem index kopiert --> funktioniert
    nicht

Den DB-include? Das könntest du über eine „common.php“ regeln.

  1. 1:1 die Datenbankverbindung aus dem db.php kopiert --> die
    einzige Möglichkeit die funktioniert
  2. einen absoluten Pfad (http…) eingefügt --> keine
    Fehlermeldung aber auch keine Daten die ausgelesen werden.

Deine db.php ist eine Klasse oder? -> http://php.net/manual/de/function.spl-autoload-regis…

Die Fehlermeldung für Punkt 1, 4 lautet: Unable to access
/Global/db.php.

also „/Global/db.php“ ist nicht relativ!

Nachdem ein 2 ter Programmierer auch schon darüber geschaut
hat bin ich mir sicher dass es nicht aufgrund des relativen
Pfades ist.

Daher habe ich auch XXD einen FTP Zugang via Email geschickt
der direkt auf den Ordner verweist. Ansonst kann man diese
Fehlermeldung auch in den errors von dieser Seite sehen, wenn
man erneut die Suche betätigt und damit JS ausführt:
http://www.best-global-support.com/find-job/?searchW…

Ist die Seite komplett von dir? Ist gar nicht mal so schlecht! Oder zumindest habe das jetzt nicht erwartet :wink:

Ich werd für morgen den Fehler lassen, aber dann anschließend
wenn es keinen besseren Lösungsvorschlag gibt wieder auf Punkt
2 umstellen.

Für alle Lsg Ansätze wäre ich froh, jedoch scheint es
kompliziert zu sein.

Kompliziert ist das nicht…ich hab leider erst gegen Ende der Woche Zeit mal reinzuschauen, dann kann ich dir genau sagen wo der Fehler liegt.

Im Moment hab ich folgendes schon versucht:

[…]

Du hast also NICHT das versucht, was ich vorgeschlagen habe. Und du hast auch KEIN Minimalbeispiel geliefert.

Die Fehlermeldung für Punkt 1, 4 lautet: Unable to access
/Global/db.php.

Nachdem ein 2 ter Programmierer auch schon darüber geschaut
hat bin ich mir sicher dass es nicht aufgrund des relativen
Pfades ist.

Aha. Und warum? Welcher Meinung ist denn der 2.Programmierer?

Daher habe ich auch XXD einen FTP Zugang via Email geschickt
der direkt auf den Ordner verweist.

Ist das dein Ernst, dass du einem Wildfremden einen FTP-Zugang schickst?

Ansonst kann man diese
Fehlermeldung auch in den errors von dieser Seite sehen, wenn
man erneut die Suche betätigt und damit JS ausführt:
http://www.best-global-support.com/find-job/?searchW…

Wenn ich mir die find-job.js anschaue, heißt es dort:

var encodedParam = '/Best\_Global\_Support\_345/specific/utils/get-subcategories.php?category=' + encodeURIComponent(category);

Nix mit einem zentralen Einstieg, sondern eine eigene Datei in einem eigenen Unterordner. Dass man dahinein nicht die gleichen relativen Pfade kopieren kann, sollte offensichtlich sein.

Ich werd für morgen den Fehler lassen, aber dann anschließend
wenn es keinen besseren Lösungsvorschlag gibt wieder auf Punkt
2 umstellen.

Es gibt einen besseren Vorschlag, wie ich schon 2mal ausgeführt habe.

Für alle Lsg Ansätze wäre ich froh, jedoch scheint es
kompliziert zu sein.

Nein, es ist nicht kompliziert. Deine Lösung ist viel komplizierter. Und jede noch so komplizierte Lösung die funktioniert wäre schneller umgesetzt gewesen als dieses tagelange frickeln, was du gerade betreibst.

Dein Ansatz ist tot! Wenn ein Pferd tot ist, dann steige ab. Ein totes Pferd reitet nicht schneller, wenn man es härter schlägt.

Günther

Hallo Günther,

danke für deine AW.
Kurz zusammen gefasst:
1)
Aha. Und warum? Welcher Meinung ist denn der 2.Programmierer? … mehr auf http://www.wer-weiss-was.de/app/article/write?Themen…
Der zweite Programmierer hatte darauf auch keine Idee außer die DB Verbindung erneut darin zu erstellen.

Ist das dein Ernst, dass du einem Wildfremden einen FTP-Zugang schickst? … mehr auf http://www.wer-weiss-was.de/app/article/write?Themen…
Der FTP Zugang bezieht sich zu einem Ordner. Dieser beinhaltet nur das php File das abgerufen wird. Diesen Zugang hätte ich auch dir als email geschickt. Jedoch kann man keine finden.
Was kann man da schon kaputt machen wenn man Sicherheitskopien hat?

  1. Ich gebe dir recht das es das beste wäre eine Datei via jquery abzurufen --> weniger Probleme der Wiederholung,… (Vorteile sowie du es am Anfang beschrieben hast).
    Da ich aber nicht weiß wie es geht und jquery versuche zu vermeiden, da man dazu immer eine libary,… benötigt, werde ich jz nicht die ganze Webseite umschreiben.
    Ich hoffe das ist verständlich?

  2. Dass man dahinein nicht die gleichen relativen Pfade kopieren kann, sollte offensichtlich sein. … mehr auf http://www.wer-weiss-was.de/app/article/write?Themen…
    Wieso nicht? Auch wenn ich einen absoluton Pfad nehme bringt es mir keine Lsg. da dieser dann zwar keine Fehlermeldung jedoch auch keine Resultate liefert.

Lg,
Chris

Wenn es statt der jquery Lösung eine js Lösung gibt würd ich es machen.

Hallo Günther,

danke für deine AW.
Kurz zusammen gefasst:
1)
Aha. Und warum? Welcher Meinung ist denn der 2.Programmierer?
… mehr auf
http://www.wer-weiss-was.de/app/article/write?Themen…
Der zweite Programmierer hatte darauf auch keine Idee außer
die DB Verbindung erneut darin zu erstellen.

Ist das dein Ernst, dass du einem Wildfremden einen FTP-Zugang
schickst? … mehr auf
http://www.wer-weiss-was.de/app/article/write?Themen…
Der FTP Zugang bezieht sich zu einem Ordner. Dieser beinhaltet
nur das php File das abgerufen wird.

Aber das ist nicht genug, siehe meinen Post zum Minimalbeispiel.

Diesen Zugang hätte ich
auch dir als email geschickt. Jedoch kann man keine finden.
Was kann man da schon kaputt machen wenn man Sicherheitskopien
hat?

Man könnte den Server für Stunden als Spambot oder sonstwas verwenden, da fallen mir eine ganze Reihe von Sachen ein, die man kaputt machen kann. Und wenn es nur ist, dass dein Server auf ne Blacklist kommt und ab da jede deiner Mails auf allen ernstzunehmenden eMailservern automatisch im Spamordner liegen.

Über die Verbreitung von allerlei gefährlichen Sachen will ich mal gar nicht sprechen. Und ein Backup wirst du nur dann einspielen, wenn du einen konkreten Verdacht hast. Das kann mehrere Tage bis Jahre dauern.

  1. Ich gebe dir recht das es das beste wäre eine Datei via
    jquery abzurufen --> weniger Probleme der Wiederholung,…
    (Vorteile sowie du es am Anfang beschrieben hast).
    Da ich aber nicht weiß wie es geht und jquery versuche zu
    vermeiden, da man dazu immer eine libary,… benötigt, werde
    ich jz nicht die ganze Webseite umschreiben.

Wieso denn die ganze Seite umschreiben? Du benutzt jquery schon für genau diesen Fall in der find-job.js

Dein Problem ist auch nicht der jquery-Aufruf, da suchst du an der falschen Stelle! Dein Problem liegt im aufgerufenen PHP-Skript

/Best\_Global\_Support\_345/specific/utils/get-subcategories.php

Nochmal langsam:

Rufe mit jquery nicht die Datei

 /Best\_Global\_Support\_345/specific/utils/get-subcategories.php

auf, sondern die Datei

find-job/index.php

mit einem zusätzlichen Parameter, sagen wir doAjax=true

Jetzt änderst du deine index.php so, dass sie zunächst - wie bisher - die Datenbankverbindung aufmacht und an einer geeigneten Stelle auf

isset($\_GET['doAjax'])

prüft. Wenn der Parameter gefunden ist, führst du deine Ajax-Operationen aus, lieferst das Ergebnis zurück und beendest dein Skript per

die()

BEVOR alle anderen HTML-Ausgaben gemacht werden.

That’s it. Nothing complicated here. Das ist eine Arbeit von 7 Minuten + 3 Minuten, um das hier einmal zu durchdenken.

So - und nur so - kannst du Redundanzen vermeiden. Das hättest du aber schon am Freitag haben können, wenn du dir einmal die Mühe gemacht hättest, meinen Ansatz zu durchdenken und nicht an der eigenen Lösung zu kleben.

Ich hoffe das ist verständlich?

Nein, ist es nicht. Wie schon gesagt, ist dein Ansatz tot. Wie lange willst du noch damit rumfriemeln, bevor du das von vorn beginnst?

Das habe ich bei meinen Azubis wirklich oft erlebt: Man verrennt sich in eine Sackgasse, ist aber sowas von verliebt in seinen Ansatz, dass man lieber tagelang rumstochert, als einmal einen Schritt zurückzutreten und mal was anderes zu probieren.

Ganz besonders schwer wird das scheinbar, wenn man vor lauter Querlesen eine angebotene Lösung als „zu kompliziert“ abtut, ohne sie wirklich verstanden zu haben.

Und nochwas… deine beharrliche Weigerung, das Problem auf das Minimum einzudampfen lässt auf Arroganz und Selbstverliebtheit schließen.

Günther

Hallo Chris,

Aha. Und warum? Welcher Meinung ist denn der 2.Programmierer?
… mehr auf
http://www.wer-weiss-was.de/app/article/write?Themen…
Der zweite Programmierer hatte darauf auch keine Idee außer
die DB Verbindung erneut darin zu erstellen.

Da hast du etwas nicht ganz verstanden (klar brauchst du den connect in der ajax.php), aber dein Gesamtkonzept scheint nicht zu stimmen. Mal ganz simple:
index.php (ViewController = reagiert auf die Requests und inkludiert->common.php (Initialisiert Session, Datenbank, Autoload (link zu doku von spl_autoload hatte ich dir geschickt)) auf die Reaktion im Request erzeugst du eine Klasse z.B. View (die den Content nicht kennt) füllst diese und renderst sie. Die db.php initialisierst du in der common.php (hatte dir mal ein Session.class geschickt, „exakt“ das gleiche mit dem Unterschied du weist das der $GLOBALS zu (so was kann/könnte man geschickter machen (über eine Registry))…aber es soll so einfach und effektiv wie möglich sein für dich.

Ist das dein Ernst, dass du einem Wildfremden einen FTP-Zugang
schickst? … mehr auf
http://www.wer-weiss-was.de/app/article/write?Themen…
Der FTP Zugang bezieht sich zu einem Ordner. Dieser beinhaltet
nur das php File das abgerufen wird. Diesen Zugang hätte ich
auch dir als email geschickt. Jedoch kann man keine finden.
Was kann man da schon kaputt machen wenn man Sicherheitskopien
hat?

Prinzipiell stimme ich hier Günther zu, also mach so was nicht bei jeden, mir wäre auch lieber gewesen du hättest mir die entsprechenden Dateien per Email geschickt (index.php, db.php, eine UnterordnerPagedatei.php und deine Javascript+der „ajax.php“)

  1. Ich gebe dir recht das es das beste wäre eine Datei via
    jquery abzurufen --> weniger Probleme der Wiederholung,…
    (Vorteile sowie du es am Anfang beschrieben hast).
    Da ich aber nicht weiß wie es geht und jquery versuche zu
    vermeiden, da man dazu immer eine libary,… benötigt, werde
    ich jz nicht die ganze Webseite umschreiben.
    Ich hoffe das ist verständlich?

Eine Js-Library ist ja nicht das Problem ( CDN?, + oder auch gesetzt am Ende des Body-Tags)…ich hab Webapplikationen die bis zu 30 JS-Libraries einbinden und trotzdem performanter sind als 90% aller Webapplikationen (NICHT MEIN VERDIENST -> Angular-Applikationen)

  1. Dass man dahinein nicht die gleichen relativen Pfade
    kopieren kann, sollte offensichtlich sein. … mehr auf
    http://www.wer-weiss-was.de/app/article/write?Themen…
    Wieso nicht? Auch wenn ich einen absoluton Pfad nehme bringt
    es mir keine Lsg. da dieser dann zwar keine Fehlermeldung
    jedoch auch keine Resultate liefert.

Hier stehen wir wieder bei null.

Gruß XXD

Hi Günther,

That’s it. Nothing complicated here. Das ist eine Arbeit von 7
Minuten + 3 Minuten, um das hier einmal zu durchdenken.

Das man so was sich evtl. in ein paar Minuten überlegen kann, wenn man die Basics hat, will ich gar nicht mal bestreiten, jedoch die Applikation umschreiben, dauert etwas mehr als ein paar Minuten (da ich mal vermute, dass grundlegende Fehler gemacht wurden)

So - und nur so - kannst du Redundanzen vermeiden. Das hättest
du aber schon am Freitag haben können, wenn du dir einmal die
Mühe gemacht hättest, meinen Ansatz zu durchdenken und nicht
an der eigenen Lösung zu kleben.

Ich hoffe das ist verständlich?

Nein, ist es nicht. Wie schon gesagt, ist dein Ansatz tot. Wie
lange willst du noch damit rumfriemeln, bevor du das von vorn
beginnst?

Das habe ich bei meinen Azubis wirklich oft erlebt: Man
verrennt sich in eine Sackgasse, ist aber sowas von verliebt
in seinen Ansatz, dass man lieber tagelang rumstochert, als
einmal einen Schritt zurückzutreten und mal was anderes zu
probieren.

…ich glaube deine Azubis sind weniger verliebt in den Code (sondern cool er „funktioniert“)…dazu sind Azubis Fachinformatiker und keine Programmierer (nicht mal die von der Uni können wirklich programmieren ;-( viel Theorie -> keine Praxis!)

Aber du hast definitiv Recht, lieber ein paar Tage Zeit nehmen, das neu aufzusetzen, satt die Tage nach dem Fehler zu suchen und…der nächste Fehler kommt bestimmt (Vorprogrammiert :wink:!

Hallo Günter und XXD,

vielen Dank für die Lsgs Vorschläge.
Ich finde den Ansatz von Günter auch sehr gut.

Ein Punkt bringt mich aber dann zum Nachdenken.
Wenn jetzt mehrere User die Webseite verwenden (+1000 User gleichzeitig) und ich das Skript der Seite jedes mal nach den gewünschten Content mit ajax durchsuche, benötigt der Server dann nicht mehr Zeit?

Oder ist diese Zeit so gering bei +1000 Usern das es egal ist?

Lg,
Chris

vielen Dank für die Lsgs Vorschläge.
Ich finde den Ansatz von Günter auch sehr gut.

vielen Dank.

Ein Punkt bringt mich aber dann zum Nachdenken.
Wenn jetzt mehrere User die Webseite verwenden (+1000 User
gleichzeitig) und ich das Skript der Seite jedes mal nach den
gewünschten Content mit ajax durchsuche, benötigt der Server
dann nicht mehr Zeit?

Dem Server ist egal, welche Datei du aufrufst. Das einzige, was dazukommt ist die Prüfung auf den Parameter, das ist aus meiner Sicht aber vernachlässigbar. Da dauert das Öffnen der Datenbankverbindung erheblich länger.

Wichtig ist natürlich, dass du die Prüfung auf diesen Parameter so spät wie nötig und früh wie möglich durchführst, damit du nicht Code ausführst, den du für das Ajax gar nicht brauchst.

Aber was mir ernsthaft Sorgen macht ist die Größe des Projektes im Vergleich zu deinen Programmierfähigkeiten. Wenn ich mir deine ganzen Posts seit dem Sommer ansehe, dann lernst du an diesem Projekt gerade das Programmieren. Das sind absolut schlechte Startvoraussetzungen.

Das macht sich schon dadurch deutlich, dass du grundlegende Strukturfehler gemacht hast, deren Beseitigung du jetzt scheust. Ich möchte mir gar nicht vorstellen, an wievielen Stellen du sicherheitsrelevante Fehler machen könntest. Ich denke da an SQL-injection oder das allseits beliebte XSS.

Wenn du ernsthaft vorhast, mit dieser Seite Geld zu verdienen, solltest du ein unabhängiges Code-Audit ansetzen, was jedes einzelne SQL-Kommando, jede Parameterauswertung und jedwede Ausgabe auf Sicherheitsprobleme abklopft. Ansonsten lesen wir schneller von deiner Webseite auf heise.de als es dir lieb ist.

Oder ist diese Zeit so gering bei +1000 Usern das es egal ist?

Wenn du wirklich mit 1000+ gleichzeitigen Usern rechnest, solltest du ein ganz striktes Programmierkonzept haben, was neben der Sicherheit (!) auch die Performance in den Vordergrund stellt. Eine einzelne Parameterprüfung ist nicht dein Problem, sondern Code den du unnötig aufrufst oder Schleifen die du unnötig lang laufen lässt. Ob das im konkreten Fall zutrifft, musst du im Einzelfall prüfen.

Bei 1000+ Usern spielt auch die Datenbank eine Rolle, 1000 gleichzeitige Datenbankverbindungen will so ein Server auch erstmal behandeln. Es geht auch darum, deine Datenbankstruktur und alle deine Anfragen hinsichtlich Performance zu prüfen. Wie weit hast du deine Datenbank normalisiert? Hast du sinnvolle Indize gesetzt, die durch deine Abfragen auch benutzt werden?

Ob deine Seite auch 1000+ User verträgt, kannst du nur schwerlich testen und hinterher korrigieren, sowas muss man vorher designen.

http://fscomps.fotosearch.com/compc/FSD/FSD320/x2263…

Günther