Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
19.08.2002, 11:05
Washoe



Langsam wird dieses Forum ja das PHP Board. Deswegen stell ich auch mal meine Fragen zu PHP. Eigendlich meine ich auch ich wäreschon recht fitt und hab mir auch einige Bücher gekauft(ausgeliehen). Das letzte war php de luxe, ein sehr informatives Buch, trotzdem hab ich noch einige Fragen:

1. Zu template systemen. Bei template systemen, werden ja die Platzhalter durch reg. Ausdrücke mit Inhalt ersetzt, oder durch stringreplace(). Trotzdem sind diese Methoden ja langsam. eswegen, kann man es auch als template lösung bezeichenen, wenn man die templates in eine php datei reinschreibt, ungefähr so:

Quellcode:
<?php
echo<<<AUSGABE
<html>
<body>
${hierkommtderinhaltrein}
</body>
</html>
AUSGABE;
?>

Dabei wird die varibale einfach nur eingefügt, wenn man die datei included. Deswegen, kann man das so machen, oder sollte man doch ein templatesystem wie smarty odeer easytemplate verwenden.

2. XML, das raf ich überhaupt nicht, deswegen, ist meine Aussage so richtig? XML beschreibt einfach nur die Struktur, alles tags müssen geschlossen werden.......

aber wo liegt der sinn, wenn ich die struktur bis zur vergasung beschreibe, das will dch niemand lesen. Und dann ja noch die möglichkeit einen parser zu schreiben, warum? Und warum ist xml so ein toles portables format, jeder parser kann das doch anders interpretieren ??? Ich weiß, da ist bei mir nicht viel vorhanden, aber ich hoffe einer nimmt sich diesem Problem an.

3. Sessions
Bei der phps session funktion wird ja eine eindeutige id erstellt, die dann z.b. als passwort fungierd.(für eine gewisse zeit). Aber wie kann man die session z.b. so dicht machen, das wenn ich die id in der url übergebe und ich jemanden den link schicke, er sich nicht mit meiner session einlogged. Außerdem ist das system denn überhaupt sicher, kann man sessions brute forcen?

4. md5() hashes. Dabei wird der string ja einwegverschlüsselt, und es wurde auch noch nicht gebrochen. Aber ist denn noch niemand auf die idee gekommen einfach alle möglichkeiten von z.b. 2-6 zeichen automatisch in eine datenbank zu schreiben, sodass man nur noch den hash eigeben muss. Oder ist das zu aufwänding weil es zuviele möglichkeiten gibt.

5. Pear, pear ist doch einfach eine sammlung von php klassen und funktionen? Also kann man pear einfach auf den webspache kopieren und dann den chache oder die crypto funktionen benutzen? Das ist jetzt hypothese: Wenn ich etwas kommerziell entwickel und pear benutze, darf ich das verkaufen? Ich brauch jetzt eigendlich keinen vortrag über GPL, aber gdarf man das?

6. Programmiert ihr OOP? Lohnt sich oop z.b bei einem Gästebuch? Oder nutzt ihr es überhaupt.

7. Kennt ihr eine seite, wo beschrieben wird, wie man an php probleme herangeht ud nicht wie man sie im code löst.

--


Dieser Beitrag wurde am 19.08.2002 um 11:55 von Washoe bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
19.08.2002, 11:24
theDon



zu 4 bei 2 bzw 3 zeichen geht das noch...bei 6 zeichen wirds dann schon sehr sehr viel

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
002
19.08.2002, 11:54
Washoe



Ja, aber wenn mans einmal gemacht hätte, wäre md5 sinnlos. Brauch man eigendlich doch nur ne große Datenbank. Und wenn der compi auch mherere Tage rechnet, warum nicht.

--

zum Seitenanfang zum Seitenende Profil || Suche
003
19.08.2002, 13:03
Kriz



Das ist eine Frage der Kosten-Nutzen Betrachtung. Kein Kryptoanalytiker dieser Welt würde einen MD5-Hash serialisieren, wenn die Aufwandskosten zur Analyse (Strom, Ressourcen, Zeitkosten ect.) in der Summe größer-gleich dem Gewinn aus dem Verkauf/Gebrauch der Information ist.

Sprich, niemand würde z.B. einen 1024 Bit Code knacken wollen, wenn der Gewinn aus der Information nur einen Bruchteil der Aufwandskosten beträgt, selbst wenn die Information bahnbrechend ect. wäre.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
004
19.08.2002, 13:13
Washoe



Naja, aber ich hab ja auch noch mehr fragen.

--

zum Seitenanfang zum Seitenende Profil || Suche
005
19.08.2002, 15:16
TheTinySteini



1. Also dieses Forum hier verwendet ein Mischmasch. Dabei wird einfach das Template in eine Datei geschrieben (z.B. .html-Datei) und an den Stellen, an denen die Replacements sein sollen, wird einfach z.B. $content hingeschrieben. Dann wird im PHP-Code diese Variable belegt, die Datei eingelesen und per eval ausgegeben. Diese Methode ist sehr schnell (jedenfalls schneller als str_replace und Co), kann aber natürlich Sicherheitslücken mit sich bringen, falls man sie nicht gewissenhaft anwendet.

2. XML hat den Vorteil von selbstdefinierten Tags, so dass man fast jede Text-/Datenstruktur in einer XML-Datei abspeichern könnte - nicht nur ganz normale HTML-Seiten.
Aber wirklich überzeugt bin ich von dem Teil auch nicht...

3. Relativ sicher ist eine Kombination aus Sessionid und Cookie. Dann kannst du zum Beispiel die Sessionid direkt aus dem Cookie lesen und verhinderst so ein Sessionhitchhiking per GET.
Oder du speicherst zur ID z.B. auch die IP mit ab. Oder du speicherst Name und (verschlüsseltes) Passwort in nem Cookie und gibst die Sessionid in der URL mit. Dann kannst du sicherstellen, dass derjenige, der auf die Seite geht, sich tatsächlich über die Login-Seite angemeldet hat (erst dann ist die Sessionid richtig gesetzt). Für Hitchhiker ist dann zwar die Sessionid richtig, aber sie haben Benutzer und Passwort nicht. Umgekehrt verhindert man so ungewollte Aktionen beispielsweise per <img>-Tag, denn dann ist die Sessionid nicht gesetzt.

4. wurde ja geregelt, 5. kenn ich nicht.

6. Ja. Aber hält sich eher in Grenzen. Ne Datenbank-Klasse kann z.B. ganz vernünftig sein, weil man dann verschiedene Datenbanken (z.B. MySQL, Postgresql...) über eine einzige definierte Schnittstelle ansprechen kann.
Oder wenn man eine bestimmte Datensammlung mit fest damit verbundenen Funktionen hat (z.B. hab ich einen simplen Stack als Klasse in PHP implementiert). Für ein Gästebuch dürfte es aber overkill sein, außer das Gästebuch ist Teil eines großen Systems, in dem bereits Klassen existieren.
Klassen sind sicherlich nicht unbedingt schnell, aber wenn sie den Code besser lesbar und besser wartbar machen, dann ist dieser Geschwindigkeitsverlust zu verschmerzen.

7. uhm... nö :-/ Aber Ansätze bekommt man öfter in den Kommentaren zu den Funktionen auf php.net. Oder in den dortigen Artikeln. Ansonsten, einfach mal hier höflich fragen =)

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
006
19.08.2002, 18:30
Washoe



3. Okay, diese cookie + url sache ist dann wohl relativ sicher. Außer man hat keine cookies, aber das ist dann wohl eigenes pech.

Zu PEAR, pear ist bei jeder php ausgabe dabei. Du sagtes ja, man kann eine datenbank abstraktion coden, das ist auch in pear drin. Auf jedenfall wird darüber viel in meinem buch geschrieben (php de luxe). Außerdem gibt es halt erweiterunge, z.b. einen einfachen userland chache. (einfach zu benutzen).

Eigendlich müsste jetzt nur noch ein xml profi kommen, und mir den wirlichen sinn dahinter erklären.

--

zum Seitenanfang zum Seitenende Profil || Suche
007
19.08.2002, 18:31
[RMen]OneStone



Nun ich bin kein XML Profi, aber ich finde es hat was von erweiterten .INI Dateien... (ganz abstrakt gesehen) ... :D

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
008
19.08.2002, 18:39
Zeeke



Es benutzen ja auch schon einige Anwendungen XML-Konfigurationsdateien...

--

zum Seitenanfang zum Seitenende Profil || Suche
009
19.08.2002, 18:46
dp
Administrator


ne db klasse ist imho recht sinnlos bzw ich halte nicht wirklich was davon. letztendlich ist die query language von db zu db doch verschieden, d.h. man muss eh viele queries abändern (oder zumindest ein paar), was bringt mir die klasse dann noch?

gut, wenn man einfach statt $db = new mysql einfach $db = new oracle schreiben könnte und alles funzt dann wäre das geradezu prädestiniert aber so sehe ich da kein sinn..

hätten die dbs nicht alle ne etwas abgeänderte query language wären sie wohl alle mehr oder minder gleich ..

--

zum Seitenanfang zum Seitenende Profil || Suche
010
19.08.2002, 23:47
Kriz



Hm, DP, was wäre damit:

<?php
CAbstractDB $db = new CAbstractDB(DB_MYSQL);
$db->Init($host, $user, $pw);
if(!$db->Connect()) echo "Fsck!\n";
else
{
... // bla bla bla
}
?>

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
011
20.08.2002, 01:18
theDon



du kannst den code für fehlerbehandlung in die klasse reinpacken

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
012
20.08.2002, 12:00
Washoe



Du kannst ja ne klasse code(gibts schon in pear). Wo du einfach sagst: verbinde mit einer oracle datenbank.
Und er führt dann das passende aus. Steht aufjedenfall so beschrieben in meinem Buch.

Das meiste ist jetzt wohl klar, nur xml ist sonne sache. Irgendwie hab ich das noch nicht ganz verstanden, obwohl alles davon redet.

--

zum Seitenanfang zum Seitenende Profil || Suche
013
20.08.2002, 12:27
[RMen]OneStone



Naja, du definierst halt deine eigenen Tags, und so kannst du auch andere Sprache als HTML mit XML realisieren, zum Beispiel Tags für ein eigenes Konfigurateions-XML, dann sähe deine config.ini z.B. so aus:

Quellcode:<configuration application="phOS">
  <runtime_parameters>
    <parameter name="protected-mode" value="yes" />
    <parameter name="A20" value="no" />
  </runtime_parameters>

  <file_system id="FAT32">
    <parameter name="sectors" value="19" />
  </file_system>
</configuration>

Die ganzen Tags wie configuration, runtime_parameters, etc. könntest du dir dann selber ausdenken und so verwenden. Du kannst mit XML also dann im Prinzip alles machen...

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
014
20.08.2002, 12:31
[PorK]



Klassen sind praktisch! Damit spart man sich Arbeit, Code etc.
Für die ganz Faulen hab ich noch eine alte... Opensource.
MysqlClass

--

code4me.je2050.dresscodenaked

zum Seitenanfang zum Seitenende Profil || Suche
015
20.08.2002, 14:44
apfelkorn



Klassen für Datenbanken haben insofern einen Sinn, wenn sie als allgemeine Schnittstelle gelten, die einheitlichen Zugriff auf der einen Seite haben und auf der anderen Seite für jede Datenbank andere Kommandos ausgeben. So kann man zum Beispiel eine Datenbank öffnen, mit Parsern Querystrings zerlegen und eine reine Textdatenbank benutzen. Genauso ist es zum Beispiel beim Unterschied zwischen ODBC und mysql. Während ODBC auch wiederrum eine Schnittstelle zu Datenbanken ist, hat sie ein leicht anderes Querysystem als mysql. z.B.:

mySql:
mysql_query("SELECT bla FROM bla", $db);
ODBC:
$query = "SELECT bla FROM bla";
odbc_preparequery($query);
odbc_exec_query();

als Aufruf aus dem PHP-Code sagt man nur:
$result = $db->query("SELECT bla FROM bla");

die Interfaceklasse übernimmt dann die Aufgabe, das jeweils zu Differenzieren, und, Gott sei Dank, sind wenigstens SQL-Datenbanken recht gleich.

--

zum Seitenanfang zum Seitenende Profil || Suche
016
20.08.2002, 16:21
dp
Administrator


@kriz
ich hab das schon verstanden :)
ich meinte nur unterschiede bei der query language. ein mysql query geht nicht zwingend mit einer oracle db..

@apfel
ja man kann das natürlich passen machen .. aber für die meisten dbs musst du das selber coden (in php, also nicht ne builtin php funktion) was dann auch wieder auf den speed geht (regexps). bevor ich sowas mach, nehm ich lieber konstanten für das query und binde je nach db unterschiedliche files ein in denen die konstanten definiert sind ...

bei der ganzen action darf man nicht vergessen, dass die meisten php scripts mysql verwenden bzw dass der hoster das so vorgibt. und wer was schnelleres als mysql brauch, der soll sich mal überlegen ob php überhaupt sinn macht, ne binary oder ein apache modul wären da eher angebracht.

--

zum Seitenanfang zum Seitenende Profil || Suche
017
20.08.2002, 17:12
TheTinySteini



Ok, das bessere Datenbankmodul hat ASP.net (siehe c't).
Ne DB-Klasse find ich allerdings allein schon aus dem Grund vernünftig, weil man alle Daten an einem Ort hat und keine irgendwo herumfliegenden Zugangsdaten hat oder sich um das Connection-Handle kümmern muss. Fehlerbehandlung kann auch gleich noch dort rein und schon muss man seinen Code nicht mehr mit
Quellcode:if( $result = mysql_query( 'SELECT blah FROM gruetze' ) )
    do_something;
else
    do_something_different;
verunstalten.

[edit]
@Black: Allerdings find ich ein solches Konfigurationsfile schlecht zu lesen und viel Tipparbeit. Und dann auch noch komplizierter zu parsen. Da ist mir doch ein Quellcode:[myl33tfat32]
sectors = -3
bugs = many
#debug = off
readerrors = incredible
viel lieber.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy


Dieser Beitrag wurde am 20.08.2002 um 17:16 von TheTinySteini bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
018
20.08.2002, 17:16
dp
Administrator


das kann man mit ner funktion auch.

zugangsdaten müssen sowieso herumfliegen, weil die möglichst seperat in ein file müssen (sicherheit, install-script) O_o. zudem hats nen vorteil, wenn man die einzeln speichert: man kann sein home php kram auf den server uppen ohne dass man die zugangdaten ändern muss. gleiches gilt für entwicklungen mit mehreren beteiligten .. die zugangsdaten kommen nich ins cvs, es muss net jeder immer wieder sein kram nach nem checkout reinschreiben.

--


Dieser Beitrag wurde am 20.08.2002 um 17:17 von Darth Paul bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
019
20.08.2002, 21:34
apfelkorn



also um eins mal vorne weg zu nehmen: xml für konfigurationsdateien zu verwenden ist nun wirklich Hirnschrott.

xml ist eine sog. MarkUp Language, was soviel heist wie "Beschreibungssprache". Damit kann man eine xhtml-Seite beschreiben, genauso wie auch ein Dokument (wie es zum Beispiel OpenOffice vormacht) oder einen Apfel:

<?xml blablabla>
<frucht typ="Apfel" farbe="rot/grün">
<stiel farbe="braun">
<blatt farbe="grün" />
</stiel>
<wurmstich x="2" y="5" farbe="komisch" />
</frucht>

oder eine Textdatei:
<document>
Das ist mein Halladriahodideidokument mit <b>fettem</b>, <i>kursiven</i> und <u>unterstrichenem</u> Text.
</document>

Dämmert es jetzt einigen, wozu XML gut ist?
Und zum Problem des unterschiedlichem interpretieren. Das ganze rührt daher, das einfach sich jemand überlegt hat: Lasst uns ein universelles Dateiformat schreiben, das unterschiedlichste Daten beinhalten kann, aber trotzdem leicht zu verstehen ist.

Genauso kann man auch ein Bild mit XML verfassen:
<picture width="5" height="5" colors="2">
<head>
<name>Kreis s/w</name>
</head>
<body>
0111010001100011000101110
</body>
</picture>

--

zum Seitenanfang zum Seitenende Profil || Suche
020
20.08.2002, 21:54
theDon



ich habs...(bens) notepad verwendet xml um dlls zu beschreiben

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
021
20.08.2002, 22:53
[RMen]OneStone



Hmm, dann muss man also eine proccess.xml machen, die die Änderungen beschreibt?

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
022
20.08.2002, 23:48
Washoe



Aber was ist das universelle an xml. Denn, was ist ein wurmstich? Wenn ich einen Europäer hab, der interpretiert wurmstich vielleicht als ekelig, wärend es irgendwo eine delikatesse ist. Außedem, warum soll ich einen apfel so beschreiben. Man kann sich doch wirklich nicht antun, sich durch solche dateien zu wülen. Das will so doch keiner sehen, wie genauch der apfel beschaffen ist.

Außerdem ist der text so ja wunderbar zu lesen. XML dateien kann man also irgendwie interpretieren, wo ist da das universelle, wenn es jeder anders interpretiren kann.

Oder wenn ich jetzt den russen ein xml dokument überreiche, das für uns nach frieden aussieht du russen interpretieren es als kriegserklärung(war gerade in "Der Anschlag").

Und wo ist der sinn in php genau? Ich lese immer nur, parser schreiben und domxml und so, aber wie kann ich es konkret zu meinem vorteil nutzen.

--

zum Seitenanfang zum Seitenende Profil || Suche
023
21.08.2002, 12:51
apfelkorn



argh
@Washoe:
Diese XML-Datei mit dem Apfel ist nur ein Beispiel. Ein Grafikprogramm könnte zum Beispiel das ganze Visualisieren, und du hättest das Bild von einem schönen Apfel. Andererseits kannst du mit dem Texteditor die Position vom Wurmstich verändern.

Also das mit XML verhält sich so, das es ein einheitliches Dateiformat ist, das von vielen interpretiert werden kann, aber nicht muss. Dazu gibts aber die schöne Möglichkeit der DtD's, die festlegen, welche Tags den überhaupt erlaubt sind. So kann es zum Beispiel passieren, das Microsoft Word und Wordperfect oder Lotus plötzlich genau das gleiche Dateiformat haben und man hat so nicht mehr das Problem des Konvertierens.

Zum Wurmstich: Das war nur ein Beispiel, damit man sieht, was es denn mit der Beschreibung auf sich hat. Natürlich bleibt es dem Interpreter (Mensch oder Maschine) überlassen, ob das jetzt für ihn lecker oder ecklig ist, aber das ist ein Problem, das mit dem Dateiformat nichts zu tun hat. Man sagt einfach nur: Da ist ein Wurmstich. Den kann man entweder rausschneiden, oder man schmeisst den ganzen Apfel weg, oder man beisst genüßlich rein. Aber im Dateiformat steht nur, das da überhaupt einer ist.

Zum Thema anders interpretieren: Das ist Strunks. Man kann auch die UN-Charta als eine Frechheit gegen die Souveränität des eigenen Landes interpretieren, oder ganz radikal gesagt können Nazis den Holocaust als Wohltat für die Menschheit interpretieren, Juden werden das natürlich ganz anders interpretieren. Interpretation ist immer eine Sache des Standpunktes, ob nun Internet Explorer ein HTML-Tag als ungültig interpretiert und Netscape 4.5 nun fröhlich anfängt loszublinken is ja nicht die Sache von HTML. Nur das W3C hat vorgegeben, das es dieses "<blink>"-Tag gar nicht gibt, genauso wie es auch das IE-"<marquee>"-Tag nicht gibt (Zum Glück).

Zu PHP:
PHP ist eine Serverseitige Scriptsprache, die es beispielsweise erlaubt, dynamischen Webseiteninhalt zu erschaffen. Ein einfachstes Beispiel ist ein Gästebuch: Du sendest mit einem HTML-Formular Daten an den Webserver. Der Webserver lädt die zu öffnende Seite und jagt sie durch den PHP-Interpreter. Der PHP-Interpreter bekommt die Daten gleich mit und kann dann in den Datenspeicher (Datenbank oder Textdatei) den neuen Eintrag hinzufügen. Dann liest er den Datenspeicher aus und gibt den Inhalt in die Webseite aus. Die wird dann an den Client übertragen und der hat den Inhalt vom Gästebuch vor sich mit seinem Eintrag ganz oben.

So dom, xml und so haben eigentlich nichts mit PHP zu tun.
Ein Parser kann mit PHP programmiert werden.

und zu deiner Signatur:
Richtig isses so: "Milliarden von Fliegen können sich nicht irren: Esst mehr Scheiße!"

--

zum Seitenanfang zum Seitenende Profil || Suche
024
21.08.2002, 14:14
Washoe



@apfelkorn

Zu Php, was hatte den das untere beispiel mit xml zu tun? Warum soll man denn einen parser proggen. Was bringt es mir denn?

Und mit der scheiße, ich habs einfach mal so gehört, keine ahnung ob das politisch korrekt ist.

--

zum Seitenanfang zum Seitenende Profil || Suche