Zum Inhalt springen

Schandfleck

Mitglieder
  • Gesamte Inhalte

    34
  • Benutzer seit

  • Letzter Besuch

Beiträge von Schandfleck

  1. #include <stdio.h>
    
    #include <math.h>
    
    #define e = 2,71828183
    Die Zahl e ist in math.h schon definiert und heißt M_E.
    case 2:     {z = pow(2.71828183,x); y = z - (5*x) +1;

    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.

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

  3. Eine fremde Web-Site kann man nicht so einfach verändern.

    Einen entsprechenden Webservice kenne ich nicht. Er würde auch mit dem Urheberrechtsgesetz kollidieren, da er erstens fremde Inhalte übernimmt und zweitens verändert. Für beides ist die Zustimmung des Urhebers erforderlich.

    Eventuell kann man das in Java-Script implementieren und im Stil von Boockmarklets in den Links einbauen; sofern es nicht an der same-Origin-Policy oder einem anderen Java-Script-Sicherheitsmechnismus scheitert.

    Die Hervorhebungen von Suchenbegriffen erfolgen durch die betreffenden Web-Sites selbst, die anhand des Referrers Kenntnis des Suchstrings nehmen.

  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. Weiß jemend wie ich diese Fehlermeldungen beheben kann?

    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. Auslesen lass ich die <input>-Felder folgendermaßen:

    <?php
    $Header .= "\nDatum/Zeit: ";
    $Header .= date("d.m.Y H:i:s");
    $Header .= "\n";

    // Beginn Code-Block zum Dateianhängen
    $Header .= "--$Trenner";
    $Header .= "\n";
    $Header .= "Content-Type: ";
    $Header .= $_FILES['Anhang']['type'];
    $Header .= "; name=";
    $Header .= $_FILES['Anhang']['name'];
    $Header .= "\n";
    $Header .= "Content-Transfer-Encoding: base64";
    $Header .= "\n";
    $Header .= "Content-Disposition: attachment; filename=";
    $Header .= $_FILES['Anhang']['name'];
    $Header .= "\n\n";
    $Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);
    $Header .= chunk_split(base64_encode($Dateiinhalt));
    $Header .= "\n";
    // Ende eines Anhanges

    $Header .= "--$Trenner--";

    mail($Empfaenger, $Mailbetreff, "", $Header);
    ?>
    [/PHP]

    Leider funktioniert das echo"vielen Dank für ihre email nicht" wäre jetzt nicht so schlimm. viel wichtiger ist der upload mehrerer Dateien.

    Vielen Dank schon mal

    Wenn Du mehrere Upload-Felder im Formular hast, wiederhole den gekennzeichneten Code-Block entsprechend oft und passe die Namen entsprechend Deinem HTML-Code an. (z.B. Anhang1, Anhang2, ...)

    Allerdings ist Dein PHP-Code qualitativ noch verbesserungswürdig. Vorallem besteht Missbrauchsgefahr, da Du Nutzereingaben ungeprüft in den Header übernimmst. Wenn es jemand geschickt anstellt, kann er mit Deinem Formular E-Mails mit beliebigem Inhalt an beliebige Empfänger versenden.

    Schaue Dir mal bei PEAR die Klassen Mail und Mail_Mime an. (Beispiele sollten sich mit Google finden lassen.) Es sei denn, Du willst lernen, wie man E-Mails »zu Fuß« erstellt.

    Zu der fehlenden echo-Ausgabe, konnte ich so nichts feststellen. Schaue Dir mal den Quelltext der Seite im Browser an, nachdem Du das Formular abgeschickt hast.

  7. Weis nicht ob ich das darf, da wir unsigned noch nicht hatten.

    Gibt es keine andere Möglichkeit, den Wertebereich zu steigern?

    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. Danke für die Hilfe aber das Hilft mir nicht wirklich weiter da ich dieses Thema in Bezug auf einen Kunden von meinem Chef übertragen bekommen habe und die nunmal mit GnuPg arbeiten, vondaher wäre es schon schön wenn mir hilfen in Bezug zur art und weise wie ich ein x509 Zertifikat in Kleopatra bekomme und diese in den Vertrauenswürdigen zertifikaten auftaucht.

    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. Okay, danke euch zwei für die viele Hilfe, das

    int scmp(const void *sp1, const void *sp2)

    { return strcmp(*(const char **)sp1, *(const char **)sp2);

    }

    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. ich habe ein Array1[] = {"ca", "ab", "ba, "cb"}

    bei "ab fehlt ein schliessendes "

    scmp( void *sp1, void *sp2 )

    {

    return( strcmp(*(char **)sp1, *(char **)sp2) );

    }

    streng genommen

    
    int scmp(const void *sp1, const void *sp2)
    
    {       return strcmp(*(const char **)sp1, *(const char **)sp2);
    
    }
    
    
    int n; int main () { qsort (Array, 4, sizeof(char), scmp); //der Quicksort-Algorithmus
    Dein Array heißt Array1, es enthält char*
    
    qsort(Array1, 4, sizeof (char *), scmp);
    
    
    int n; for (n=0; n<6; n++) //Ausgabe der Daten
    Du hast nur vier Elemente im Array
    printf ("%d ",values[n]);
    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. Wenn noch nicht mal das Festplattendienstprogramm (von der System-DVD gebootet) die Festplatte als solches findest (Partitionierung und angelegte Volumes außen vor gelassen), liegt ein Hardwareproblem vor. Wenn Du Trivialitäten, wie lose Kabel geprüft hast, falls zur Hand mal eine andere Festplatte einbauen, bzw. die vorhandene Festplatte in einen anderen Rechner einbauen, um herauszufinden, ob der Fehler an der Platte, oder am Rechner liegt. Ansonsten bleibt wohl nur der Gang zum Fachhändler.

  12. Drücke, wenn der Gong nach dem Einschalten ertönt, die Alt-Taste bis das Boot-Menü erscheint. Bis es alle verfügbaren Startvolumes angezeigt werden, dauert es u.U. etwas. Dort kannst Du dann das vorhandene Mac OS auswählen und in der Systemsteuerung das Startvolume dauerhaft umstellen. Ebenso kannst Du von einer eingelegten System-DVD starten und dort mit dem Festplattendienstprogramm die nicht benötigte Windows-Partition löschen und das Startvolume einstellen.

  13. jetzt musst nur noch jemand finden, der dir das script schreibt ^^

    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

  14. Wenn du OpenVPN, ähnlich wie HTTPS, Zertifikat-basiert betreibst ist da kein Unterschied. Dann kannst du MITM-Angriffe anhand des Zertifikats erkennen. (Immer vorrausgesetzt, das deine CA, die die Zertifikate ausstellt, sicher ist)

    Wobei sich dann der Einsatz von Client-Zertifikaten anbietet, damit beide Seiten in der Lage sind Main-in-the-Middle-Angriffe zuerkennen.

  15. Das Gespräch wurde aufgezeichnet und ein Preis von € 197,00 pro Domain genannt, dem von meinem Kolegen auch dummerweise auch nicht widersprochen wurde.

    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.

  16. Den E-Mail-Client interessiert das relativ wenig. Zumindest, wenn es um Verschlüsselung geht!

    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.

  17. Wenn die Stammzertifizierungsstelle bei dir als vertrauenswürdig gilt ist auch das damit ausgestellte Zertifikat vertrauenswürdig. Egal was da überprüft wurde oder ob die Daten darin stimmen.

    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.

    Wenn du dir nun selber ein Zertifikat ausstellst musst du dir irgendwas überlegen wie du das dem Nutzer so übermitteln kannst das er weiß das auch tatsächlich von dir ist

    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.

    PS: es geht um die technische Vertrauenswürdigkeit nicht um die persöhnlich gefühlte ;)

    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.

  18. Ob da Personalien oder ähnliches überprüft werden ist für das Zertifikat unerheblich.

    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.

  19. Hello ;)

    ich muss einen basevode 64 in php umwandeln, doch kein ordentliches tool dazu gefunden!

    wäre super wenn ihr mir helfen könntet!

    <? eval(gzinflate(str_rot13(base64_decode('FZh...w==')))); ?>

    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.

  20. Das mit dem ausrechnen des Subnetzes hat bei dir glaube ich per Zufall geklappt.

    Wieso?

    Given address/prefix of 135.24.55.67 /22

    Network: 135.24.52.0

    Broadcast: 135.24.55.255

    First Usable Host Address: 135.24.52.1

    Last Usable Host Address: 135.24.55.1

    Wie kommt man hier auf die Subnetzmaske bzw. das dritte Octet.

    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.

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