anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 10 Jun, 2025 04:07

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do 22 Jan, 2009 19:00 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Ausgelesen wird der Inhalt einer Datei. Ich habe dies für flexiblere Ortsbeschreibungen gemacht (Beschreibung + Bild).

Jetzt habe ich allerdings das Problem, dass in manchen Ortsbeschreibungen so etwas vorkommt

'.($row['sex']?'Blubb':'blubb').'

oder eben eine normale Variable.

Ergo steht dann nicht der eigentliche Wert (In diesem Fall eben der Wert für sex = gesetzt oder nicht), sondern die Abfrage selbst in der Beschreibung.

Wie wäre es am besten vorzugehen?

LG Draz

_________________
$this->bbcode_second_pass_code('', '(define-record-procedures choco-cookie
make-choco-cookie choco-cookie?
(choco-cookie-choco
choco-cookie-cookie))

(define Prinzenrolle
(make-choco-cookie choco-cookie-choco-standard (* 2 choco-cookie-cookie-standard)))')


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 22 Jan, 2009 19:11 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Unsauber kannst du die Datei natürlich einfach inkludieren bzw. eval benutzen.
Sauberer könntest du den ganzen Kram in Funktionen packen und dann die ausführen (und sie am besten noch mit den Parametern füttern, die intern gebraucht werden (Lässt sich besser warten & Testen als Zugriffe auf globale Variablen)

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 22 Jan, 2009 19:18 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
eval hab ich mir schon mal überlegt, aber irgendwann hat Eliwood mal gemeint, dass man das immer umgehen kann, weil unschön. includen will ich es eigentlich nicht, da ich sonst zu derbe Änderungen vornehmen müsste.

Durch ne Funktion jagen könnte ich. Aber wie sollte der den Code herausfischen?

Evtl. könnte ich code markieren, so vllt.:
[code]'.$val.'[code]

Und dann mit explode bearbeiten. Die Frage ist, wie performant, bzw. wie umständlich ist das?

_________________
$this->bbcode_second_pass_code('', '(define-record-procedures choco-cookie
make-choco-cookie choco-cookie?
(choco-cookie-choco
choco-cookie-cookie))

(define Prinzenrolle
(make-choco-cookie choco-cookie-choco-standard (* 2 choco-cookie-cookie-standard)))')


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 22 Jan, 2009 20:55 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
include ist ja noch schlimmer wie eval, wenn die Dateien von anderen Bearbeitet werden können :p

Es gibt 2 Möglichkeiten:

1. Eigene Syntax machen und den Code-Block in drazaarScript mit PHP interpretieren und in PHP übersetzen. Ziemlich sichere Sache - wenn anständig gemacht. Einziges Problem: Nojo.. Schwierigkeitsgrad ist wohl sehr hoch, je nach dem, was die Sprache können soll :D

2. Meine Lieblingsmethode. Module. Die Dateien sind PHP-Skripte, die nach bestimmten Muster geschrieben werden, im Modulmanager werden sie installiert und über sogenannte hooks hängen sie sich selbst an den Stellen ein, wo die Hooks sind. Ausführen des Codeblockes zum Beispiel DrazaarModule325212_runhook($hookidentifier, $arguments). Vorteil: Sehr flexibel. Nachteil: Wenn nicht-Programmierer mitschreiben müssen die mehr Eigenleistung bringen und sich da reinlesen. Und du natürlich Gegenlesen - damit nix böses reinkommt.

Edit: Nein, eval macht in ganz wenigen Fällen sinn. Ich habe es eine Zeitlang mal verwendet gehabt, hochabgesichert, damit kein [sch....] reinkommt. Ging damals im Mathematische Operationen in Datenbankfelder mit wenigen Funktionen (round, floor, ceil).


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 22 Jan, 2009 21:29 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Hmmm, das Problem ist: Ich hab mich noch nie wirklich mit Modulen auseinandergesetzt. Die erste Lösung lass ich einfach mal unter den Tisch fallen, dafür bin ich nicht qualifiziert genug *g*

Das Problem ist, dass das Script eigentlich von jedem benutzt werden können sollte, also auch von Leuten, die nicht so viel Ahnung von php haben.

Wie kann eigentlich in die Dateien etwas "Schlechtes" kommen? Durch die Rechte, die ich im Ordner setzen musste?

_________________
$this->bbcode_second_pass_code('', '(define-record-procedures choco-cookie
make-choco-cookie choco-cookie?
(choco-cookie-choco
choco-cookie-cookie))

(define Prinzenrolle
(make-choco-cookie choco-cookie-choco-standard (* 2 choco-cookie-cookie-standard)))')


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 22 Jan, 2009 21:37 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Wer das Script benutzt, ist doch egal? Hauptsache, der, ders schreibt, kanns.

Und nein, Drazaar, in die Dateien nicht direkt, wenn nur die Programmierer sie bearbeiten können sollen. Aber jeder User-Input ist böse.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 22 Jan, 2009 21:45 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
User kommen da nicht ran, nur Admins.

Das Tool ist nicht unbedingt eines der Sinnvollsten, aber es ist hilfreich, manchmal.

Es speichert das Bild + den Text zu einem Ort ab. Ergo sowas wie "Hier ist der Stadtplatz und hier gibts viele tolle Läden, blabla." [Bild vom SP]
Und das eben in einer txt Datei.

Bei neuen Scripten kommt dann einfach ein place_description('Ortname'); rein, was die Beschreibung ausgibt. Man kann die dann in der Admingrotte bearbeiten.

Was mir das nützt ist einfach: Ich muss keine dämlichen Beschreibungen machen, sondern kann das andere machen lassen. Und niemand pfuscht mehr in *meinen* Scripten rum.

+ Das ganze ist flexibler. Ich hasse statische Dinge.

MfG
Draz

_________________
$this->bbcode_second_pass_code('', '(define-record-procedures choco-cookie
make-choco-cookie choco-cookie?
(choco-cookie-choco
choco-cookie-cookie))

(define Prinzenrolle
(make-choco-cookie choco-cookie-choco-standard (* 2 choco-cookie-cookie-standard)))')


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 23 Jan, 2009 00:39 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
dann solltest du das ganze tatsächlich in Funktionen (oder Objekte, die ein bestimmtes Interface implementieren) packen.
$this->bbcode_second_pass_code('', '
function place_description_spielplatz() {[
global $session;
$str = sprintf("Dies ist der Spielplatz - du siehst einige freundlich winkende %s auf den Bänken sitzen...",$session['user']['sex'] == 0 ? "Mütter" : "Väter");
return $str;
}
...
')

In der Funktion kannst du natürlich alles anstellen, was du so willst. Der aufruf dafür wäre auch nicht sonderlich schwierig:
$this->bbcode_second_pass_code('', '
$ort = 'spielplatz'
$funcname = 'place_description_' . $ort;
output($ort());
')

Sollte zumindest funzen.

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 23 Jan, 2009 18:24 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Hmmm das Speichern in Funktionen klingt gut, das werde ich wohl machen. Muss ich zwar n bissel umschreiben, aber das wird schon. Ist ja nun eigentlich so ähnlich wie das Modulsystem von Chaosmaker (Wohnviertel).

Vielen Dank an euch.

MfG
Draz

_________________
$this->bbcode_second_pass_code('', '(define-record-procedures choco-cookie
make-choco-cookie choco-cookie?
(choco-cookie-choco
choco-cookie-cookie))

(define Prinzenrolle
(make-choco-cookie choco-cookie-choco-standard (* 2 choco-cookie-cookie-standard)))')


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum