Zum Inhalt springen

~Hawkeye~

Mitglieder
  • Gesamte Inhalte

    115
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von ~Hawkeye~

  1. Naja ist halt eine Ansichtssache. Zudem kommt dazu, dass solche Formulare bei mir nie direkt im Code stehen sondern dieses hier zum Beispiel in der Datei frmLogin.inc.php und dann in den Code nur über include eingebunden wird. Nu in den Formulardateien bringe ich meist auch noch Abfragen ein um die Formularfelder eventuell nach einem Abschicken wieder zu füllen (register_globals ist bei mir meist ausgeschaltet). Deine Variante ist zwar weniger Arbeit für den php- Interpreter aber ich denke sobald da noch Javascript oder ähnliches dazu kommt wird dies auch unübersichtlich. Abgesehen davon hatte ich dann Probleme mit der Lesbarkeit, wenn ich HTML- Ausgaben von einer php- Bedingung abhängig mache. <?php echo "<?xml version=\"1.0\"?>"; Irgendwelcher Code; Der immer gebraucht wird; Zur Initialisierung o.ä.; function GibIrgendwasAus() { TuWas(); return $Irgendwas; } function GibNochMehrAus() { TuWasAnderes(); return $IrgendwasAnderes; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title> </title> </head> <body> <?php if ($foo == "bar") { ?> <h1>Überschrift</h1> <?php } ?> <div> Irgendwas </div> <?php echo GibIrgendwasAus(); ?> <div> <?php echo GibNochMehrAus(); ?> </div> </body> </html> Das schaut dann gar nicht mehr so gut aus finde ich. Den Doctype könntest Du übrigens auch mit in den Header, zu der XML- Deklaration, packen. *g*
  2. Man vergesse nicht, dass man sich stark an das Pflichtenheft halten muss, um überhaupt fertig zu werden. Dem User werden immer neue Dinge einfallen, die er unbedingt verwirklicht haben möchte und ihm ist meist nicht klar, dass das doch schon gravierende Änderungen nach sich zieht und andere Ideen von ihm selbst dadurch aufgehoben werden. Wenn man in so einem Fall nach Stundenlohn bezahlt wird, wird das schnell eine Neverendingstory und der Preis für die Website steigt natürlich. In meinem letzten Projekt konnte ich schon mit einem Prototypen beginnen, das genau das konnte was der User wollte. Dann kamen die Änderungswünsche und ich war so gutmütig einen Pauschalpreis zu nehmen. Ich saß dadurch nun im Endeffekt 4 Monate an einem Projekt und habe 70€ dafür bekommen. Man sollte sich hier Mal den Stundenlohn ausrechnen und überlegen was es Wert gewesen wäre, hätte ich gleich auf diesen bestanden. Mit anderen Worten Pauschalpreise sind gut und schön und für bekannte habe ich kein Problem damit nur für andere würde ich nie einen Pauschalpreis ansetzen sondern nur einen Stundenlohn nennen und die Stunden, die dafür erforderlich sind. Vor der ersten Programmzeile wird erst einmal ein Pflichtenheft ausgefüllt (Was auch schon Arbeitsstunden sind). So würde ich je nach Projekt einen Stundenlohn von ca 40€- 45€ veranschlagen. Darein fällt immer noch wieviel Aufwand das Programmieren für mich selbst ist. Also etwaige Routinen, die ich schonmal geschrieben habe und hier wiederverwenden kann. Zudem kommt dann noch die Verwendung der Seite. Ist sie kommerziell oder habe ich etwa Risiken mit der Seite bin ich ebenso bei den 60€ und mehr.
  3. Als Ergänzung noch. Es können ausser php- Dateien auch html- Dateien geparsed werden, wenn dies in der Config vom Webserver eingestellt ist. Im Übrigen wird bei einer Mischung aus php und html nie nur eine Datei an den Client übertragen. Hierfür verantwortlich ist das sog. response buffering. Der Webserver sendet eine Datei an den php- Interpreter, er parsed die Datei. Findet er nun einen block mit html, php und html Inhalt vor, so wird erst den html inhalt an den Webserver zurückschicken, das php verarbeiten und an den Webserver schicken und dann das restliche html an den Webserver schicken. Statt mit html kann das Beispiel natürlich auch mit reinem Text betrieben werden. Was anderes ist html für den php- Interpreter nicht. Dass zu wissen wird wichtig sobald Du mit Sessions arbeiten solltest. Zudem macht es Sinn auch im Unterricht schon die ungarische Notation zu üben. Kürzel vor Variablennamen machen einfach Sinn um zuerkennen was für einen Typ die Variable nun hat und zusätzlich darf man auch ruhig Groß- Kleinschreibung verwenden, wenn man bedenkt, dass Unix case sensitiv ist und deshalb das durchgehend so machen sollte. Kommentare machen dazu das leben einfacher. Ich selbst habe mir dazu noch angewöhnt selbst html mit an den php- Interpreter zu übergeben. Dadurch wird der Quellcode einfach lesbarer und für den Interpreter ist das innerhalb eines echos eh nur ein Text. Und man sollte sich überlegen wieso man den Inhalt aus der sicheren super globalen Variablen $_POST in eine Variable schreibt und nicht gleich auf den Wert im post zugreift. Dafür ist diese Variable da. // Wenn ein Login erfolgen soll if (isset($_POST['btnLogin'])) { $arrPflichtfelder = array($_POST['anzAccount'], $_POST['anzPasswort']); $intFehler = Validate_Pflichtfelder($arrPflichtfelder); // Ueberpruefen der Pflichtfelder // Wenn nicht alle Pflichtfelder gefuellt sind if ($intFehler == 0) { $strMeldung = Exception_Handling(1); } else // if ($intFehler == 0) { $intFehler = Validate_Login($_POST['anzAccount'], $_POST['anzPasswort']); // Ueberpruefen des Logins // Wenn der Login nicht gueltig ist if ($intFehler == 0) { $strMeldung = Exception_Handling(2); } else // if ($intFehler == 0) { Login($_POST['anzAccount'], $_POST['anzPasswort']); } // Ende von else von if ($intFehler == 0) } // Ende von else von if ($intFehler == 0) } // if (isset($_POST['btnLogin'])) // Wenn kein Login erfolgt ist oder ein Fehler aufgetreten ist if (!isset($_POST['btnLogin']) || $intFehler == 0) { echo " <form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\" name=\"frmLogin\"> <table border=\"0\"> <tr> <td class=\"Login\"> Kennung </td> <td class=\"Login\"> <input type=\"text\" name=\"anzUser\" class=\"Login\" value=\"\" /> </td> </tr> <tr> <td class=\"Login\"> Passwort </td> <td class=\"Login\"> <input type=\"password\" name=\"anzPasswort\" class=\"Login\" /> </td> </tr> </table> <br /> <input type=\"submit\" value=\"Login\" name=\"btnLogin\" class=\"Button\" /> <input type=\"submit\" value=\"Registrieren\" name=\"btnRegistrieren\" class=\"Button\" /> </form> <br /> <br />"; if (isset($strMeldung)) { echo $strMeldung; } // if (isset($strMeldung)) } // if (!isset($_POST['btnLogin']) || $intFehler == 0) [/PHP] Wenn Du das in ein if - else umwandelst, hast Du übrigens schon Deine Lösung.
  4. Eine Session sollte übrigens das einfachste sein *g*
  5. Noch als Ergänzung (doofe 15 Minuten Regelung) Die Theorie zur refentiellen Integrität könnte man nun noch um eine nicht obligatorische (kann) Beziehung ergänzen. Oben habe ich eine obligatorische (muss) Beziehung beschrieben. Bei der nicht obligatorischen Beziehung darf es zwar einen Vater ohne Kinder geben aber keine Kinder ohne Vater. Das sollte aber für den Anfang aber schon fast zuviel an Theorie sein.
  6. Das Select wird doch schon durch Foreign Keys beeinflusst. Ein Join ist zwar manchmal langsamer eine Wherebedingung aber auf jedenfall effektiver. Beim Insert ist es wirklich schnuppe, da hier eh erst der Primary Key geschrieben wird und dann der Primary Key wieder ausgelesen und dann in die referenzierten Tabellen als Foreign Key geschrieben werden muss. In php zum Beispiel mit mysql_insert_id() - liefert den zuletzt eingefügten Autowert, also den Primärschlüssel, wenn es ein autoincrement Feld ist. Ab der neuen phpmyadmin- Version ist es auch möglich die Referenzen über die Oberfläche zuerstellen. Verwirrend ist da nur, dass es auch bei den MyIsam Tabellen anscheinend funktioniert. Ich war bis jetzt auch der Meinung, dass ein cascade on delete oder update nur mit InnoDB möglich ist. Die SQL- Synatax für einen Foreign Key ist übrigens: ALTER TABLE tabellenname ADD FOREIGN KEY (Foreign Key in Tabelle REFERENCES tabelle a (Primary Key aus Tabelle A) ON DELETE CASCADE Durch das ON DELETE oder ersatz bzw. ergänzungsweise ON UPDATE CASCADE wird erst das ermöglicht wieso ein Fremdschlüssel so sinnvoll sein kann. Ich lösche durch mein Programm einen Primärschlüssel aus Tabelle A und nun geht das DBMS für mich her und löscht alle Datensätze, die mit einem aus Tabelle A durch Fremdschlüssel verknüpft sind. Erst dadurch wird eine referentielle Integrität erreichbar, da ich auch die DELETES auf die Fremdschlüssel durch mein Programm erledigen könnte, nur was passiert, wenn mein Programm abschmiert? Es könnten leichen zurückbleiben, die ich nur noch schwer bzw. nur noch manuell ausfiltern könnte. Und bei mehreren Tausend Datensätzen ist das schon eine Menge Arbeit. Die referentielle Integrität sagt einfach nur aus, dass alle Kinder (Fremdschlüssel) des Vater (Primärschlüssel) Datensatzes mit dem Vater in Beziehung stehen müssen. Sollte es Kinder ohne Vater geben, so ist die Datenbank inkonsistent.
  7. Was passiert denn, wenn Du Winamp unter dem eingeschränktem Account mit Adminrechten ausführst? Also Rechtsklick -> Ausführen als. Wenn das funktioniert wird es wohl an den Benutzerrechten des eingeschränkten Users liegen. Da könnte man vieleicht mit Ausführen und dann "gpedit.msc" die Benutzerrechte in den Computereinstellungen zurecht biegen. Das erfordert Admin- Rechte soweit ich weiß und müsste sich in den Computereinstellungen auf alle User, die sich an diesem PC anmelden auswirken, denke ich.
  8. So ein Tool würde ich auch nie einsetzen. Selbst wenn nun mein Vorführsystem davon betroffen war. Ich mag einfach generell keine Spyware oder Viren, die man sich mit solchen Dinge einfangen kann (übrigens auch bei so manch einem Microsoftprodukt ist einwenig Spyware von Haus aus mit dabei -> Win XP und die liebe Alexa) Lokale Benutzer haben auf einem DC nichts mehr zu suchen, weil sie eben Objekte im AD sind und genau deswegen hatte ich gehofft, dass es nicht möglich ist, die lokalen Benutzer wieder herzustellen. Das Microsofttools die selbst zur AD wiederherstellung reaktivieren können ist ja Ok aber jemand mit Zugang zum DC und bei unglücklich eingestellter Bootreihenfolge bzw. "leichte" BIOS- Passwörter ist das eine doofe Möglichkeit die Domäne zu kippen.
  9. Ich habe den Server nun doch lieber neu aufgesetzt. Da war etwas total im argen. Der User den ich angelegt hatte durfte PC's in die Domäne aufnehmen aber in der Domäne anmelden konnte ich mich mit diesem nicht. Über das Adminpak war folglich auch keine Administration mehr möglich. Ich denke ich habe eher einen Fehler bei der Einrichtung damals gemacht. Trotzdem vielen Dank für die Hilfe.
  10. Habe mich verschrieben. Ist eigentlich ein Enterprise ;-) Ich versuch Mal morgen mich remotemässig mit der Kiste zuverbinden und dann dort vieleicht noch was zu drehen. Es ist übrigens faszinierend was alles mit Tools aus dem Internet funktioniert. Ich hatte gehofft, dass ich beim erstellen der Domäne den lokalen Administrator richtig abgeschaltet hatte. Nur kann man mit einem Tool nun den User wieder auf aktiv setzen und sogar sein Passwort zurücksetzen. Wäre eine feine Sache, wenn man sich an nem Server überhaupt noch lokal anmelden könnte.
  11. Ich dachte eigentlich den hätte ich im AD in die Gruppe der Administratoren genommen. Gibt es denn eine Möglichkeit die Domäne wieder aufzulösen oder gar das AD von Knoppix oder ähnlichem zu bearbeiten?
  12. Hallo, ich habe hier zu Präsentationszwecken einen Win Server 2003 Pro eingerichtet. AD ist eingerichtet, SP1 ist installiert. Ich habe nun nur das Problem, dass ich mit dem Administrator nicht mehr anmelden kann. Das angegebene Passwort wird immer als falsch erkannt. Ebenso funktioniert keine Anmeldung mit dem User, den ich mir im AD angelegt habe. Direkt am Server bekomme ich dann die Meldung: "Die lokale Richtlinie erlaubt es Ihnen nicht, sich interaktiv anzumelden" Mit diesem User kann ich mich aber ohne Probleme über Netzwerk an den Server authentifizieren und auch auf die Freigaben zugreifen. Remote Desktop meldet mir allerdings, dass er keine Verbindung zu dem Server aufbauen kann. Hat jemand eine Idee oder hilft da nur noch neu aufsetzen?
  13. Beispiel in Worten: Bestellung, Kunde = Objekt gehört_zu = Beziehung Eine "Bestellung" [1,1] gehört_zu [0,*] "Kunde" Die Ausprägung beschreibt den Grad der Verbindlichkeit also ob obligatorisch (muss) oder nicht obligatorisch (kann). Sie wird jeweils von beiden Objekten aus gesehen. Eine Bestellung muss zu einem Kunden gehören [1,1] und 1 Kunde kann n Bestellungen aufgeben [0,*]. Das ganze wird dann im ERM an den Objekten (Rechtecken) zwischen dem Objekt und der Beziehung (Rhombus) notiert.
  14. Dann ist es [0,1]. Hier Mal die Tabelle dafür: Grad Ausprägung "Muss"- Beziehung "Kann"- Beziehung 1 zu 1 [1,1] [0,1] 1 zu N [1,*] [0,*]
  15. In der sog. Superglobalen Variablen $_GET wird das gespeichert was mit der Methode Get im Browser übertragen wird. Also alles was an die URL angehängt ist. Allerdings nur, wenn diese URL auch mit der Variablen hinten dran auch so aufgerufen wurde. Diese Variable soll Sicherheitslücken schließen die dadurch entstehen können, wenn register_globals eingeschaltet ist. Wenn register_globals eingerschaltet ist, dann kannst Du immernoch direkt mit dem Variablennamen zugreifen. Also wenn Du nun eine Seite aufrufst und dort auf einen Link klickst indem eine Variable "foo" mitgegeben wird, dann wird das per Get übertragen und auf der nächsten Seite kannst Du entweder bei abgeschalteten register_globals mit $_GET['foo'] oder wenn es aktiviert ist mit $foo auf diese Variable zugreifen.
  16. Wie ist die Netzanbindung dieser beiden PC's und wie die der Clients? Wenn zuviele oder falsch konfigurierte Aktivkomponenten dazwischen hängen kann die Verbindung zwischen den beiden PC's das Problem sein und nicht das Zusammenspiel zwischen php und MySQL. Zum Beispiel einpaar Routingeinträge, die ein Paket erstmal komplett durch das Firmennetz schicken bis es ankommt oder schlechte Verkabelung (Netzwerk direkt neben Sttrom). usw.
  17. Also damit es übersichtlicher wird kannst Du vieleicht einfach Mal folgendes versuchen: <?php echo "<a href=\"index.php?strURL=URL\">Link</a>"; ?> [/PHP] Dann kannst Du mit $_GET['strURL'] auf den Inhalt der Variablen zugreifen. Nun hast Du die auf der nächsten Seite und wenn Du die mit einem Formular noch weiter schicken willst, dann geht das so: [PHP] <?php echo " <form action=\"index2.php?strURL=".$_GET['strURL']."\" method=\"post\"> <input type=\"submit\" name=\"btnSubmit\" value=\"Weiter\" /> </form>"; ?> Und zack kannst Du auch der folgeseite auch nach dem Abschicken des Formulares auf diese Variable zugreifen.
  18. Nur so als Tipp. Wenn Du die Session- ID selbst bestimmen willst, dann solltest Du das auch mit session_id() tun.
  19. Also Du meinst wenn ein Datensatz zu keinem, einem oder n Datensätzen in Beziehung stehen kann? Das wäre dann eine nicht obligatorische 1:N Beziehung und somit [0,*] als Notation.
  20. Also als erstes würde ich die Fehlerunterdrückung (das @ Zeichen) vor dem session_start() wegnehmen. Wenn der Quellcode auf der 2. Seite excakt genauso ist wie Du ihn hier gepostest hast, bekommst Du da nämlich den Fehler, dass bereits ein Header gesendet wurde. Demnach existiert keine Session-ID und Du fragst eine Variable ab, die nicht zu einer Session gehört. Ich gehe dabei einfach Mal davon aus, dass session_autostart bei Dir deaktiviert ist. Abgesehen davon übergibst Du die Session-ID und den Namen der Session nicht mit PHPSESSID sondern einfach mit SID. Das ist die Konstante dafür.
  21. Bzw. der IIS kann das von Haus aus zusammen mit dem IE. Microsoft taugt zwar in den meisten fällen zu nichts aber wenigstens können deren Produkte fast "sauber" kommunizieren. http://www.galileocomputing.de/openbook/asp/asp130000.htm#Rxxasp13327IntegrierteWindowsAuthentifizierung
  22. Ich denke das hilft Dir weiter: MySQL Referenz ADDDATE() SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY); Als erstes Argument das heutige Datum mit CURRDATE() auslesen und im 2. Argument aus der 31 ne 7 gemacht. Ist das nicht vieleicht einwenig unglücklich mit php gelöst? Ich mein jeden Tag auf diese Website gehen damit der überhaupt Mal das Statement ausführt?
  23. Die Session ist solange aktiv wie der User nicht zu einer anderen Seite wechselt, die Internetverbindung beendet wird oder die Lifetime der Session beendet ist. Beim Start einer Session wird auf dem Server, in einem bestimmten Verzeichnis, eine Datei angelegt. als Dateiname wird in der Regel die Session- ID verwendet. Im Inhalt der Datei stehen dann die Variablen der Session mit den entsprechenden Werten. Sofern der Server richtig funktioniert werden diese Datei beim Ablaufen der Lifetime automatisch wieder gelöscht. Es erfüllt quasi die Funktion eines Cookies aber liegt auf dem Server. Keine Ahnung ob der Ausdruck "Cookie" für diese Datei falsch ist. Bei einer Session wird zusätzlich auf einem Client noch die Session- ID in einem Cookie hinterlegt. Wenn man nun die Session- ID dauerhaft auf dem Server speichert und beim nächsten Aufruf der Seite abfragt ob auf dem Client schon eine Session mit der gespeicherten ID existiert oder nicht, ist man wieder unabhängig von der IP. Ich wüsste keinen Weg die MAC- Adresse über eine Scriptsprache abzufragen. Zudem kann man sich auch da nach dem Sinn fragen. Ich habe ein Netzwerk mit 5 Clients und ein Router stellt für mich die Internetverbindung her. Das Paket erhält am Client einen Header mit den Ziel und Herkunftsinformationen, etc. Am Router angekommen erhält das Paket einen neuen Header. Also gibt es auch hier keine Möglichkeit von außen auf einen Client hinter dem Router zu schließen. Nach außen sollte nur die MAC des Routers "sichtbar" sein. Das gillt ebenso für Proxies und ich denke es ist keine Minderheit, die keinen Zugang direkt über ein Modem herstellt.
  24. Hallo, ich bastel gerade an einem kleinen Tool, dass mir nach der Eingabe einer Start- und Zielkoordinate, eben diese beiden und alle anderen Koordinaten, die dazwischen liegen, anzeigt. Also zum Beispiel: Eingabe Start: 6 6 6 Eingabe Ziel: 10 10 10 6 6 6 6 8 9 6 10 20 9 10 30 . . . 10 10 10 Es sollen selbstverständlich nicht alle Werte zwischen Start und Ziel ausgegeben werden sondern nur die, die auch in der Datenbank (MySQL) stehen. Bis jetzt sieht das so aus: function Berechne_Weg($intStartGalaxy, $intStartSystem, $intStartPlanet, $intZielGalaxy, $intZielSystem, $intZielPlanet) { include ("mysql.inc.php"); if ($intZielGalaxy > $intStartGalaxy) { $strWhereclausel = "tbl_standorte.intGalaxy <= '".$intZielGalaxy."' AND tbl_standorte.intGalaxy >= '".$intStartGalaxy."'"; } else { $strWhereclausel = "tbl_standorte.intGalaxy >= '".$intZielGalaxy."' AND tbl_standorte.intGalaxy <= '".$intStartGalaxy."'"; } if ($intZielSystem > $intStartSystem) { $strWhereclausel .= " AND tbl_standorte.intSystem <= '".$intZielSystem."' AND tbl_standorte.intSystem >= '".$intStartSystem."'"; } else { $strWhereclausel .= " AND tbl_standorte.intSystem >= '".$intZielSystem."' AND tbl_standorte.intSystem <= '".$intStartSystem."'"; } if ($intZielPlanet > $intStartPlanet) { $strWhereclausel .= " AND tbl_standorte.intPlanet <= '".$intZielPlanet."' AND tbl_standorte.intPlanet >= '".$intStartPlanet."'"; } else { $strWhereclausel .= " AND tbl_standorte.intPlanet >= '".$intZielPlanet."' AND tbl_standorte.intPlanet <= '".$intStartPlanet."'"; } $strSQLString = "SELECT tbl_standorte.intGalaxy, tbl_standorte.intSystem, tbl_standorte.intPlanet, tbl_user.varUser, tbl_typ.varTyp FROM tbl_standorte INNER JOIN tbl_typ INNER JOIN tbl_user ON tbl_standorte.intTypID_FK = tbl_typ.intTypID_PK ON tbl_standorte.intUserID_FK = tbl_user.intUserID_PK WHERE ".$strWhereclausel." ORDER BY tbl_standorte.intGalaxy, tbl_standorte.intSystem, tbl_standorte.intPlanet;"; $intErgebnis = mysql_db_query($strDBName, $strSQLString, $strServer) or die ($strSQLString ."<br />". mysql_error()); return $intErgebnis; mysql_close(); } [/PHP] Nur funktioniert das nicht wirklich. Also Probleme tauchen auf, wenn der Start- größer ist als der Zielwert und es wird zwar ein Verlauf dargestellt, nur leider nicht der zwischen dem Gesamtwert der Koordinaten sondern nur der Einzelergebnisse Zu der DB- Struktur wäre noch zu sagen, dass die tbl_standorte die Koordinaten in 3 Spalten enthält. Die Tabellen tbl_user und tbl_typ sind nur Resourcentabellen. Die Lösung wird wahrscheinlich wieder ganz einfach sein und ich steh nur wieder auf dem Schlauch. PS: Am liebsten wäre mir eine Lösung die nur über das SQL- Statement funktioniert. Also keine nach bzw. vorbereitung im php.
  25. Defakto funktioniert keine saubere Abstimmung nicht ohne einen Login. Das Problem sehe ich da weniger in der Neuzuweisung durch den Provider sondern eher durch IP- Masquerading. Sobald die Verbindung durch einen Router hergestellt wird oder die User hinter einem Proxy sitzen, kommt man mit der IP nicht weiter. Um den Login zu umgehen ist der sinnvollste Weg, über eine Kombination aus IP, clientseitigem Cookie und serverseitigem Cookie (Session) zu gehen. Zusätzlich zu dem oberen Pseudocode müsste dann noch eine Routine mit dem abspeichern der Session zusätzlich zur IP und die entsprechende Abfrage, eingebaut werden. Die Lösung würde schonmal einen großen Raum abdecken wäre aber immer noch nicht für alle User anwendbar.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...