Hallo allerseits, Wieder mal was neues für EleLa (Elektronik Lagerverwaltung), hier der Start der PHP-Version. Somit könnte EleLa auch über ein Web Browser bedient werden. Nur mal ganz langsam, ich habe hier jetzt keine fertige Web-Applikation für EleLa fertig gestellt, sondern nur das mal angefangen, den Grundstein gelegt. Die Dateien sind frei verwendbar und erweiterbar, also jeder der sich mit PHP/HTML aus kennt darf gerne weiter programmieren. Ich selbst bin kein PHP Experte, daher der Aufruf an die EleLa Gemeine hier an dem Projekt weiter zu Arbeiten. Das ganze ist jetzt seit 2 Tagen entstanden und meine aller erste PHP-Erfahrung. Diese aller erste Version bietet erst mal nur das Grundgerüst und man kann einige Daten anschauen. Die Datei: index.php ist die Start-Datei, die muss bei Apache eingetragen werden config.php die Verbindungsparameter zur MySQL Datenbank sowie globale Funktionen config.css Stylesheet tabtop.php Überschrift-Zeile um auf andere Seiten zu kommen Die restlichen Dateien sollten je nach EleLa Ansicht selbsterklärend sein. Man könnte dafür auch ein SVN über dieses Forum einrichten. Ich möchte das erst dann machen wenn sich jemand hierfür interessiert zu programmieren. Nun ja, es ist ein Anfang. Hier der Link zum EleLa Thread mit der EXE für Windows/Linux: Beitrag "EleLa - Elektronik Lagerverwaltung" Mit mehr Beschreibungen und der Einrichtung der Datenbank.
Gast
#2367193
Ich wei ja nicht. Ich hab damals so ein schönes Framework angefangen, mit vollparametrischer Suche, Darstellung über XML/XSLT und so weiter. Bisher hat da niemand dran weitergemacht :-} Hier: Beitrag "Re: Teile-Verwaltung für elektronische Bauteile" Im Anhang zwei Bildschirmphotos davon.
Sehr gute Idee! Das macht auch den Zugriff im firmeninternen Netz einfacher - plattformübergreifend ist es dann sowieso. Und PHP beherrschen wir hier auch, können also einen (kleinen) Teil beisteuern. Chris D.
Gast
#2367198
Und zu den PHP-Quellen: Alle Achtung davor, binnen zwei Tagen bereits so weit eingestiegen zu sein! Nichtsdestotrotz: Ich (Achtung, persönliche Meinung!) würde nicht mehr auf PHP setzen -- PHP vegetiert in bahnbrechender Konzeptlosigkeit und Redundanz vor sich dahin. Hunderte Baustellen, doppelte Interfaces, die alle mal die anderen ablösen sollten und so weiter. Dafür kannst du natürlich nix. Wofür du aber was kannst: Es fehlen halt doch noch ein wenig Erfahrung :-) . Datenbank: Verpack die in eine abstrakte Klasse. . Benutzer-E/A: Vorsicht bei Benutzereingaben und Ausgaben! HTML maskieren!
@Sven P. (haku) EleLa/PHP hat nun mal den Riesen Vorteil, dass es bereits seit über einem Jahr eine vollständig gut funktionierende EXE gibt, die nicht nur Bauteile sondern auch Projekte, Historie/Logbuch und vieles mehr verwalten kann. Dieses PHP/Web-Interface ist nur die logische Erweiterungsstufe um mehr Mobil zu sein, z.B. Netbook mit Android oder die ganzen Mini-Tablets wo es heutzutage gibt. @Chris D. (myfairtux) Ich würde mich sehr freuen!
Gast
#2367211
Markus Müller schrieb: > Dieses PHP/Web-Interface ist nur die logische Erweiterungsstufe um mehr > Mobil zu sein, z.B. Netbook mit Android oder die ganzen Mini-Tablets wo > es heutzutage gibt. Nein, ist es ja leider nicht. Es wird auf kurz über lang die vollständig redundante Umsetzung des Binaries werden. Du musst ja doch die ganze Programmlogik wieder in PHP nachprogrammieren, wenn du die Webschnittstelle nicht nur als 'nur zum Angucken' haben möchtest. Du hast am Ende zwei vollkommen verschiedene Projektstämme, die du getrennt pflegen musst: Baust du im Binary was neues ein, musst du PHP hinterherentwickeln und umgekehrt. Das bündelt dann unnötig Arbeitskraft, was immer schade ist. Durfte ich auch schon erleben, darum sieh es als vorsichtige Warnung. Ich hätte meinen PHP-Krams auch gerne weitergetrieben. Aber mir hats die Lust an Webprogrammierung/PHP gründlich verdorben.
Ich habe mir sehr sehr lange überlegt ob ich nicht eine EXE als
Internetserver baue, auf die dann die Clients zugreifen oder ob ich PHP
verwenden sollte.
PHP hat den Vorteil dass es auf Providern im Internet geht, die EXE geht
da nicht. Somit fiel die Entscheidung auf PHP.
Wegen:
>. Datenbank: Verpack die in eine abstrakte Klasse.
Ich habe jetzt noch keine Ahnung von Klassen, aber die ganzen
Datenbank-Aufrufe habe ich schon ausgelagert, so dass man die Befehle je
nach Datenbanktyp (MySQL/PostgreSQL) umschalten könnte, siehe z.B.1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
>. Benutzer-E/A
Sind ja noch keine drin ;-)
Sven P. schrieb: > Du hast am Ende zwei vollkommen verschiedene Projektstämme, die du > getrennt pflegen musst: Baust du im Binary was neues ein, musst du PHP > hinterherentwickeln und umgekehrt. Das bündelt dann unnötig > Arbeitskraft, was immer schade ist. Durfte ich auch schon erleben, darum > sieh es als vorsichtige Warnung. > > Ich hätte meinen PHP-Krams auch gerne weitergetrieben. Aber mir hats die > Lust an Webprogrammierung/PHP gründlich verdorben. Ja, die doppelte Pflege ist ein Problem. Wobei wenn die ein oder andere Funktion über Web nicht verfügbar ist, darin sehe ich jetzt noch kein Problem. Ich denke, es ist am wichtigsten, dass wenn man unterwegs ist, dass man den Bestand mal für ein bestimmtes Bauteil überprüfen kann. Also man sitzt grad bei einem Kumpel und diskutiert über eine neue Schaltung oder so. Wenn nicht PHP, was für eine Sprache hättest du stattdessen verwendet? Noch kann man problemlos wechseln, die 2 Tage sind ja fast nichts und das ganze sind sicher mehrere Mann-Monate Arbeit.
Gast
#2367219
Markus Müller schrieb: > Ich habe mir sehr sehr lange überlegt ob ich nicht eine EXE als > Internetserver baue, auf die dann die Clients zugreifen oder ob ich PHP > verwenden sollte. Offen gestanden, sind das beides miserable Ideen :-/ In erster Variante erfindest du den HTTP-Server neu, mitsamt Sicherheitslücken. Warum? Greif doch lieber auf gut ausgetestete Server zurück. Und die andere Variante, naja. PHP halt :-} > PHP hat den Vorteil dass es auf Providern im Internet geht, die EXE geht > da nicht. Somit fiel die Entscheidung auf PHP. Die Gründe sind mir geläufig, habe mich immerhin einige Jahre damit herumgeschlagen. Beweggrund für mein Projekt war eigentlich, einen zentralen Server aufzusetzen. Ich habe alles so programmiert, dass es mehrbenutzerfähig ist. Die Benutzer sollten dann z.B. in der Lage sein, Bauteilangebote zu inserieren, zwecks Such&Find bzw. Bauteiltausch. > Wegen: >>. Datenbank: Verpack die in eine abstrakte Klasse. > Ich habe jetzt noch keine Ahnung von Klassen, aber die ganzen > Datenbank-Aufrufe habe ich schon ausgelagert, so dass man die Befehle je > nach Datenbanktyp (MySQL/PostgreSQL) umschalten könnte, siehe z.B. >
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
Ja, genau das sollst du nicht machen. Du produzierst redundanten Quelltext in rauhen Massen (if, if, if...). Schau dir doch z.B. mal phpBB an, dort hat man das mit Klassen gelöst. Oder Benutz halt Klassen aus der PHP-Klassenbibliothek, dafür sind die doch da... >>. Benutzer-E/A > Sind ja noch keine drin ;-)
Gast
#2367221
Markus Müller schrieb: > Ja, die doppelte Pflege ist ein Problem. Wobei wenn die ein oder andere > Funktion über Web nicht verfügbar ist, darin sehe ich jetzt noch kein > Problem. Ich habe dich gewarnt :-) > Ich denke, es ist am wichtigsten, dass wenn man unterwegs ist, > dass man den Bestand mal für ein bestimmtes Bauteil überprüfen kann. > Also man sitzt grad bei einem Kumpel und diskutiert über eine neue > Schaltung oder so. Hast du mal darüber nachgedacht, ob man auf so einen MySQL-Datenbankserver überhaupt von extern zugreifen kann? Ziemlich viele Webhoster erlauben nämlich nur Zugriffe vom Server selbst ('localhost'), aus Sicherheitsgründen. Dann würde dein PHP zwar laufen, aber die EleLa könnte nicht darauf zugreifen. > Wenn nicht PHP, was für eine Sprache hättest du stattdessen verwendet? > Noch kann man problemlos wechseln, die 2 Tage sind ja fast nichts und > das ganze sind sicher mehrere Mann-Monate Arbeit. Ich weiß es einfach nicht, darum bin ich so sehr blockiert, was Webprogrammierung angeht. Für den HTML-Kram habe ich mit XML und XSLT sehr gute Erfahrung gemacht -- das funktioniert besser, als jedes Template-System (Smarty, FastTemplate...). Aber als Skriptsprache selbst... tja. PHP ist von allen noch am C-ähnlichsten, was mir persönlich gefällt. Das war es aber auch schon -- guck dir nur mal den Namensraum an. Ansonsten, Python vielleicht, oder Ruby(-on-Rails). Dieses Forum hier ist m.W.n. in Ruby programmiert.
Kennst Du EleLa, ich meine die Windows oder Linux-Version? Damit könntest Du etwa abschätzen, dass viele Dinge fast unmöglich sind die in PHP rein zu bekommen. Ruby hat schon eine sehr spezielle Syntax. Python ist schon einfacher. Ja, Provider bieten selbst kaum eine Möglichkeit der direkten Anbindung der Datenbank. Firmen/Privatpersonen hingegen lassen den MySQL Server / PHP zu Hause laufen und stellen über DynDNS einen Zugriff auf die Seite bereit. Damit braucht es auch keinen Provider dafür muss der eigene "Server" immer an sein. Es kommt hier auf die Leute drauf an, mit welcher Sprache die am liebsten programmieren würden.
Gast
#2367584
Ja, kenne ich. Und nein, ich wüsste nicht, was da so unmöglich dran sein dürfte. Delphi hat in meinen Augen auch eine sehr spezielle Syntax :-) PHP indes auch. Guck dir doch nur mal ein paar Seiten Dokumentation zu OOP an. Du wirst feststellen, dass die nur vor Ausnahmen, Sonderregelungen für Rückwärtskompatibilität, dann doch wieder tiefgreifenden Änderungen gegenüber früheren Versionen und Unterschieden zum OOP in C++ strotzen. Gerade letzteres ist ungemein gefährlich, wenn man nebenher eben C++ programmiert. Ich will dich beim besten Willen nicht daran hindern, eine PHP-Version zu entwickeln. Nur sei dir halt dessen bewusst, wie unglaublich fehleranfällig PHP-Quelltext ist, der von nicht ganz erfahrenen Leuten geschrieben wird. Und denk daran, nicht zu viel Arbeitskraft zu vergeuden. Schau dir OpenOffice und LibreOffice an, die haben ein ähnliches Problem.
Ja, ich kann mir auch gut Vorstellen dass PHP eine "gewachsene" Struktur ist in dem viel rein gemacht wurde weil es mal jemand gebraucht hat. Ich hab auch schon ein Befehl gefunden, der tatsächlich nicht existiert (ausführbar ist). Eine riesige Liste mit allen möglichen und unmöglichen Funktionen und doch nicht das dabei wie ich wollt (Preisanzeige mit dynamischen Kommastellen von 2..5 Stellen). Ich möchte auch nicht zu viel in die Web-Oberfläche stecken, es reicht wenn man per Web die Daten abrufen kann. z.B. dass wenn man unterwegs beim Einkaufen ist, dann könnte man noch schnell die Bestell-Liste überprüfen. Eingaben incl. aller Sicherheitsabfragen sind dann nicht nötig. Auch sollte es dann kein Sicherheitsproblem / unautorisierte Änderung der Daten geben. Anbei eine Erweiterung, Baumansicht der Typen für Filterung von Bauteilen unter "Bauteile". Klick auf Baum, dann Klick auf Bauteil-Bezeichnung, dann öffnen sich die Details. So, und jetzt seid ihr dran ;-)
Gast
#2367690
Naja herzlichen Glückwunsch. Du hast prompt zwei der übelsten Fehlerquellen eingebaut, die man einbauen kann ;-)
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Du verlässt dich zum einen darauf, dass $TVID zwangsläufig über $_GET herinkommt. Das geht schief für den Fall, dass register_globals eingeschaltet ist. Die isset()-Funktion benötigt man, wenn überhaupt, nur im Zusammenhang mit $_GET/_POST/_COOKIE, niemals aber bei einfachen Variablen! Und zum anderen winkst du das, was über TVID herinkommt, nahtlos ungelesen an den Datenbankserver weiter. Das ist brandgefährlich, denn ich kann ganz einfach beliebige SQL-Befehle an die Datenbank schicken (SQL injection!). Unter der Voraussetzung, dass sich der Baum selten ändert, würde ich übrigens ein Nested Set deiner hierachichen Eltern-Kind-Beziehung vorziehen. Dann ließe sich mit nur einer SQL-Abfrage der gesamte Baum aus der Datenbank holen, ganz ohne rekursive Funktionen und solcherlei. Du musst überdies unbedingt mal nach deinem HTML schauen, da fehlen überall Anführungszeichen bei den Attributen. Deine zweite Beschreibung deines Vorhabens (mal eben den Bauteilbestand beim Einkauf prüfen) klingt schon deutlich besser.
Ja, dass denke ich mir, dass da einige Sicherheitsabfragen fehlen. Die " in den Attributen, hab ich zum Teil vergessen rein zu nehmen. Wie schon zu Anfang geschrieben, ich bin blutiger Anfänger in Sachen PHP. Hingegen in der EleLa EXE sind die ganzen Sicherheitsabfragen überall drin, wenn doch was schief geht wird es richtig geloggt, incl Funktionsaufrufhierarchie. Ist schon ein enormer Nachteil, dass in PHP eine Variable immer der Typ Variant ist und nicht spezifiziert wie bei C oder Pascal. So würde es besser aussehen:
1 | |
2 | |
3 | |
>Deine zweite Beschreibung deines Vorhabens (mal eben den Bauteilbestand >beim Einkauf prüfen) klingt schon deutlich besser. Es soll ja auch kein Totengrab werden, sondern ein Add-On zum bestehenden EleLa.
Gast
#2367697
Markus Müller schrieb: > Wie schon zu Anfang geschrieben, ich bin blutiger Anfänger in Sachen > PHP. Das ist ja kein Verbrechen. Darum geb ich dir ja die Hinweise :-) > So würde es besser aussehen: >
1 | |
2 | |
3 | |
Exakt. Noch besser sogar:
1 | |
2 | |
3 | |
4 | |
Dann ist $TVID garantiert eine Zahl und schon ist diese Sicherheitslücke behoben.
Ich denke, ich lasse das doch besser so:
1 | |
2 | |
3 | |
4 | |
5 | |
Denn: Die Baum-Ansicht wird von bauteil.php aufgerufen. Wenn man möchte kann von da aus die $TVID schon vorbelegt werden. (Das war auch heute Nacht mein ursprünglicher Gedanke)
Gast
#2367726
Dann solltest du den ganzen Baum in eine Funktion verpacken. So wie jetzt ist es jedenfalls Murks -- Tu doch mal so, als ob du das in Delphi programmieren müsstest. Dann nämlich gäbe es auch kein isset() :-)
Der Code vom Baum kommt auch nicht von mir, das ist ein Demo aus dem Netz. Siehe Copyright zu Beginn der Datei. Das Demo war für Frames ausgelegt. Um mehr Performance zu erreichen müsste man das ganze auch als Frames aus legen, dann würde der Baum auch nicht immer mit neu aufgebaut werden. >Tu doch mal so, als ob du das in Delphi programmieren müsstest. Dann >nämlich gäbe es auch kein isset() :-) Das ist leichter gesagt als getan, ich kenne einfach zu wenige Befehle in PHP, bzw. habe noch nie ein einfaches "ordentlichen" Projekt gesehen/erklärt bekommen. Wahrscheinlich ist es am besten man macht aus dem Baum eine Klasse, denn der Baum könnte man auch für die Projektansicht gebrauchen. Ich habe ein paar Kleinigkeiten geändert und auch die Datei typ.php gelöscht. Denn die Baumansicht ist unter Bauteil drin und somit nicht extra nötig.
Anbei wieder etwas mehr... Bauteilansicht mit Baum, Baumansicht kann jetzt öfter verwendet werden, ist zwar immer noch keine Klasse, dafür ist die gleiche Routine jetzt auch unter Projekt drin (nur ein mal geschrieben in treeview.php). Bei Klick auf das Bauteil sind nicht nur die Lager/Gehäuse Einträge ersichtlich sondern auch das zugehörige Foto aus der Datenbank. (Siehe Bild) Projekt: Mit Baum als Filter. Klick auf das Projekt zeigt das Foto sowie die Positionen. Datei config.php enthält jetzt keine globale Funktionen mehr, die sind jetzt alle in globalfunc.php. Damit muss man nicht mehr jedes mal die MySQL Verbindungsparameter neu setzen. Am besten die alten Dateien alle löschen und neu aus dem ZIP einkopieren. PS: Bisher finde ich die PHP Programmierung richtig cool. Der Notepad++ hat auch die ganzen Befehle in der Auswahlliste.
Der Download eines PDF Dokumentes hat noch nicht funktioniert, anbei die geänderten Dateien. Jetzt klappt das auch von überall her. globalfunc.php ersetzen dl.php ist neu adresse.php hatte noch ein Fehler drin - PDF, GIF, PNG, JPG werden in einem neuen Fenster/Tab direkt geladen und angezeigt. - alle anderen Dateien werden als Download geladen. - Geht auch über Internet, nicht nur im Intranet. Aber Vorsicht: Wenn man im Projekt interne Dokumente, Schaltpläne als Handbuch angehängt hat, dann können diese jetzt auch über Internet "gestohlen" werden!!! Um das zu verhindern müsste man z.B. in der Datei "dl.php" eine Regel einbinden die verbietet, dass z.B. alle Dateien mit der Endung ".T3001" (hier als Beispiel Target Datei) nicht geladen werden können, siehe Array-Variable "$ExcludeExt" die beliebig erweitert werden kann.
Gast
#2371265
Paar Kleinigkeiten: In 'globalfunc.php':
1 | |
2 | |
Es müsste heißen: 'if ($Query === false)' (drei Gleichheitszeichen!). Die Methode, mit der du Bilder in HTML einlagerst, funktioniert mit nicht ganz aktuellen IE nicht. Vielleicht solltest du überlegen, ob die Bilddaten überhaupt in die Datenbank gehörten -- der übliche Weg wäre, in der Datenbank nur etwa IDs zu speichern. In 'dl.php': stop execution macht man eigentlich nie. Regulär schon garnicht mit die(), sondern dann mit exit(). die() ist für fatale Fehler gedacht. Und ebenda noch zwei gefährliche Lücken: (1) Cross-Site-Scripting, denn du reichst $_GET['file'] ungesehen an den Browser zurück. Man könnte beliebiges HTML da hineinbetten. (2) Du prüfst $file nicht. Man kann sich jede beliebige Datei auf dem Server herunterladen! (Leserechte vorausgesetzt) Ich habs auch nochmal versucht mit PHP und meiner Datenbank und habe aufgegeben. PHP ist so inkonsistent an allen Ecken und Enden und selbst etablierte Datenbankschnittstellen sind einfach nur zum Kotzen umgesetzt. Schade :-/
Vielen Dank für die Infos! === hab ich gemacht. Mit dem IE muss ich anschauen. Die Bilder möchte ich in der DB halten, denn wo soll ich die sonst haben. Extra hunderte Dateien irgendwo liegen ist nicht praktisch. Zudem gibt es für EleLa auch die Import/Export Funktion, die nutzt exakt die gleiche Datenbank. Also die Bilder sind in der Datenbank, in einer extra Tabelle "foto". Ja, stimmt, das wäre eine Fatale Sicherheitslücke! Ich werde den Download auf Tabelle/ID ändern, dann kann man nur die wirklich hinterlegte Datei laden. Ja, PHP ist das eine, aber die vielen Browser dazu, die auch nicht unbedingt das machen was die sollen :-/ Beispiel <table> <th>, der Firefox druckt auf jeder Seite den Tabellentitel, der IE nicht. Daher ist der IE für mich nicht das Maß der Dinge. Wenn man möchte dass es ordentlich geht muss man nun mal einen Browser verwenden was die HTML Befehle richtig implementiert hat. Was natürlich nicht heißt, dass ich es nie versuche dass es mit dem IE auch richtig geht. (abgesehen davon hab ich nur den ollen original XP IE.) Ein paar Daten relativ simpel über PHP ohne Schnörkel und sonstwas an zu zeigen, das sollte doch jetzt nicht das rießen Problem sein. Es sind doch fast nur "Grundfunktionen" die ich nutze, kaum spezielle Extras.
Anbei die neue Version. - Die Sicherheitslücke der Datei laden ist jetzt weg, es wird jetzt der Tabellenname sowie die ID übermittelt, das Script dl.php sucht dann den Name/Link heraus. - config.php wurde mit ein paar Variabeln erweitert, so ist jetzt auch die Array-Variable "$ExcludeExt" dort enthalten und nicht mehr in dl.php. - Bauteile Detailansicht jetzt auch mit Lieferant - Überall Bilder hinzugefügt, sonstige kleine Verbesserungen. Am besten alle Dateien löschen und die neuen aus dem ZIP neu einkopieren und in der config.php die MySQL Verbindungsdaten wieder rein schreiben.
Puh, also ganz ehrlich? PHP ist zwar weit verbeitet und das nehme ich auch bei kleinen Skripten, die in einem abgeschlossenen Netzwerk laufen sollen. Aber für ein so umfangreiches Projekt würde ich das vergessen. Wie Sven schon sagt, ist PHP zu einem Riesengebastel geworden. Und dadurch, dass es so einfach ist, lauern überall Sicherheitslücken. Da verlierst du irgendwann den Überblick.
Ich bin ja schon fast fertig, zumindest für meinen Teil. Ich mache die Bestell-Liste noch etwas breiter (mehr Felder) und das Suchen-Fenster, dann hat sich das Web-Interface für mich erst mal erledigt. Eingaben möchte ich nicht machen, dafür gibt es die EXE (Win + Linux). Wenn jemand möchte, kann er gerne was in einer anderen Sprache mal anfangen, ich wäre gespannt darauf (unterstützen wegen Datenstruktur/Funktionen kann ich gerne). Diese paar PHP Funktionen von mir können auch gut als "Spickzettel" verwendet werden um das in der anderen Sprache um zu setzen. PHP ist für mich naheliegend, da es viele gute Doku zu allem möglichen gibt, z.B. SelfPHP und C ähnlich ist. Sonst hätte ich das ganze nicht innerhalb dieser paar Tage so schnell hin bekommen.
Gast
#2373035
Naja, so schlimm ist PHP nicht. In der nächsten Version werden erst mal alle defekten und doppelten Funktionen raus geschmissen, dann ist es auch erst mal wieder etwas schlanker (natürlich daneben noch die Sicherheitsupdates)... Übrigens empfehle ich dir bei Benutzereingaben (GET) immer Funktionen wie addslashes() empfehlen (oder wenn für MySQL die passenden MySQL-PHP Funktionen), sonst ist es mit hacken sehr leichtes Spiel ;-)
>sonst ist es mit hacken sehr leichtes Spiel
Ich kenne natürlich die ganzen Sicherheitslücken nicht.
Hast Du mir ein kleines Beispiel?
Derzeit übergebe ich nur ID's, außer beim Download und da muss auch der
Tabellen-Name ein erlaubter sein, sonst verweigert dl.php den Download.
Anbei die Suchen-Seite, nun kann auch ein Bauteil mit suchen gefunden werden.
Anbei die neue Version, folgende Änderung: - Bauteil mit "Schnellsuchen" Eingabefeld, damit wird die Bauteilliste verkleinert, Wildcardzeichen ist *. - Die Status-Felder haben jetzt auch die richtige Hintergrundfarbe - Die Links sind jetzt in der richtigen Schriftart - Bestell-Liste hat jetzt auch das Status-Feld. Anbei alle Dateien im Zip, die entpacken und ersetzen.
Anbei die neue Version, folgende Änderung: - Jetzt passt auch das CSS Style-Sheet - kleinere Zwischenräume in den Tabellen, damit passt mehr auf den Bildschirm - Bilder werden jetzt auch mit dem M$ IE gezeigt - Bauteil > Lager/Gehäuse mit Link auf Gehäuse - Bauteil > Lieferant Link mit Bestellnummer direkt zum Lieferant - Info-Seite mit Copyright und Lizenzbestimmung Anbei alle Dateien im Zip, die entpacken und ersetzen.
Was wohl gemeint war mit hacken ist: dann könnte ein "hacker" einfach die variable manipulieren, heißt: Get wird ja per URL übertragen, also: xyz.de/index.php?VARIABLE=INHALT Wenn man jetzt böse ist und einfach manipuliert sowas macht: xyz.de/index.php?VARIABLE="BÖSER CODE" Daher kann so was passieren: PHP: echo "Die Variable heißt: " . $_GET['Variable']; //Variable ausgeben gewollt ist in HTML dadurch Bsp.: Die Variabel heißt: xyz aber durch Manipulation mit HTML Zeichen wie < lassen sich dann andere Dinge einbauen, als Beispiel ganz einfach: xyz.de/index.php?VARIABLE=<img src=...> dann würde ein Bild ausgegeben was nicht gewünscht war etc. Dagegen hilft die Funktion: htmlentities -> http://php.net/manual/en/function.htmlentities.php Weiter gibt es die Möglichkeit durch "" Zeichen den PHP Code zu manipulieren (PHP injection) dazu siehe: http://www.flashforum.de/forum/php-und-mysql/tutorial-php-code-injection-197417.html
Vielen Dank für die Erklärung, ich denke ich habe das jetzt verstanden. Ich meine ich habe keine Sicherheitslücke mehr drin. - In der Regel werden nur ID-Zahlen übergeben, die werden alle mit is_numeric() / intval() geprüft / gewandelt - Bei der Anzeige des Handbuchs wird der Tabellen-Name übergeben und der muss exakt einem Name aus der erlaubten Liste übereinstimmen. Somit sollte es keine Sicherheitslücke in der aktuellen PHP Version geben. Hier aus dl.php:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Ich habe die Suchen-Felder einmal überprüft. - ' < > klappt - " klappt nicht Also habe ich jetzt alle " Zeichen aus dem Suchtext entfernt. Wenn ich das nach \" wandle klappt das auch nicht. Ein anderen Code konnte ich damit nicht ausführen. Nur das eine " Zeichen bereitet Probleme bei der wiederanzeige des Suchtextes in der Eingabebox deshalb habe ich es entfernt und es sollte somit auch hier keine mögliche Sicherheitslücke mehr da sein.
Sieht gut aus...
Obwohl ich
if (isset($_GET["ss"])) // Suche Texteingabe
{
$ss = $_GET["ss"];
$ss = str_replace('"', '', $ss);
if ($ss == '') $ss = '*';
} else $ss = "*";
So schreiben würde:
if (isset($_GET["ss"])) // Suche Texteingabe
{
$ss = addslashes($_GET["ss"]);
if ($ss == '') $ss = '*';
} else $ss = "*";
Ist kürzer, aber ist nichts besonderes...
Ich hab das mal getestet mit "addslashes", geht leider nicht richtig. Meine Methode in der ich einfach die " entferne funktioniert viel besser, denn dann werden zumindest die ' erlaubt. Im neuen EleLa Setup wird das aktuelle EleLaPHP.ZIP auch mit in das EleLa Verzeichnis kopiert, dann hat das jeder schon und kann das in sein PHP einbinden. Derzeit ist das Setup nur zum Test hier zu finden: http://mmvisual.de/Setup_EleLa_Test.zip Wenn niemand mehr einen Fehler finden, dann wird es das richtige Setup sein.
Gast
#2437172
Hallo, beim Rumspielen mit der PHP-Version fiel mir auf, dass noch SQL-Injection möglich ist. Zum Beispiel erhalte ich mit diesem Suchbegriff alle Datensätze, weil das OR TRUE in die WHERE-Klausel gelangt: mysearchstring\' OR TRUE -- ab hier ist alles SQL kommentar Da es (glücklicherweise) mit mysql_query nicht möglich ist, mehrere verkettete SQL-Anfragen gleichzeitig abzusenden, konnte ich auf die Schnelle keine Daten oder Tabellen löschen. Die potentielle Sicherheitslücke bleibt aber. Ich selbst hab keine Ahnung von PHP, aber es gibt eine Funktion mysql_real_escape_string, die Du Dir mal ansehen solltest. Am Lohnendsten sollte es aber sein, sich mit sog. prepared statements vertraut zu machen. Ich hoffe, mein Kommentar nützt Dir etwas. Andreas
Vielen Dank! Ich schaue mir das mal an. Ich habe schon gesehen, dass PHP extrem Sicherheitskritisch ist, daher soll EleLaPHP auch eine "nur Viewer" Version bleiben.
Ich habe Bauteil und Suche abgeändert. Jetzt wird die Eingabe \' nicht mehr zugelassen. Mit EleLa >> Extras >> Info >> Versionsabfrage kann EleLaPHP V1.2.11B28 geladen werden.
Markus Müller schrieb: > Ich habe Bauteil und Suche abgeändert. Jetzt wird die Eingabe \' nicht > mehr zugelassen. Das löst das Problem ansich (SQL-Injections) aber nicht. Deutlich besser ist es, die Variablen direkt vom SQL-Server einfügen zu lassen, "Prepared Statements" als Stichwort.
1 | |
2 | |
3 | |
4 | |
Um das Statement deutlich übersichtlicher zu machen kann man das Statement in eine externe (.sql-)Datei auslagern und soetwas wie folgt machen:
1 | |
2 | |
Dadurch erspart man sich auch das 5-malige escapen (bei den prepared Statements übrigens überhaupt nicht erforderlich!) und verwursten der Variablen. Zudem ist es deutlich übersichtlicher ;) HTH Chris
Gast
#2438609
Hi Markus, ich muss Chris zustimmen. Ich wollte Dich eigentlich auch Richtung Prepared Statements schubsen :) Durch das Ersetzen von \' sind nur minimale Änderungen im Suchstring nötig, um das gleiche Ergebnis zu erzielen: mysearchstring\\'' OR TRUE -- ab hier ist alles SQL kommentar Wenn Dir die Einführung von PreparedStatements für den Anfang zu aufwändig ist, habe ich folgende Empfehlung (am Beispiel von suche.php) Am Anfang der Datei musst Du mit dem Suchstring gar nichts machen, wenn er nicht leer ist:
1 | |
2 | |
3 | |
4 | |
5 | |
Weiter unten machst Du die Eingabe, so wie der Nutzer sie eingegeben hat, sicher, indem Du die Funktion mysql_real_escape_string() benutzt:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Ich habe eine Reihe von Tests durchgeführt und es scheint zu funktionieren. Alle kritischen Zeichen werden "escaped" (wie sagt man das auf Deutsch?) und die Suchen, die ich durchgeführt habe, liefern das erwartete Ergebnis. Aber danach wurde ich mutig. Ich habe testweise ein Bauteil mit dem ominösen Namen mysearchstring\' OR TRUE -- ab hier kommentar anlegen wollen, aber da meckerte Elela, dass ein Bauteil dieses Namens schon existierte. Das zeigt, dass SQL-Injection auch im Hauptprogramm möglich ist. Was geklappt hat war ein Bauteil mit dem Namen mysearchstring\' OR FALSE -- ab hier kommentar anzulegen, und zwar 2x. Danach wurde ein doppelter Eintrag in der Datenbank erkannt und ich konnte erst weiterarbeiten, als ich den zweiten Eintrag gelöscht hatte. Mit diesem komischen Bauteil in der Datenbank hab ich nochmal die PHP-Suche ausprobiert. Folgendes hatte Erfolg: mysearchstring* mysearchstring*'* mysearchstring*' OR FALSE -- ab hier kommentar *'* Sobald ich aber den Backslash mit eingegeben habe, wurde kein Ergebnis mehr geliefert. Mit 2 Backslashes ging es: mysearchstring\\' OR FALSE -- ab hier kommentar Das hängt vermutlich davon ab, wie die Daten genau in der Datenbank stehen. In der Praxis spielt das sicher kaum eine Rolle, aber wenn Du eine saubere Lösung haben willst, solltest Du die Eingaben in Elela noch für die Datenbank aufbereiten. Dafür gibt es sicher auch fertige Funktionen in C (oder welche Sprache Du auch verwendest). Anschließend sind auch die komischen Eingaben wie "mysearchstring\' OR TRUE -- ab hier kommentar" kein Problem mehr. Oder Du nutzt, um mal einen Bogen zum Anfang des Posts zu schlagen, Prepared Statements. Damit hältst Du Dir jetzt und in Zukunft alle derartigen Probleme vom Hals. Sie sind das Mittel der Wahl bei allen Datenbankoperationen aus einer Programmiersprache heraus. Ich hoffe sehr, dass Du meinen langen Post nicht als Abwertung Deiner Arbeit verstehst. Im Gegenteil, ich hoffe, Du machst noch lange weiter und ziehst Nutzen aus einem kritischen Blick von außen :) Andreas
Hallo Andreas, Vielen Dank für die Tests und Infos. Vor allem dem "mysql_real_escape_string()", diese Funktion muss ich als "MyRealEscapeString()" in die globalfunc.php rein nehmen, damit ist das ganze für andere Datenbanken vorbereitet. Ich habe mit das mit den "Prepared Statements" von Chris schon angeschaut, aber ich wusste nicht wie ich das richtig/einfach in EleLaPHP umsetzen kann. Wegen der EXE, kannst Du mir ein paar Screenshots mailen, wie das ganze aussieht? Vielleicht können wir auch mal eine Online-Sitzung machen, dann kann ich mir das "Live" anschauen. Denn wenn ich das in EleLa umbaue, dann ist das doch ein etwas größerer Aufwand, mindestens 200 SQL Scripte sind da verbaut. Wobei man ohnehin nahezu Vollzugriff auf die Datenbank mittels Extras >> Datenbank hat. Daher ist der SQL-Inject in der EXE nicht ganz so dramatisch. (Ist von mir auch so gewollt damit jeder selbst Spezialabfragen / Exports machen kann) Grüße Markus
Was die Übernahme von Daten per GET/POST angeht, kann man auch settype nutzen. Hilft auch gleichzeitig, nicht übergebene Variablen zu erstellen. Auch sowas wie
1 | |
2 | |
3 | |
4 | |
5 | |
lässt sich eleganter schreiben, zumal isset() nicht in allen Fällen wirklich sinnvoll ist. Bei Strings empfehle ich strlen() bzw. mb_strlen().
1 | |
2 | |
3 | |
4 | |
5 | |
Kürzer, aber unleserlich wäre:
1 | |
Grüße Udo PS: Ich stelle auch gerne Teile meines PHP-Frameworks (z.B. Datenbankklasse oder ähnliches) zur Verfügung. In einer späteren Version wäre vielleicht Ajax ganz sinnvoll. Hab mit dem Dojo-Framework in der Beziehung gute Erfahrungen gemacht.
Markus Müller schrieb: > Ich habe mit das mit den "Prepared Statements" von Chris schon > angeschaut, aber ich wusste nicht wie ich das richtig/einfach in > EleLaPHP umsetzen kann. janz enfach ;) ich hab dir zwei Dateien aus meiner "persönlichen" Bibliothek angehängt. Daher weder Garantie auf Korrektheit und Vollständigkeit. Das "nette" an meinem Konstrukt ist, dass du (in Verbindung mit PDO) nur die *_mysql.php kopieren musst und die Datenbankeigenen Connectionstrings einfügen musst. Von PDO werden schon einige Eigenheiten der verschiedenen Datenbanken abgefangen, den rest kann man auch über Funktionen wie z.B. $db->GetDateConst(); (aktuell nicht implementiert) bekommen. (Für jede DB muss man diese Konstanten halt einzeln pflegen) Oder eben die Statements in verschiedene externe Dateien auslagern und von dort laden. Das kann man je nach Datenbanktyp auch automatisch machen. Zum Beispiel kann man (bei Implementierung in den Klassen) folgendes machen: Die Queries in Dateien sind in strukturierter Form wie bestellung.sqlite.sql; bestellung.sql Beim Laden des Statements wird zuerst geprüft, ob es für den jeweiligen Datenbankadapter ein spezifisches File gibt, wenn nicht wird geprüft ob es ein allgemeines File gibt (geimeinsamer Syntax im SQL). Wenns nix passendes gibt kann man immernoch crashen ;) Hier noch ein kleines Beispiel für die Benutzung meiner Lib:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Die Suche würde ich (für MySQL) wie folgt umsetzen: suche.mysql.sql:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
suche.php:
1 | |
2 | |
3 | |
4 | |
5 | |
Die EleLa ist so wie ich es gesehen hab' ausschließlich prozedual geschrieben. Ich weiß, wenn man objektorientierte Programmierung nicht kennt, sieht sie wie ein Monster aus. Aber durch sie kann man sich das Leben deutlich leichter (und den Code übersichtlicher) machen.
Ich kann mich erst am WoE darum kümmern, da soll es regnen....
Gast
#2439785
Hi Markus, Markus Müller schrieb: > Wegen der EXE, kannst Du mir ein paar Screenshots mailen, wie das ganze > aussieht? > Vielleicht können wir auch mal eine Online-Sitzung machen, dann kann ich > mir das "Live" anschauen. ich hab grad keinen Zugriff auf den Elela-Rechner. Ich bereite am Freitag mal ein paar Screenshots zum Nachverfolgen vor.
Hallo Andreas, ja das wäre super!
Gast
#2442363
Hi Markus, hier sind ein paar Screenshots. 1) Wenn ein Bauteil angelegt wird, das ein \' im Namen hat, wird ein SQL-Syntaxfehler gemeldet. 2) Wenn man den Bauteilnamen mit einem SQL-Kommentar enden lässt, ist die Syntax der SQL-Statements wieder korrekt (typisches SQL-Injection-Szenario: http://xkcd.com/327/ :)) 3) Einfügen von OR TRUE in eine SQL-WHERE-Klausel. Die interne Abfrage, ob ein Datensatz mit diesem Namen schon existiert gibt damit fälschlicherweise true zurück. 4) Mit Klick auf OK springt man zum ersten Datensatz, weil ein Bauteil dieses Namens doch noch nicht existiert. Die Datenbank im Hintergrund ist bei mir übrigens MySQL. Ich hoffe, das hilft Dir weiter. Andreas
Vielen Dank für die Screenshots! Ich muss da mal forschen woran das liegt. Die Komponenten sind automatisch mit der Query verbunden und ich habe so keinen Einfluss in meinem Code. Ich werde da mal im Lazarus-Forum nachfragen.
Ich denke ich habe da was gefunden woran das liegen könnte. Da hab ich dann mal zu tun, 30000 Codezeilen durch zu gehen...
Vielleicht wäre es gut ein so großes Softwareprojekt mit Hilfe einer Versionsverwaltung oder einem Contenttracker zu verwalten. z.B. github.com kann für freie Software kostenlos folgende Dienste zur Verfügung stellen: * Versionsverwaltung mit git, * ein Wiki, * ein Issuetracker, * forken/mergen (insgesamt der gesamte kollaborative Part) ist sehr gut auf github.com
Gast
#2443259
Hi Markus, ich hab den Thread im Lazarus-Forum verfolgt und denke auch, dass Du auf dem richtigen Weg bist. Bevor Du jede einzelne Query in Elela bearbeitest, kannst Du Dich ja erstmal auf eine Maske (z.B. Bauteile) konzentrieren und dann eine Testversion zur Verfügung stellen. Ansonsten lass mich zum Trost sagen, dass Du nicht der einzige bist, der sich gerade durch so eine Aufgabe quält :) Andreas
Ich kenne diverse Programme wie SVN oder CVS. Ich nutze die nicht, da ich alleine programmiere und mich eher "belasten" als erleichtern. Ich mache öfter ZIP-Archive, da ist dann alles drin und in sich konsistent. Mein ganzes EleLa Verzeichnis, samt Sicherungen hat schon über 1GB auf der Platte belegt. Sicherung auf 4 Festplatten (davon 2 USB-Platten), daher geht garantiert nichts verloren. Programmierumgebung auf 2 Rechnern. Man könnte mit solch einer Versionsverwaltung zwar auch einen alten Stand raus holen, aber mal ehrlich, wer braucht das? Wenn ein Bug drin ist, dann muss der im aktuellen Release raus. Meist kommen Bugs rein, indem ich eine neue Funktion hinzu programmiere und in meinen Tests nicht finde, bzw. Folgeerscheinungen in Zusammenhang von anderen Funktionen und da hilft auch kein alter Stand. Die Dokumentation der Versionen zu EleLa macht auch EleLa selbst mit Hilfe eines Projektes und der Historie. Ich lasse immer wieder eine "UpdateBeschreibung.pdf" raus und stelle diese ins Forum.
@Andreas Dann teste mal... EleLa >> Extras >> Info >> Versionsabfrage V1.2.11C02 Nur die eine Abfrage, wie in Deinen Bildern gezeigt habe ich geändert und sollte jetzt richtig gehen.
Gast
#2443270
Yup, mach ich am Montag auf Arbeit.
Nun sollte EleLaPHP sicherer sein. Ich habe unter glopalfunc.php diese Funktion hinzugefügt:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Die wird von bauteil.php und suche.php verwendet. EleLaPHP V1.2.11C03 kann mit EleLa >> Versionsabfrage oder direkt von meiner Homepage geladen werden.
@Andreas Ich habe jetzt doch schon den ganzen Code bearbeitet... V1.2.11C03 gibt es mit der Versionsabfrage. Siehe auch hier: Beitrag "Re: EleLa - Elektronik Lagerverwaltung ab V1.2.11A26"
Gast
#2445861
Hi Markus, die gute Nachricht zuerst: ich hab es nicht geschafft, einen SQL Fehler zu provozieren, weder bei der Eingabe in Elela, noch bei der Suche in der PHP-Anwendung. Leider sind mir noch 2 andere Probleme aufgefallen. 1) Backslashes in der Suchanfrage werden automatisch escaped, das heißt, wenn der zu suchende Datensatz einen Backslash enthält (z.B. ein Bauteil namens somestring\ ), muss die Suchanfrage mit 2 Backslashes formuliert werden: somestring\\ Das gilt sowohl für die Exe als auch für die PHP-Version. Ein Workaround in der PHP-Version könnte sein, alle Backslashes in der Suchanfrage zu verdoppeln:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Da anschließend die Eingabe mit MyEscapeString gereinigt wird, tut sich
m.E. damit auch keine Sicherheitslücke auf.
Ich habe bislang nur mit MySQL getestet und kann nicht sagen, ob das
Backslashproblem auch bei anderen Datenbanken auftritt. Wenn das
Verhalten unterschiedlich ist, müsste die Backslashverdopplung evtl.
nach MyEscapeString ausgelagert werden. Vielleicht gibt es auch eine
Datenbankeinstellung, die die Verdopplung der Backslashes überflüssig
macht.
2) Die Eingabe von Anführungszeichen (") in der Suche der PHP-Version
sorgt dafür, dass sich eigener HTML-Code einfügen lässt.
Der Grund ist die Zeile1 | |
Damit kann durch die ungeprüfte Übernahme von Zeichen kaputtes HTML erzeugt werden, was das Einbetten von eigenem HTML und Scripten ermöglicht. Führe mal eine Suche mit folgendem String aus und klicke dann nochmal ins Eingabefeld:
1 | |
Die Lösung ist wie üblich das Escapen:
1 | |
In der Exe liefert ein Anführungszeichen im Suchfeld alle Ergebnisse zurück. Soviel erstmal von der Testfront Andreas
Gast
#2445871
Ich habe jetzt nicht den ganzen thread durchgelesen aber weiter oben hast du nach einer Alternative zu PHP gefragt -> Für diesen Anwendungsfall ist Ruby on Rails praktisch perfekt geeignet. Unter anderem weil du per Auswahl des Datenbankadapters nicht so ein Gepfusche machen musst und du selber kein SQL mehr schreiben musst. Weiterhin wird automatisch korrekt escaped und Schutz gegen CSRF in Formularen ist schon eingebaut. Du kümmerst dich nur noch um deine Applikationslogik und Views und den Rest besorgt Rails für dich automatisch Wenn du bei PHP bleiben willst, dann schau dir mal Smarty als Templatesystem an. Dieses echo "html-code" ist ja wohl das gruseligste überhaupt und seit der Steinzeit schon nicht mehr aktuell. http://guides.rubyonrails.org/getting_started.html http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
@Andreas Vielen Dank für die Tests! Ich habe htmlentities() hinzu gefügt, jetzt sollte auch der HTML-Inject weg sein. (Unter Suche und in Bauteil) Das "//aus eins mach zwei" hab ich auch hinzu gefügt. Wenn ich jetzt ein Bauteil mit dem Name "\" anlege und im Suchen nur ein "\" eingebe, dann klappt das Finden nicht, erst wenn ich ein "\*" eingebe. Aber daran würde ich jetzt nicht zu sehr Wert legen und unter "Known Bugs" ablegen. In meiner EXE-Version (die gleiche wie in der Versionsabfrage) kann ich in Suchen ein " eingeben und es kommen keine Ergebnisse. EleLaPHP V1.2.11C05 kann mit der Versionsabfrage geladen werden. @ D.I. Ja, Ruby wurde schon mal genannt, ich habe mir das einmal ein wenig an geschaut, aber kam damit nicht zurecht. Zu tief wollte ich mich damit nicht beschäftigen, denn EleLaPHP soll die ganze EleLa Eingabe auch nicht ersetzen sondern nur ein Viewer werden. Der zweite Grund warum ich PHP verwendet habe ist, dass PHP viele Leute beherrschen und das bereits mit XAMPP das PHP gleich mit installiert wird.
Markus Müller schrieb: > } elseif ($P_DBTyp == "PostgeSQL") Fehlt da nicht ein "r" im String? Gruß, Frank
Ja, stimmt. PostgreSQL wird derzeit nicht ganz unterstützt, da fehlen noch ein paar Codezeilen in der globalfunc.php. Bisher hatte auch noch niemand den Wunsch das mit PostgreSQL zu machen ;-) Ich habs bei mir geändert.
Gast
#2446097
Hi Markus, das ist seltsam. Bei mir funktioniert die Suche ohne Stern, sowohl mit einem Bauteil namens \ als auch einem Bauteil namens "\" Die Debug-Ausgabe ist übrigens noch an. Andreas
Doch jetzt geht das bei mir auch, außer "*\", da wird das \ Bauteil nicht gezeigt. Ich habe V1.2.11C05b hochgeladen, jetzt ist auch die Debug-Ausgabe wieder weg (auskommentiert). Und das "r" von Frank ist auch drin.
Gast
#4739113
Hallo Zusammen, bis vor zwei Tagen lief mein EleLa einwandfrei, dann habe ich am Server eine Update (apt-get update / apt-get upgrade) durchgeführt. Jetzt kann der Client nicht mehr auf die Datenbank zugreifen. Mit phpmyadmin komme ich noch ganz normal auf den Server und sehe die Datenbanken. Woran kann das liegen? Hier die Fehlermeldung: 22:12:41 Error: Cannot open database! Access violation (DB-Connect) Gruss Toni
Gast
#5411306
Hallo, ich spiele gerade mit deinem Elela und habe mir dazu die Elela_PHP auf meinem Server installiert. Frage: kann man in der PHP-Version keine Bauteile/Projekte hinzufügen? Geht das nur im Programm? Oder habe ich da eine Funktion nicht aktiviert? Grüße (und weiter so ;-) )
Mit EleLaPHP kann man nur Anzeigen. Damit kann man von unterwegs mal in die Datenbank schauen, das war das Ziel. Vielleicht klappt es ja mal dass sich die Datenbanken von PartDB und EleLa angleichen, dann könnte man dieses Tool als Web-Frontend nutzen. Ich selbst habe leider zu wenig Erfahrung & Zeit das richtig zu machenl.
Hallo Zusammen, der Thread ist ja schon ein wenig betagt. Trotzdem die Frage, ob das Projekt EleLa in der PHP-Version noch aktiv ist und falls ja, ob es eine Anpassung auf die PHP version 7+ geben wird oder bereits gibt? Nebenbei, großen Respekt für die Entwicklung der Desktopversion ;-)
Ja, EleLa PHP ist schon etwas ähm "eingerostet". ;-) Für die Zukunft ist schon ein besseres Web Frotend angedacht, das ist jedoch noch nicht wirklich Spruchreif und wird sicher noch länger dauern.
Gast
#6080776
Da ich auch mehr an einer PHP Verion interessiert wäre, würde ich mich sehr freuen wenn es hier weiter gehen würde. Also am besten wird nur noch PHP gemacht und die andere Version eingestellt. Aber das ist wohl nicht zu erwarten. Würde da auch gerne helfen, nur PHP kann ich leider nicht.
Wer eine gute Webbasierte Lagerverwaltung haben möchte sollte bei PartDB mal vorbei schauen. Jan kann sehr gut Web Entwicklung machen und wie man sieht ist das ebenfalls enorm viel Arbeit: Beitrag "Lagerverwaltung Part-DB V0.5.x" Ich konzentriere mich hingegen auf ein gutes PC Basierte Programm, da ich von Web Entwicklung nicht wirklich viel Ahnung habe und auf 2 Hochzeiten ist immer schlecht zu tanzen.
Gast
#6083586
Part-DB kenne ich und habe ich auch getestet. Ist soweit auch nicht schlecht, aber EleLa finde ich einfach besser. Ein mix aus beiden und Ihr könntet eigentlich jeden damit zufrieden stellen. Das mit 2 Hochzeiten kenne ich nur zugut und darum kann ich leider auch nicht helfen. PHP ist halt weder C noch Pascal, auch wenn die Sprache am Ende nur lernarbeit ist und recht wenig mit "Programmieren" zutun hat.
Aktuell sind die beiden Datenbanken im Hintergrund noch zu sehr verschieden. Daher kann man diese beide "Front Ends" nicht mit der gleichen Datenbank betreiben.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.










