Zum Inhalt springen

Schandfleck

Mitglieder
  • Gesamte Inhalte

    34
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Schandfleck

  1. Fast. Gib mal für x Zahlen mit und ohne Nachkommastellen (bzw. Punkt) ein: 0 0.5 1 1.2 ... Die müßten alle unterschiedliche Ergebnisse liefern, oder? Tipp: Es sind zwei Stellen im Programm zu ändern.
  2. Die Zahl e ist in math.h schon definiert und heißt M_E. Anstatt pow(2.71828183,x), bzw. pow(M_E, x) kannst Du auch exp(x) verwenden. Genereller Tipp: Achte auf die Einrückungen von Funktionen und Schleifen, schreibe öffnende und die zugehörige schliessende geschweifte Klammern untereinander. Das erhöht die Übersichtlichkeit.
  3. Die Sachen mit den int, dem do und dem Vergleich wurden ja schon angesprochen. Schaue Dir aber auch mal die Mathematik hinter Deinem Programm an. Den Fall D=0 brauchst Du nicht extra zu behandeln. Wirf besonders auch einen Blick auf den Fall D<0. Wozu dient das j? Du hast es als int deklariert, aber nie einen Wert zugewiesen. Hast Du die Formeln aus der Schule, oder aus einem Buch? Wenn Du es nicht auf Anhieb alles hinbekommst, poste hier nochmal eine verbesserte Version Deines Programms.
  4. Das Problem sind die Zeilenumbrüche in $adminflag. Stringkonstanten können sich in Java-Script nicht über mehrere Zeilen erstrecken. Verwende stattdessen anderes white-space, oder die Sequenz \n. Dazu die Single-Quotes in PHP beibehalten, damit sie von Java-Script und nicht schon von PHP interpretiert wird.
  5. Du kennst ja die Code-Blöcke, die für die einzelnen Anhänge zuständig sind. Du musst nur eine Abfrage einfügen, so dass die Code-Blöke nur ausgeführt werden, wenn die Datei auch vorhanden ist. In diesem Forum wird auf Hilfe zur Selbsthilfe gesetzt. Deshalb gebe ich nicht einfach den Code an. Du scheinst Programmieranfänger zu seien. Das nimmt Dir hier niemand übel, aber probiere es erstmal selbst. Wenn Du Schwierigkeiten hast, darft Du hier natürlich fragen. Der Code-Schnipsel, den Du verwendest ist, leider nicht geeignet, um ernsthaft genutzt zu werden; geistert aber immerwieder durch Foren.
  6. Mehere Zeilen mit Upload-Feldern untereinander ist zunächst kein Problem. Du mußt nur jedem <input>-Feld einen eigenen Namen mit dem name-Parameter zuweisen. Das PHP-Script mußt Du freilich auch anpassen, damit es die zusätzlichen Dateien verarbeitet. Am Besten Du postest den Code hier, wenn Du konkretere Hilfe haben möchtest. Ciao, Schandfleck
  7. Schandfleck

    Fakultät in C

    Es gibt noch long double. Der Wertebereich von long ist i.A. kleiner als der von double. U.U. war es der Sinn hinter der Aufgabe, eine 6stellige Zahl einzugeben, auf die numerischen Grenzen aufmerksam zu machen.
  8. Was willst Du verwenden, X.509 oder GnuPG? Das sind unterschiedliche, inkompatible Standards. Kleopatra (bzw. Gpg4win) kann seit Version 2 mit beidem umgehen, aber wenn der Kunde nur GnuPG einsetzt, kann er mit Deinem X.509-Zertifikat nichts anfangen.
  9. Das const, das ich eingefügt habe, bedeutet lediglich, daß der betreffende Wert, in diesem Fall das Ziel des doppelten Zeigers, nicht verändert werden kann. Da qsort() von der Vergleichsfunktion erwartet, daß diese die Werte nicht verändert, sollte sie entsprechend deklariert seien; anderenfalls gibt es eine Warnung wegen des nicht passenden Typs. Typdeklarationen in C liest man am Besten so, als würde die Variable benutzt. Beispiel, wenn Du unsicher bist, was sp in »const char **sp« für einen Typ ist, fang mit sp an. Darauf wird der Dereferenzierungsoperator (*) angewandt. sp muß also schonmal ein Zeiger auf irgendetwas seien. Dann folgt ein weiteres Sternchen. *sp ist also auch ein Zeiger, sp somit ein Zeiger auf ein Zeiger. char **sp gibt nun an, daß **sp ein char ist. Somit ist sp ein Zeiger auf einen Zeiger auf ein Char. Das zusätzliche const heißt nun, das der Wert unveränderbar ist. Beachte, daß sich das const nur auf den Char bezieht, auf den **sp zeigt. Die Zeiger *sp und sp dürfen durchaus verändert werden. Interessant ist die Deklaration der Funktion qsort() void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)) Das vierte Argument heißt compar und ist ein Zeiger auf eine Funktion, die zwei Zeiger auf einen konstanten Wert unbekannten Typs als Argument hat, und einen Integer als Ergebnis liefert. Klar?
  10. bei "ab fehlt ein schliessendes " streng genommen int scmp(const void *sp1, const void *sp2) { return strcmp(*(const char **)sp1, *(const char **)sp2); } Dein Array heißt Array1, es enthält char* qsort(Array1, 4, sizeof (char *), scmp); Du hast nur vier Elemente im Array Array1, nicht values Insgesamt sollte es etwa so aussehen: #include <stdio.h> #include <stdlib.h> char *Array1[] = {"ca", "ab", "ba", "cb"}; int scmp(const void *sp1, const void *sp2) { return strcmp(*(const char **)sp1, *(const char **)sp2); } int main(int argc, char **argv) { int n; qsort(Array1, 4, sizeof (char *), scmp); for (n=0; n<4; n++) printf("%s ", Array1[n]); return 0; }
  11. Hier wäre dann das Script. Du mußt noch passende E-Mail-Adressen eintragen. Beachte, daß die vom Web-Server verwendete Absender-Adresse sich hier NICHT konfigurieren läßt. Du mußt aber eine passendes E-Mail-Postfach einrichten, um ggf. Fehlermeldungen empfangen zu können. Das MAIL_FROM im Script sollte auf diese Adresse eingestellt werden. Falls Du Fragen hast, melde Dich hier. submit.php.zip
  12. Schandfleck

    VPN vs https

    Wobei sich dann der Einsatz von Client-Zertifikaten anbietet, damit beide Seiten in der Lage sind Main-in-the-Middle-Angriffe zuerkennen.
  13. Kennt betreffende Person Deine (DSL-)Einwahldaten und hat sich am Ende selbst unter Deinem Login eingewählt? Ist vom Privider eine Zuordnung Einwahl zum Anschluß zu bekommen? In der Regel gibts nur die Zuordnung vrgebene IP-Adresse zu Kunde (anhand des Login).
  14. Durch nicht widersprechen schliesst man keine Verträge, nur durch zustimmen. -> Übergebt die Sache einem Anwalt. Der kann auch gleich die Domains einklagen. Wenn der Domainname eurem Firmennamen entspricht, liegen die Rechte bei euch.
  15. Ich hoffe schon. Der E-Mail-Client sollte zumindest eine Warnung ausspucken. Immerhin will der Nutzer mit der Verschlüsselung sicherstellen, dass nur der beabsichtigte Empfänger die E-Mail lesen kann. Da sollte man schon sicher gehen, dass das Zertifikat auch vertrauenswürdig ist und der genannten Person gehört.
  16. Ja, aber genau das ist doch das Problem. Das System sieht Zertifikate als vertrauenswürdig an, die es nicht sind; auf die Richtigkeit der im Zertifikat genannten Daten kann man sich so nicht verlassen. Richtig, der Nutzer muss wissen, dass das Zertifikat tatsächlich von mir ist; spirch er den Angaben im Zertifikat vertrauen kann. Erst dann darf er das Zertifikat dem System als vertrauenswürdig bekannt machen. Im Endeffekt schon. Eine Signatur unter einer E-Mail hat den Zweck, dass der Empfänger darauf vertrauen kann, dass die E-Mail von dem im Zertifikat genannten Unterzeichner stammt und nicht verändert wurde. Dazu muss er auf die Richtigkeit der Angaben im Zertifikat (im persönlichen Sinn) vertrauen können. Das System kann das mit Technik auf das Vertrauen gegenüber der Stammzertifizierungsstelle zurückführen. Es kann aber nicht selbst entscheiden, ob diese vertrauenswürdig ist. Spätestens hier kommt der Nutzer ins Spiel, der dem System bekannt gemacht haben muss, welchen Zertifizierungsstellen er dahingehend vertraut, dass sie die Identität des Inhabers des Endbenutzerzertifikates hinreichend geprüft haben. Dabei muss man der Stammzertifizierungsstelle mehr Vertrauen entgegebringen, als dem Endbenutzerzertifikat. Bei letzterem braucht man nur sicher zu seien, dass die Angaben stimmen, ob und was der Nutzer, möglicherweise ungeprüft, unterschreibt ist egal.
  17. Es macht aber für die Vertrauenswürdigkeit des Zertifikates einen Unterschied. Dabei geht es nicht um Technk. Das Zertifikat soll den öffentlichen Schlüssel dem Inhaber des zugehörigen privaten Schlüssels zuordnen. Erfolgt vor der Ausstellung des Zertifikates keine Identitätsprüfung des Antragstellers, ist das Zertifikat eben nicht vertrauenswürdig, da man nicht weiß, ob die im Zertifikat genannte Person tatsächlich diejenige ist, die über den privaten Schlüssel verfügt. Natürlich kann man, wie geschrieben, selbst Nutzerzertifikate mit einem eigenen Root-Zertifikat signieren. Jedoch darf man nicht alles unbesehen blind unterschreiben, sonst ist es vorbei mit der Sicherheit, die man mit den Zertifikaten eigentlich ereichen wollte. Zertifikate darf man nur dann als vertrauenswürdig im System hinterlegen, wenn man auch weiß, daß der Aussteller ordentlich arbeitet und das Zertifikat aus vertrauenswürdiger Quelle erhalten hat.
  18. Funktioniert doch. Ich würde aber das eval() weglassen, wenn Du nicht weißt, was drin steckt. Der Code entpackt sich wieder zu einem eval()-Ausdruck und wieder und wieder. Ich habs nicht bis zum Ende durchgehalten. Ich wäre aber sehr vorsichtig mit dem Code, nicht das was Böses drinsteckt.
  19. Wieso? Genauso: (Deine »Last Usable Host Adress« ist wieder falsch. Die gegebene IP-Adresse würde bei Dir nicht innerhalb des Subnetzes liegen.) Also Du hast die IP-Adresse 135.24.55.67. /22 heißt, daß die ersten 22bit der Adresse das Netzwerkpräfix sind. Somit sind in der Subnetzmaske die ersten 22bit 1: (binär) 1111 1111 . 1111 1111 . 1111 1100 . 0000 0000 = 255.255.252.0 oder anders ausgedrückt: Die ersten 22bit sind bei allen IP-Adressen in diesem Subnetz gleich, sie unterschieden sich nur in den letzten 10bit. Die erste IP-Adresse im Subnetz brechnet sich zu 135.24.55.67 AND 255.255.252.0 = 135.24.52.0, die letzte zu 135.24.55.67 OR (NOT 255.255.252.0) = 135.24.55.67 OR 0.0.3.255 = 135.24.55.255 oder, wenn man es sich binär aufschreibt: 135.24.55.67 = 1000 0111 . 0001 1000 . 0011 0111 . 0100 0011 Alle IP=Adressen im gegebenen Subnetz haben die gleichen ersten 22bit; sind also alle von der Form 1000 0111 . 0001 1000 . 0011 01xx . xxxx xxxx Die IP-Adressen unterscheiden sich nur in den x. Die kleinste IP-Adresse im Subnetz erhält man, indem man alle x zu 0 setzt: 1000 0111 . 0001 1000 . 0011 0100 . 0000 0000 = 135.24.52.0 Die größte indem man die x zu 1 setzt: 1000 0111 . 0001 1000 . 0011 0111 . 1111 1111 = 135.24.55.255 Die erste und letze IP-Adresse in einem Subnetz sind aber nicht frei nutzbar. Somit ist die erste nutzbare IP-Adresse 135.24.52.1, die letzte 135.24.55.254 135.24.52.0 ist die so genannte Netzadresse, 135.24.55.255 die Broadcast-Adresse. Der Netzadresse fällt eigentlich keine besondere Bedeutung zu. In der Anfangszeit des Internet war man sich nicht einig, ob die erste oder die letzte IP-Adresse als Broadcast-Adresse dienen sollte. Inzwischen wird durchgängig die letzte dazu verwendet. Es gibt aber immernoch Geräte, die zusätzlich auch die erste IP-Adresse im Subnetz als Broadcast-Adresse interpretieren; daher muß sie freigehalten werden. Wenn man nur Geräte im Subnetz hat, die ausschließlich die letzte IP-Adresse als Broadcast verwenden, kann man auch die erste IP-Adresse eines Subnetzes als normale Host-Adresse verwenden.
  20. Wieso? Genauso: (Deine »Last Usable Host Adress« ist wieder falsch.) Also Du hat die IP-Adresse 135.24.55.67. /22 hei
  21. /19 => Subnetzmaske 255.255.224.0 (binär 1111 1111 . 1111 1111 . 1110 0000 . 0000 0000 [entspr. 19 1-Bits]) IP-Adresse 169.121.207.178 AND Subnetzmaske = »Netzadresse« 169.121.192.0 (= kleinste Adresse im Subnetz) 1. nutzbare Host-Adresse = Netzadresse + 1: 169.121.192.1 Broadcast-Adresse = IP-Adresse OR (NOT Subnetzmaske) = 169.121.207.178 OR 0.0.32.255 = 169.121.223.255 (= höchste Adresse im Subnetz) letzte nutzbare Host-Adresse = Broadcast-Adresse - 1: 169.121.223.254
  22. Das ist eine Subnetzangabe in sogenannter CIDR-Notation. Die Zahl nach dem Schrägstrich gibt die Anzahl der Bits des Netzanteils der IP-Adresse an. /24 entspricht damit einer Subnetzmaske von 255.255.255.0. Präfix bedeutet einfach nur der führende Teil (Bits), der bei allen IP-Adressen im Subnetz identisch sind, hier also die ersten drei Octeten (Bytes). Zu dem gegebenen Subnetz gehören alle IP-Adressen von 172.164.172.0 bis einschließlich 172.164.172.255 (einschließlich Broadcast). Weitere Beispiele sind: 172.164.172.0/26 : 172.164.172.0 - 172.164.172.63, Netmask 255.255.255.192 172.164.172.0/22 : 172.162.172.0 - 172.164.175.255, Netmask 255.255.252.0 172.164.0.0/16 : 172.164.0.0 - 172.164.255.255, Netmask 255.255.0.0

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...