Schrift
[thread]4484[/thread]

neues Board - Fragen zum Code: (ich hoff das passt hier hin)



<< >> 9 Einträge, 1 Seite
Crian
 2003-11-11 15:41
#38734 #38734
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Hmmm bleibt als nächste Frage, wo liest man jetzt weiter. Irgendwie fehlt ja der "normale" Programmablauf, weil HTML-Seiten produziert werden, in denen auf die Benutzereingaben hin wieder irgendwelche cgi-Teile aufgerufen werden.

Gibts da eine kleine Lesehilfe?


Edit: Wenn ich das richtig sehe, war diese cgi-Datei auch gar nicht der richtige "Anfang", die Datei scheint eine Art Statistikausgabe zu erzeugen.\n\n

<!--EDIT|Crian|1068558249-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2003-11-11 18:19
#38735 #38735
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Ja schon, aber ich weiß nicht mal, wo der Anfang ist...
Die index.html verweist auf etwas, das ich nicht finde, und mir sind die Zusammenhänge unklar.

Eigentlich brauche ich nur den richtigen Startpunkt.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2003-11-12 14:28
#38736 #38736
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Aha, also war ich doch auf der richtigen Spur und sollte nun in den Modulen weiterlesen?! (Was bei dieser oder jener Aktion gemacht werden soll...).

Mir fehlt irgendwie der Startpunkt. Oder ist board.cgi/pl das, was die Ausgabe erzeugt, wenn der User die Forums-Startseite aufruft?

Sorry, aber ich kenn mich halt mit CGI's noch gar nicht aus.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Strat
 2003-11-12 21:36
#38737 #38737
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
die hauptschluessel des hashes %PBoard::Config::Actions sind die Hauptparameter, die von dem Switch in board.pl (war mal board.cgi) ausgewertet werden, und die jeweilige (ebenfalls in dem Hash genannte) Subroutine (immer in Actions.pm) ausfuehrt
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2003-11-11 15:39
#38738 #38738
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Hallo ihr Board-Programmierer, ich hab mir gerade mal den Code (code_2003_11_04.tar.gz) geholt und beginne ihn mir anzusehen.

Ich muss dazu sagen, ich hab noch keine cgi's programmiert und mir kommt vieles unbekannt vor ...

Ich vermute mal man sollte anfangen in cgi-bin/board.cgi zu lesen, was Perlcode zu sein scheint.

Beim Lesen tauchen ein paar fragen auf (naja bisher eine), ich werde sie hier einfach mal posten, aber wenn das Beantworten zu sehr nervt oder aufhält dann ignoriert die Fragen.


Zum Codeabschnitt

Code: (dl )
1
2
3
4
5
6
7
8
9
my $action = $cgi->param('action') || 'overview';

# main switch; see PBoard::Config for details
if (exists $PBoard::Config::Actions{$action}->{subroutine}) {
   $PBoard::Config::Actions{$action}->{subroutine}->($cgi, $action);
} # if
else { # execute default action; maybe replace it by errorhandling later
   $PBoard::Config::Actions{'overview'}->{subroutine}->($cgi, 'overview');
} # else


Ich habe den Eindruck, dass hier doppelt gemoppelt wird... einerseits wird erstmal $action auf 'overview' gesetzt, falls es den CGI-Parameter 'action' nicht gibt (soweit ich das verstehe jedenfalls), dann wird nochmal abgefragt, ob es die Subroutine zur Aktion $PBoard::Config::Actions{$action}->{subroutine} gibt und im positiven Fall wird duiese mit $cgi und $action aufgerufen. Falls es sie nicht gibt, wird $PBoard::Config::Actions{'overview'}->{subroutine} mit den Parametern $cgi und 'overview' aufgerufen, d.h. es wird wohl sichergestellt, dass es diese Subroutine (im Hash) gibt.

Ah jetzt versteh ich es doch... Für den Fall, dass es keinen Action-Paramater gibt, wird if-case durchlaufen, aber der else-Case ist für den Fall da, dass es zwar den Action-Parameter gibt, im Hash aber keine Subroutine dafür vorgesehen wurde. Dann soll defaultmäßig die overview-Aktion durchgeführt werden.

Hmmm ... die Frage ist beantwortet... ich poste aber trotzdem mal, es tauchen bestimmt noch weitere Fragen auf :-D\n\n

<!--EDIT|Crian|1068557971-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
jan
 2003-11-11 15:56
#38739 #38739
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
jein. lesehilfen sind insofern schwierig, da man ja nicht weiß, wie der user sich verhält ;)
ich schätze, das beste wäre, wenn du dir die subs einfach anschaust und durch's einlesen versuchst, ein "gefühl" für den ablauf und die produktion zu bekommen...
Strat
 2003-11-11 20:08
#38740 #38740
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Crian,11.11.2003, 14:41]Edit: Wenn ich das richtig sehe, war diese cgi-Datei auch gar nicht der richtige "Anfang", die Datei scheint eine Art Statistikausgabe zu erzeugen.[/quote]
die board.cgi (bzw. neuestens board.pl) ist die hauptdatei, die die Konfiguration von PBoard/Config.pm liest

in PBoard::Config.pm steht der Hash Actions als Switch. Wenn dort eine Referenz auf eine Sub namens &PBoard::Actions::XYZ ist, dann geht es im Modul PBoard/Actions.pm weiter, und zwar mit der Sub XYZ. Genauso mit PBoard::Subs::abc => PBoard/Subs.pm

In PBoard/DB.pm sind die Funktionen zur Kommunikation zur Datenbank und alles, was die Datenbank abfragt.
In PBoard/Subs.pm liegen die Funktionen, die sonstige Sachen machen, z.B. Datumkonvertierung usw.
In PBoard/User.pm liegen sachen zur user-id, validierung usw.

Die Ausgabe des CGI erfolgt ueber HTML::Template

Am Ende von board.cgi/.pl wird noch ein klein wenig an statisti ausgegeben
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2003-11-12 14:40
#38741 #38741
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
board.cgi ist der "Knotenpunkt" in dem Board. Egal was der User macht, es wird immer board.cgi aufgerufen. Nur die Parameter, die mitgeschickt werden sind verschiedene. Am besten schaust Du Dir mal die Adressen bei Dir im Browser an, wenn Du Dich in diesem Board bewegst:

Egal, ob Du Dir einen Thread oder die Übersicht anschaust, es steht immer so was da wie
http://board.perl-community.de/cgi-bin/ikonboard/ikonboard.cgi?....
Aber die Parameter, die nach dem ? kommen sind unterschiedlich und bestimmen, was als nächstes angezeigt wird.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2003-11-13 12:50
#38742 #38742
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Ah ok danke. Die Adressen zu beobachten ist ein guter Tipp... dann werde ich hoffentlich sinnvoll weiterlesen können :-)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 9 Einträge, 1 Seite



View all threads created 2003-11-11 15:41.