PHP Sicherheitslücken <-> Python ?!?!?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Blakk hat geschrieben:php ist nicht perfekt aber auf jeden fall ein sehr mächtiges werkzeug um webanwendungen zu erstellen
Hallo Blakk!

Python ist nicht perfekt, aber auf jeden Fall ein sehr mächtiges Werkzeug um nicht nur Webanwendungen zu erstellen.

Was willst du in einem Python-Board hören? Dass wir jetzt alle auf einmal PHP lieben und uns von Python verabschieden? Es ist nun mal so, dass die meisten hier Python lieben, weil es eine komplett andere Philosophie als PHP vertritt. Umgekehrt wird es wahrscheinlich genau so ein.

Also lass uns in Harmonie miteinander leben und mehr Webprovider dazu überreden, Python besser zu unterstützen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Blakk hat geschrieben:php ist nicht perfekt aber auf jeden fall ein sehr mächtiges werkzeug um webanwendungen zu erstellen.
Sehr mächtig? Was macht PHP denn so mächtig? Mir kommt PHP eher sehr primitiv vor. Das Basic des 21 Jahrhunderts.
Blakk hat geschrieben: ich erinnere mich, da hies es windows wär ja so unsicher und linux total sicher. kurz dadrauf war ein anstieg der linux viren zu verzeichnen weil ein paar findigen hackern das total aufn sack ging.
1. Wer hat bitte wann gesagt das Linux resistent gegen Viren wäre?
2. Wie viele Linux Viren kennst du?
3. Wie viele Linux User kennst du die Probleme mit Viren hatten?
Blakk hat geschrieben: mit php ist es wie mit windows: ganz viele benutzen es also lohnt es nich auch dafür schadcode zu schreiben!
Ich behaupte mal das der Python Code ähnlich viel Untersucht wurde wie der PHP Code. Ich behaupte des weiteren das PHP Anwendungen im Durchschnitt mehr Sicherheitslücken enthalten als Python Programme.
Blakk hat geschrieben: die bugseite von php ist zwar lang aber vieles davon ist total unwichtig:
PHP hat auch nicht sicherheitsrelevante Fehler, PHP sei gepriesen.
Blakk hat geschrieben: mit version 6 wird es sowieso viele veränderungen geben also heißt es erstmal abwarten...
Mit PHP 6 wird alles besser?
Blakk hat geschrieben:klar ich werde "Python", eure religion, nicht in den dreck ziehen können. mir scheint, ihr seid so gläubig, dass kann keiner aber das will ich auch garnicht.
Religion? Kannst du mir sagen weshalb Python meine "Religion" sein soll?
Blakk hat geschrieben:ich weiss jedoch, dass es php seit 1995 gibt und es die letzten 12 jahren überstanden hat. das ist wie darwins gesetz: php war 12 jahre lange gut genug um zu überstehen und nicht nur das - es hat eine riesige community. glaubt ihr das kommt von ungefähr? wäre php so schlecht wie ihr glaub dann würde es nicht so viele hochwertige webanwendungen auf php basis geben (wie z.b. diese forum :wink:)!
Nicht von Ungefähr sondern daher das PHP extrem einfach zu erlernen ist. Was dazu führt das Leute ohne Grundwissen Applikationen ins Internet stellen können. Das wäre ja gut, nur haben diese Leute meistens auch kein Sicherheitsbewusstsein. Und phpbb dient da ja als sehr gutes Beispiel für Qualitativ hochwertige Software.

PS: Hast du Idiocracy gesehen? *g*
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BlackJack

Blakk hat geschrieben:ich habe keine ahnung von python.
Und doch ist das erste, was Du in einem Python-Forum machst, Dir ein Urteil über die Sprache und ihre Anhänger zu bilden. Reife Leistung.
und ja, in php gibt es ein paar sachen die nich so genial sind wie z.b. die namen der funktionen. warum ceil() und floor() anstadt roundup() und rounddown() ?!
Weil `ceiling` und `floor` die englischen Namen für die entsprechenden mathematischen Operationen sind. Und die sind im Gegensatz zum Runden eindeutig(er) definiert.
genauso wie diese ganze kacke die früher mal gedacht war um anfängern zu helfen (magic_quotes). alles mist der endlich mal konsequent entfernt werden sollte.
Der Mist war IMHO nicht gedacht um Anfängern zu helfen sondern einfach nur Folge von Spracherweiterungen ohne sich einen Deut Gedanken um den ordentlichen Entwurf einer Programmiersprache zu machen.
php hat insich die ein oder andere altlast mit sich rumzuschleppen - keine frage. jetzt zu sagen php ist ein haufen schrott ist in etwa so wie zu sagen ein sportwagen mit 600PS der von 0 auf 100 in 4.2 sekunden kommt wäre ein haufen schrott weil er ein paar beulen hat.
Es ist ein Sportwagen der viele komische Knöpfe (=Altlasten) hat von denen ein paar wenige den Wagen von 0 auf 100 beschleunigen und der Rest dafür sorgt, dass einem die Kiste um die Ohren fliegt. ;-) Es ist also nicht nur Schrott, sondern gefählicher Schrott.

Da fahre ich doch lieber ein Auto das zwar langsamer ist, aber dafür auch ans Ziel kommt.
zur sicherheit:
ich erinnere mich, da hies es windows wär ja so unsicher und linux total sicher. kurz dadrauf war ein anstieg der linux viren zu verzeichnen weil ein paar findigen hackern das total aufn sack ging.
Anstieg der Linux-Viren!? Belege bitte. Und bitte auch das Verhältnis zwischen Windows und Linux in dieser Beziehung. Vielleicht siehst Du dann sogar selbst ein, wie lächerlich diese Aussage war.
Es gibt keine Sicherheit, es gibt nur verschiedene Grade von Unsicherheit
Richtig. Und der von PHP ist grösser als der von Python.
die bugseite von php ist zwar lang aber vieles davon ist total unwichtig:
PHP 5 ChangeLog: Version 5.2.4 hat geschrieben:- Fixed bug #42368 (Incorrect error message displayed by pg_escape_string). (Ilia)
- Fixed bug #42243 (copy() does not output an error when the first arg is a dir). (Ilia)
- Fixed bug #42072 (No warning message for clearstatcache() with arguments). (Ilia)
- Fixed bug #41709 (strtotime() does not handle 00.00.0000). (Derick)
- Changed mail() function to be always available. (Johannes)
- Added missing error check inside bcpowmod(). (Ilia)
Oh prima, jetzt hast Du sechs Bugs aufgezählt die wahrscheinlich keine Sicherheitslücke dargestellt haben. Ändert nichts daran, dass es bei PHP bisher mehr sicherheitsrelevante Bugmeldungen gab als bei Python.

Das hat etwas mit Codequalität und der Einstellung der Programmierer zu tun. Bei Python sind Unittests für den Quelltext der Standardbibliothek üblich; das machen die Programmierer von sich aus; und bei PHP gibt der "Sicherheitsbeauftragte" entnervt auf. Das sagt schon etwas über die Kultur im Projekt und den Stellenwert von Sicherheit aus.
das ist wie darwins gesetz: php war 12 jahre lange gut genug um zu überstehen und nicht nur das - es hat eine riesige community. glaubt ihr das kommt von ungefähr?
Scheisse schmeckt gut ─ Millionen Fliegen können sich doch nicht irren, oder? :-P
wäre php so schlecht wie ihr glaub dann würde es nicht so viele hochwertige webanwendungen auf php basis geben (wie z.b. diese forum :wink:)!
Es gibt gute Webanwendungen in PHP, genau so wie es gute Anwendungen in den meisten Sprachen gibt. Das hat nicht nur mit der Sprache, sondern auch viel mit dem Können und der Disziplin der Programmierer zu tun. Ob ich dieses Forum als hochwertig beschreiben würde, weiss ich nicht so recht.

Fakt ist, das PHP "zu einfach" ist, soll heissen das auf jeden guten Programmierer, der PHP verwendet, mindestens 100 kommen, die Webskripte zusammenkopieren und -hacken und im Grunde keine Ahnung haben was sie da tun. Mit allen Konsequenzen die sich daraus ergeben.

Insgesamt ein süsser Trollversuch von Dir, aber nicht wirklich umwerfend. Musst Du noch ein bisschen üben…
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo Blakk, willkommen im Forum,

es tut mir leid, aber ich muss zugeben, dass der Thread den du ausgegraben hast ja eine richtig lustige Wendung bekommt, nachdem du so viel FUD verbreitet hast.

Der Vergleich mit den Linken ist etwas gewagt, aber um Goodwins Law zu erfüllen müsstest du schon von den Rechten sprechen. Ich bitte um Nachbesserung!

Es ist unglaublich schlau, über eine Sprache und ihre Nutzer zu urteilen, wenn man zugibt keine Ahnung zu haben. Die Syntax ist zwar gewöhnungsbedürftig, aber ich habe Ruby versucht (welches Python in einigen Aspekten ähnelt) und dass die Sprache Einrückung ignoriert empfinde ich fast schon als Manko.

Was das Ändern der Sprache angeht ist es natürlich problematisch (auch im Umstieg von Python 2.x auf Python 3.0), aber irgendwann muss solch ein Schritt erfolgen - der hätte im Falle PHPs schon lange passieren müssen. Ich sehe es als Fehler an, dass PHP4 erst jetzt ausgemustert wurde.

Dass die Anwendungen an Änderungen zerbrechen ist schon möglich, aber wenn sie das tun dann haben sie es verdiehnt. Eine Anwendung die ``register_globals`` benötigt, sollte besser gar nicht laufen.

Das PHP ein sehr mächtiges Werkzeug ist, glaube ich auch nicht so ohne weiteres. PHP mit einem der neuen Frameworks ist vielleicht langsam für Webentwicklung brauchbar, aber wenn man von Rails oder Django kommt, fühlt sich "rohes" PHP (also so wie es meistens genutzt wird) wie eine Templatesprache an.

Das mit den Linux-Viren kann ich nicht nachvollziehen, ohne Beweis würde ich sagen: "das stimmt schlichtweg nicht". Microsoft hat in Windows Vista da zwar was getan, aber jetzt hat man noch mehr nervende Dialoge die man einfach nur mit OK wegklickt, damit Ruhe ist.

Was die hochwertigen Webanwendungen angeht, bin ich auch etwas skeptisch. Denn phpBB ist definitiv keine hochwertige Webanwendung - Version 2.0 hat, mal überlegen, 22 Sicherheitsupdates gehabt, jedes davon grausig zu integrieren und mit der Garantie, dass wenn das nächste Update kommt, es an einem Feiertag rauskommt. Als brauchbar sehe ich eigentlich nur MediaWiki an, ansonsten kenne ich keine richtig guten PHP-Programme.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Y0Gi hat geschrieben:Rebecca: Wenn ich mich da an den Deutschunterricht in der Sekundarstufe II erinnere, ist immer der Sender einer Nachricht Schuld, wenn der Empfänger sie falsch auffassen kann... ;)
Da der Thread eh wieder aufgewärmt wurde:
Das Sender-Empfänger-Modell paßt auf menschliche Kommunikation in etwa so gut wie ein Gummihuhn auf eine Tiefkühlpizza. ;)
Ich denke, selbst Sek-II-Lehrer sollten zumindest schon mal etwas von Watzlawicks Kommunikationstheorie gehört haben und die, wenn man das Thema anspricht, auch einflechten können.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

mkallas hat geschrieben: Das Sender-Empfänger-Modell paßt auf menschliche Kommunikation in etwa so gut wie ein Gummihuhn auf eine Tiefkühlpizza.
Mmh, du bringst mich da auf Ideen...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

birkenfeld hat geschrieben:Mmh, du bringst mich da auf Ideen...
Duschen? ;)

Eigentlich braucht das Dusch-Law inzwischen einen Namen.. Ich weiß nur nicht wer genau das popularisiert hatte..
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Leonidas hat geschrieben:Als brauchbar sehe ich eigentlich nur MediaWiki an, ansonsten kenne ich keine richtig guten PHP-Programme.
Mit typo3 habe ich relativ gute Erfahrungen gemacht. ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

veers hat geschrieben:Mit typo3 habe ich relativ gute Erfahrungen gemacht. ;)
Also das was ich im Debianforum über typo3 gehört habe war lustigerweise alles, durchweg negativ.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Das einzige gute PHP Programm, dass ich kenne ist Drupal. Da gefällt mir der Quellcode.
TUFKAB – the user formerly known as blackbird
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

phpBB hat mich erschrocken, MediaWiki (zumindest in einer alten Version) enttäuscht und osCommerce ist der blanke Hohn. Von Joomla und besonders Drupal habe ich einen guten Eindruck, aber da habe ich mir den Code nicht angesehen. Das Vanilla-Board ist auch ganz ordentlich, soweit ich mich erinnere.
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Blakk hat geschrieben:ich habe keine ahnung von python.
Sehr, sehr gute Voraussetzung für Diskussionen um Python vs. PHP. Welche Sprachen ausser PHP kannst du denn so, um PHP mit ihnen zu vergleichen?
der so angeprisene syntax lässt mich eher denken "was für ne kacksprache" aber das ist pure ansichtssache.
Die gelobe Syntax beschränkt sich allerdings nicht auf die offensichtlichen indentations, sondern umfasst z.B. auch Module (kein Äquivalent in PHP), list comprehensions (kein Äquivalent in PHP) und ähnliches.
Alles Dinge, die ich in PHP schmerzlichst vermisse.
genauso wie diese ganze kacke die früher mal gedacht war um anfängern zu helfen (magic_quotes). alles mist der endlich mal konsequent entfernt werden sollte. das problem dabei ist nur, dass das nicht so einfach ist. sowas ist zwar bereits im gange, soetwas kann man aber nicht übers knie brechen weil ansonsten 10.000 und 10.000 anwengungen überarbeitet werden müssten.
Und was ändert das jetzt für mich als benutzer?
Mir ist es absolut egal, WARUM eine spache voller "mist, der endlich mal konsequent entfernt werden sollte" ist, der Punkt ist, dass sie dadurch schlechter als eine Sprache wird, die weniger Mist hat.
php hat insich die ein oder andere altlast mit sich rumzuschleppen - keine frage. jetzt zu sagen php ist ein haufen schrott ist in etwa so wie zu sagen ein sportwagen mit 600PS der von 0 auf 100 in 4.2 sekunden kommt wäre ein haufen schrott weil er ein paar beulen hat. php ist nicht perfekt aber auf jeden fall ein sehr mächtiges werkzeug um webanwendungen zu erstellen.
Immer diese Autovergleiche.
WO ist denn PHP dieser Sportwagen? Was genau kann PHP denn besser als eine beliebige Sprache der gleichen Gewichtsklasse (damit meine ich nicht nur Pyhton)?
Was ausser "ich krieg unkonfigurierbaren webspace für 1€/Monat" oder "Mein Programm ist in PHP geschrieben, jetzt kann ich nicht mehr Umsteigen" sind denn echte Argumente FÜR php?
Es gibt keine Sicherheit, es gibt nur verschiedene Grade von Unsicherheit
Ja, und eine Sprache, in der die meisten Fehler nur als Notice am Rande erwähnt werden, in der ich in vielen fällen keine Exceptions werfen kann, in der NullPointerExceptions keinen Traceback erzeugen lassen, etc, etc macht es nicht gerade einfach, einen niedrigeren Grad an Unsicherheit zu erreichen.
mit php ist es wie mit windows: ganz viele benutzen es also lohnt es nich auch dafür schadcode zu schreiben!
Das sehe ich anders. Der Meiste Schadcode wird nicht für PHP, sondern für PHP-Anwendungen geschrieben. Und der lässt sich dank Dingen wie register_globals, magic_quotes, schlechter db-api für PHP einfacher schreiben.
mit version 6 wird es sowieso viele veränderungen geben also heißt es erstmal abwarten...
Und wenn HURD erstmal kommt, wird Duke Nukem 4e darauf perfekt laufen...
klar ich werde "Python", eure religion
Wer wartet denn auf den Messias php6, der alles gut machen wird?
ich weiss jedoch, dass es php seit 1995 gibt und es die letzten 12 jahren überstanden hat.
Assembler gibts noch länger, und trotzdem würde ich keine Webanwendungen drin Programmieren.
das ist wie darwins gesetz: php war 12 jahre lange gut genug um zu überstehen und nicht nur das - es hat eine riesige community. glaubt ihr das kommt von ungefähr?
Ich würde sagen, dass das aus der Zeit kommt, als PHP noch keine konkurrenz hatte, und weil es "billigen webspace" gibt. Was die Comunity so für ein Qualitätsniveau hat, sieht man imho recht gut in den snippets, die sich Zend nicht zu schade ist, in der offiziellen Doku zu behalten.
hochwertige webanwendungen auf php basis geben
PHPBB ist Hochwertig? Ich sehe es eher als das am wenigsten niederwertige an...

Also, mal zusammenfassend: deine Argumente, warum PHP gut ist, ist, dass die fehler nicht schlimm sind, weil sie ja nicht so einfach weggeräumt werden können, dass php innerhalb der letzten 12 Jahren nicht verschwunden ist, dass PHP eine Community hat, dass demnächst mal php6 rauskommen wird.

Nicht ein Fachliches argument bei, alles Nebenschauplätze. Also, wer ist hier der Religiöse?
Oder kannst du vielleicht die Frage beantworten, die ich schon vielen PHP-Fans gestellt habe, und bis jetzt keine Antwort erhalten habe: Was kann PHP besser als andere Sprachen?
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

hey, ihr könnts aufhören, ich glaub der kommt nimma :D

lgherby
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

thelittlebug hat geschrieben:hey, ihr könnts aufhören, ich glaub der kommt nimma :D

lgherby
Ach mist, würde mich freuen, endlich mal ne Antwort zu bekommen. Zumal ich PHP gerne mögen würde, damit ich auf der Arbeit nicht immer so fluchen muss.
Nocta
User
Beiträge: 290
Registriert: Freitag 22. Juni 2007, 14:13

thelittlebug hat geschrieben:hey, ihr könnts aufhören, ich glaub der kommt nimma :D

lgherby
lol :D
Naja jetzt will ich mal meine Meinung dazu sagen ... Da ich schon recht viel in PHP programmiert habe, kann ich da glaub ich schon was zu sagen ;)

Zugegebenermaßen, in vielen PHP-Anwendungen, vorallem die, die von Anfängern geschrieben wurden, gibt es zahlreiche Sicherheitslücken.
Man könnte also zum Schluss kommen, dass PHP TOTAL verbuggt und unsicher ist, aber ganz so ist's ja auch wieder nicht.
Wenn man mal einige Zeit investiert, um PHP richtig zu lernen, anstatt nur Formular-to-Database und umgekehrt (was nur ein paar Befehle und vielleicht einige so extrem schwierige Konstrukte wie eine Schleife benötigt) zu schreiben, kann man da schon recht viel rausholen.
PHP ist nunmal auf Einfachheit konzipiert, das kann man leugnen wie man will, es ist nunmal so. Eine Sprache die (ursprünglich) speziell zum Entwickeln von Websiten gedacht ist und dabei so einfach wie möglich gehalten werden sollte. Nachträglich haben sie die Sprache um vieles erweitert, die Sprache kommt halt jetzt nur ein wenig zerstückelt rüber :D
Und mit PHP 4 kam dann ja endlich mal eine OOP-Unterstützung, die mit PHP5 auch zum glück aufgebessert wurde ;) Ist vielleicht nicht perfekt, aber im Prinzip reicht's, man programmiert ja auch kein Betriebssystem oder Spiele (im Sinne von 3d-Spielen jetzt) in PHP :p
Wenn man jetzt ohne ein größeres Hintergrundwissen zu haben, Anwendungen in PHP schreibt, sind die schnell total unsicher und extrem unsauber gecodet und vorallem unübersichtlich, was Python-Usern wohl auch wichtig sein dürfte ;)
Aber wenn man die Sprache beherrscht, kann man das ganze ein wenig übersichtlicher halten, indem man eine Struktur reinbringt: Das ganze in Funktionen und/oder Klassen kapseln, Templatesysteme benutzen, die HTML von PHP trennen, SQL-Klassen benutzen (die man sich sehr einfach selbst schreiben kann), usw.
Was ich an einer SQL-Klasse schätze, ist vorallem, dass man da ganz einfach bevor das Query an die Datenbank geschickt wird, die Variablen, die übergeben wurde verifizieren kann, damit keine SQL-Injections möglich sind (passiert dann eben automatisch).
SQl-Injections sind in PHP-Scripts von Anfängern auch oft ein Problem, weil sie einfach die Variablen an ein Query übergeben, ohne eine der schönen Funktionen, die PHP bereitstellt, zu benutzen, um sie zu verifizieren ;)
Also ich behaupte jetzt einfach mal ganz dreist:
Wenn man PHP beherrscht, kann man damit auch relativ saubere Anwendungen schreiben, die übersichtlich und sicher sind.
Man muss eben das Hintergrundwissen haben, um die, zugegebenermaßen zahlreichen "Anfänger-Fallen" zu umgehen.
Ansonsten ist die Sprache natürlich alles andere als perfekt und konsequent ... Wenn man also Python kann, würde ich jetzt keinem empfehlen, für Webanwendungen PHP zu lernen :p
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Als jemand, der PHP beruflich nutzen muss, möchte ich darauf mal hoffentlich ebenfalls sachlich antworten:
Nocta hat geschrieben:Man könnte also zum Schluss kommen, dass PHP TOTAL verbuggt und unsicher ist, aber ganz so ist's ja auch wieder nicht.

Wenn man mal einige Zeit investiert, um PHP richtig zu lernen, anstatt nur Formular-to-Database und umgekehrt (was nur ein paar Befehle und vielleicht einige so extrem schwierige Konstrukte wie eine Schleife benötigt) zu schreiben, kann man da schon recht viel rausholen.
Das ist relativ unspezifisch. Was kann man wie und wo "rausholen"? PHP ist Turingvollständig, also kann man Potentiell so gut wie alles darin schreiben. Der Punkt ist nur der Aufwand. Und der lässt sich 1:1 in Geld und Nerven umrechnen. Und eben den Schätze ich als unnötig Hoch ein.
PHP ist nunmal auf Einfachheit konzipiert, das kann man leugnen wie man will, es ist nunmal so.
Vielleicht konzipiert, aber was ist daran einfach, dauernd in der Doku nachgucken zu müssen, ob needle oder haystack bei dieser funktion vorne ist, ob str_ oder str das prefix ist, oder die arrayfunktion in-place oder returnierend ist, etc? Was ist einfach an 64byte-prefixes, damit man ja keine Kollisionen mit anderen Programmen hat? Was ist einfach daran, dass ich, wenn ich ordentlich Programmiere, administrationsoptionen auslesen und rückgängig machen muss (magic_quotes z.B.) und wenn ich es nicht mache, fahrlässig handele?

Worin liegt die vielbeschworene Einfachheit von PHP?
Sorry dass das vieleicht arrogant rüberkommt, aber in meinen Augen gilt PHP nur als einfach, weil es oft genug wiederholt wird.
Aber wenn man die Sprache beherrscht, kann man das ganze ein wenig übersichtlicher halten, indem man eine Struktur reinbringt: Das ganze in Funktionen und/oder Klassen kapseln, Templatesysteme benutzen, die HTML von PHP trennen, SQL-Klassen benutzen (die man sich sehr einfach selbst schreiben kann), usw.
klingt für mich stark nach: wenn ich viel Arbeit reinstecke, kann PHP das, was ich bei anderen Sprachen ohne Arbeit kann.
Was ich an einer SQL-Klasse schätze, ist vorallem, dass man da ganz einfach bevor das Query an die Datenbank geschickt wird, die Variablen, die übergeben wurde verifizieren kann, damit keine SQL-Injections möglich sind (passiert dann eben automatisch).
SQL-Klassen sind da vielleicht nach PDO nicht mehr so das Beispiel, aber sowas stand bei Python z.B. nie zur Debatte, die DB-Api kümmert sich selbstverständlich ums escaping.
Also ich behaupte jetzt einfach mal ganz dreist:
Wenn man PHP beherrscht, kann man damit auch relativ saubere Anwendungen schreiben, die übersichtlich und sicher sind.
Man muss eben das Hintergrundwissen haben[...]
Genau deshalb ist PHP in meinen Augen schlecht: ich muss überall meine Nerven opfern für Dinge, die ich in anderen Sprachen gratis bekomme. (Dass es Handwerklich absolut Katastrophal wirkt, mal aussen vor).
Ich hab schon oft gehört "wenn man Diszipliniert Programmiert, macht man keine Fehler". Disziplin ist aber eine knappe Resource, die ich persönlich lieber in Funktionalität als Fehlervermeidung stecken würde.
Nocta
User
Beiträge: 290
Registriert: Freitag 22. Juni 2007, 14:13

keppla hat geschrieben:Als jemand, der PHP beruflich nutzen muss, möchte ich darauf mal hoffentlich ebenfalls sachlich antworten:
Nocta hat geschrieben:Man könnte also zum Schluss kommen, dass PHP TOTAL verbuggt und unsicher ist, aber ganz so ist's ja auch wieder nicht.

Wenn man mal einige Zeit investiert, um PHP richtig zu lernen, anstatt nur Formular-to-Database und umgekehrt (was nur ein paar Befehle und vielleicht einige so extrem schwierige Konstrukte wie eine Schleife benötigt) zu schreiben, kann man da schon recht viel rausholen.
Das ist relativ unspezifisch. Was kann man wie und wo "rausholen"? PHP ist Turingvollständig, also kann man Potentiell so gut wie alles darin schreiben. Der Punkt ist nur der Aufwand. Und der lässt sich 1:1 in Geld und Nerven umrechnen. Und eben den Schätze ich als unnötig Hoch ein.
Das lass ich mal so stehn.
keppla hat geschrieben:
PHP ist nunmal auf Einfachheit konzipiert, das kann man leugnen wie man will, es ist nunmal so.
Vielleicht konzipiert, aber was ist daran einfach, dauernd in der Doku nachgucken zu müssen, ob needle oder haystack bei dieser funktion vorne ist, ob str_ oder str das prefix ist, oder die arrayfunktion in-place oder returnierend ist, etc? Was ist einfach an 64byte-prefixes, damit man ja keine Kollisionen mit anderen Programmen hat? Was ist einfach daran, dass ich, wenn ich ordentlich Programmiere, administrationsoptionen auslesen und rückgängig machen muss (magic_quotes z.B.) und wenn ich es nicht mache, fahrlässig handele?

Worin liegt die vielbeschworene Einfachheit von PHP?
Sorry dass das vieleicht arrogant rüberkommt, aber in meinen Augen gilt PHP nur als einfach, weil es oft genug wiederholt wird.
Naja ich denke eben, es war ursprünglich so einfach geplant.
Manche Dinge, wie das einfache Auslesen und Schreiben in eine MySQL-Datenbank (andere gehen natürlich auch), sind wirklich SO verdammt einfach, dass "jeder" das mit wirklich wenig Aufwand hinbekommt.
Nur wird es aufgrunddessen, dass es so einfach konzipiert wird, zunehmend komplexer, wenn man komplexere Dinge damit machen will.
Python dagegen ist eher so konzipiziert, dass es von der Sprache her nicht komplexer wird, wenn man komplexere Anwendungen schreiben will.
Das Problem bei PHP war wahrscheinlich, dass sie zu sehr auf Einfachheit bedacht war und diese Sprache dann auf Grundlage dessen weiterentwickelt wurde.
@Doku, wenigstens ist die größtenteils vorbildlich. Ein kleiner Blick genügt dann ja auch meistens. Aber natürlich wäre es besser, wenn man nicht jede Kleinigkeit nachshcauen muss, nur weil die Sprache nicht konsequent einheitlich ist.
keppla hat geschrieben:
Aber wenn man die Sprache beherrscht, kann man das ganze ein wenig übersichtlicher halten, indem man eine Struktur reinbringt: Das ganze in Funktionen und/oder Klassen kapseln, Templatesysteme benutzen, die HTML von PHP trennen, SQL-Klassen benutzen (die man sich sehr einfach selbst schreiben kann), usw.
klingt für mich stark nach: wenn ich viel Arbeit reinstecke, kann PHP das, was ich bei anderen Sprachen ohne Arbeit kann.
Richtig. Das ist dann wohl das, was ich oben beschrieben habe, es wird zunehmend komplexer und aufwändiger, wenn das Problem komplexer wird.
Aber es ist eben durchaus möglich und es gibt genug ausgereifte Open-Source Anwendungen, die all das so einfach wie möglich machen.
keppla hat geschrieben:
Was ich an einer SQL-Klasse schätze, ist vorallem, dass man da ganz einfach bevor das Query an die Datenbank geschickt wird, die Variablen, die übergeben wurde verifizieren kann, damit keine SQL-Injections möglich sind (passiert dann eben automatisch).
SQL-Klassen sind da vielleicht nach PDO nicht mehr so das Beispiel, aber sowas stand bei Python z.B. nie zur Debatte, die DB-Api kümmert sich selbstverständlich ums escaping.
Okay, mag sein, gerade die Datenbankverbindung ist bei PHP etwas zu einfach gehalten. Wäre viel besser, wenn das von Anfang an objektorientiert gewesen wäre, so wie's sich gehört. Aber früher gab's ja noch kein OOP usw ... Wieder ein gutes Beispiel dafür, dass durch die Einfachhaltung im Grunde wieder alles komplexer wird, wenn die Ansprüche ein wenig steigen.
keppla hat geschrieben:
Also ich behaupte jetzt einfach mal ganz dreist:
Wenn man PHP beherrscht, kann man damit auch relativ saubere Anwendungen schreiben, die übersichtlich und sicher sind.
Man muss eben das Hintergrundwissen haben[...]
Genau deshalb ist PHP in meinen Augen schlecht: ich muss überall meine Nerven opfern für Dinge, die ich in anderen Sprachen gratis bekomme. (Dass es Handwerklich absolut Katastrophal wirkt, mal aussen vor).
Ich hab schon oft gehört "wenn man Diszipliniert Programmiert, macht man keine Fehler". Disziplin ist aber eine knappe Resource, die ich persönlich lieber in Funktionalität als Fehlervermeidung stecken würde.
Ja, da hast du recht. Es wird einfach mal Zeit, dass PHP von Grund auf neu entwickelt wird, es macht einfahc keinen Sinn mehr, die ganze Last von den ersten Versionen mitzuschleppen.
Ich hab auch nie behauptet, dass PHP optimal ist, ich wollte PHP einfach mal so weit verteidigen, wie es der Sprache gebührt. Hier in dem Thread wurde es nämlich so dargestellt, als ob PHP = unsicher ist. Ist halt alles eine Sache des Programmieres, aber es kann durchaus sein, dass PHP mehr Sicherheitslücken als Python hat, die man irgendwie ausnutzen kann und die man als Programmierer nicht verhindern kann ... Aber allgemein kann man schon relativ sichere Anwendungen in PHP schreiben.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Amen!
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Zunächst mal im Prinzip Zustimmung, aber...
Nocta hat geschrieben:
keppla hat geschrieben: Worin liegt die vielbeschworene Einfachheit von PHP?
Sorry dass das vieleicht arrogant rüberkommt, aber in meinen Augen gilt PHP nur als einfach, weil es oft genug wiederholt wird.
Naja ich denke eben, es war ursprünglich so einfach geplant.
Manche Dinge, wie das einfache Auslesen und Schreiben in eine MySQL-Datenbank (andere gehen natürlich auch), sind wirklich SO verdammt einfach, dass "jeder" das mit wirklich wenig Aufwand hinbekommt.
Ok, bleiben wir bei dem Beispiel.
Hier der klassische PHP-Code, um alle Zeilen eines Queries auszugeben:

Code: Alles auswählen

$link = mysql_connect('localhost')
mysql_select_db('mydb', $link)
$query = "select * from mytable";
$result = mysql_query($query, $link);
while ($row = mysql_fetch_array($result)) {
   print_r($row);
} 
und hier die pythonvariante

Code: Alles auswählen

import MySQLdb
conn = MySQLdb.connect(host="localhost", db="mydb")
query = "select * from mytable"
cursor = conn.cursor()
cursor.execute(query)
for row in cursor.fetchall():
  print row
Wo ist PHP hier einfacher?
Erstens ist es versteckt objektorientiert (mysql_fetch_array ist eigentlch eine Methode von $result, mysql_select_db eine von $link), zweitens kann mir niemand erzählen, dass "while ($row = mysql_fetch...)" einfach wäre.
Hinzu kommt noch, dass, wenn man die PHP-variante nun so ergänzen würde, dass man fehler mitbekommt (auf was bei aller unterstellten Einfachheit nicht verzichtet werde kann, denn auch und gerade Newbies müssen ihren Code debuggen), nach so gut wie jeder Zeile nochmal ein "or die('something went wrong')" stehen müßte, um dass, was es bei Python gratis durch die Exceptions gibt, schlecht darzustellen.

PHP ist nicht einfach! Es WAR vielleicht mal einfach, als die Alternative PerlCGI oder J2EE hiessen (kann ich nicht beurteilen, kenne Perl nur vom davor fliehen und java nicht im Html-bereich), aber es IST schon lange nicht mehr einfach, gemessen am Stand der Technik.
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

warum sollte ich mysql_error() jedesmal hinten dran schreiben?

also da ich ja öfters was mit php machen muss sieht das ganze bei mir so aus:

Code: Alles auswählen

class Database
&#123;
    var $link = null;
    var $qryCount = 0;

    function __construct&#40;$host, $user, $pass, $db&#41; &#123;
        $this->link = mysqli_connect&#40;$host, $user, $pass, $db&#41;;

        if&#40;!$this->link&#41; die&#40;'error: ' . mysqli_connect_error&#40;&#41;&#41;;
        if&#40;!mysqli_set_charset&#40;$this->link, 'utf8'&#41;&#41; die&#40;'error: '&#41;;
    &#125;

    function __destruct&#40;&#41; &#123;
        mysqli_close&#40;$this->link&#41;;
    &#125;

    function fetch&#40;$query, $debug=0&#41;
    &#123;
        if&#40;$debug == 1&#41; echo $query;

        $result = mysqli_query&#40;$this->link, $query&#41; or die&#40;'error: ' . mysqli_error&#40;$this->link&#41;&#41;;
        $row = mysqli_fetch_assoc&#40;$result&#41;;
        mysqli_free_result&#40;$result&#41;;

        $this->qryCount++;
        return $row;
    &#125;

    function fetchAll&#40;$query, $debug=0&#41;
    &#123;
        if&#40;$debug == 1&#41; echo $query;

        $result = mysqli_query&#40;$this->link, $query&#41; or die&#40;'error: ' . mysqli_error&#40;$this->link&#41;&#41;;
        $rows = array&#40;&#41;;
        while&#40;$row = mysqli_fetch_assoc&#40;$result&#41;&#41; &#123; $rows[] = $row; &#125;
        mysqli_free_result&#40;$result&#41;;

        $this->qryCount++;
        return $rows;
    &#125;

    function qry&#40;$query, $debug=0&#41;
    &#123;
        if&#40;$debug == 1&#41; echo $query;
        mysqli_query&#40;$this->link, $query&#41; or die&#40;'error: ' . mysqli_error&#40;$this->link&#41;&#41;;

        $this->qryCount++;
    &#125;
&#125;
 
die verwendung ist dann relativ simpel:

Code: Alles auswählen

$db = new Database&#40;'localhost', 'meinuser', 'meinpass', 'meinedb'&#41;;
print_r&#40;$db->fetchAll&#40;'SELECT * FROM meinetabelle'&#41;&#41;;
 
damit ist das dann relativ gemütlich möglich.
meine qry's haben IMMER ein limit am ende, es gibt kaum webseiten die sich mit ergebnisslisten > 1000 einträgen benutzerfreundlich gestalten lassen :D

sobald ich mal irgendwas mit datenbanken und python zutun habe werde ich mir eine entsprechend einfache klasse dafür bauen.

mein fazit: warscheinlich in fast jeder "script" sprache ähnlich leicht lösbar

lgherby

edit:
das musst du mir erklären:
Erstens ist es versteckt objektorientiert (mysql_fetch_array ist eigentlch eine Methode von $result, mysql_select_db eine von $link)
wie kommst du darauf?
http://www.php.net/mysql_fetch_array
Antworten