tutorials.de Buch-Aktion 02/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
21
ZUGRIFFE
671
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MS[shady] MS[shady] ist offline Mitglied Silber
    Registriert seit
    Dec 2001
    Ort
    Magdeburg [Sachsen-Anhalt]
    Beiträge
    62
    Folgendes script:

    PHP-Code:
    <?php
    header
    ("Content-type:image/png");
    $bild imagecreatefrompng("d.png");
          
    $Datum "14.04.2007 10:05:00";                                  // Schrift
                
    $Zieldatum mktime(substr($Datum112), substr($Datum142), substr($Datum172), substr($Datum32), substr($Datum02), substr($Datum64), -1);
              
    $Differenz $Zieldatum-time();
              
    $Tage floor($Differenz/86400);
              
    $Rest $Differenz-($Tage*86400);
              
    $Stunden floor($Rest/3600);
              
    $Rest $Rest-($Stunden*3600);
              
    $Minuten floor($Rest/60);
              
    $Rest $Rest-($Minuten*60);
              
    $Zeit "T:$Tage - H:$Stunden - M:$Minuten - S:$Rest";
    $blau imagecolorresolve($bild47214250);
    $hinter imagecolorresolve($bild255255255);
    imagecolortransparent($bild$hinter);
    imagestring($bild751"$Zeit"$blau);
    imagepng($bild);
    imagedestroy($bild);
    ?>
    Wie gesagt auf dem einen server läufts auf dem anderen nicht.
    Wäre es ein Sicherheitsrisiko wenn ich einen Link zu den jeweiligen phpinfo Dateien poste?
     
    MfG MS[shady]

  2. #2
    Sturmrider Sturmrider ist offline Mitglied Gold
    Registriert seit
    Mar 2006
    Beiträge
    217
    Nein, nicht das ich wüsste. In der PHP-Info stehen nur Daten vom Server bzw. dessen Settings, aber nichts von dir. Ansonsten schau doch selber einem ob die GD-Lib aktiviert ist.
    Ich glaube allerdings nicht, dass das das Problem ist

    Vielleicht ist das Bild nicht auf dem Server?
    Was für eine Fehlermeldung bekommst du eigentlich?
    ->hoffentlich eine andere als ich beim Testen bekomme: "Die Grafik "http://localhost/test.php" kann nicht angezeigt werden, weil sie Fehler enthält." Allerdings wie lautet denn der Quellcode des Bildes? Warscheinlich steht dort die eigentliche PHP-Fehlermeldung drin

    Edit: Übrigens, was ich noch anmerken muss (sry, kanns mir nicht verkneifen) Du solltest in Zukunft etwas mehr Wert auf folgende Dinge in deinen Codes legen:
    1. Variablennamen einheitlich schreiben (sollten nur klein sein)
    2. !dich über die php-Zeit-Funktionen informieren!
    3. Fehlerbehandlung in deinen Codes verwenden
    Geändert von Sturmrider (09.02.07 um 22:27 Uhr)
     

  3. #3
    TchiboMann TchiboMann ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Ort
    Lübeck
    Beiträge
    174
    @ msshady:
    Ja, es ist ein sicherheitsrisiko. Die phpinfo();-Informationen sind nur für dich bestimmt, nicht für andere. Zu deinem Problem: Ich denke mal, dass auf dem einen Server PHP ohne Grafikbibliotheken laufen, auf dem anderen mit. aber, schau einfach mal in den Quelltext der Seite, auf dessen Server das Script nicht läuft. Da steht der Fehlergrund in der Regel drin, auch wenn dieser nicht sichtbar im Browserfenster ist.

    @ Sturmrider:
    Es bleibt jedem selbst überlassen, wie er coded. jeder hat da seinen eigenen Style, und das ist auch gut so. Deshalb solche Comments einfach für sich behalten
     

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Probier mal Folgendes und rufe das Skript direkt auf:
    PHP-Code:
    <?php

        header
    ('Content-Type: text/plain');

        
    $bild imagecreatefrompng("d.png");
        
    $Datum "14.04.2007 10:05:00";
        
    // Schrift
        
    $Zieldatum mktime(substr($Datum112), substr($Datum142), substr($Datum172), substr($Datum32), substr($Datum02), substr($Datum64), -1);
        
    $Differenz $Zieldatum-time();
        
    $Tage floor($Differenz/86400);
        
    $Rest $Differenz-($Tage*86400);
        
    $Stunden floor($Rest/3600);
        
    $Rest $Rest-($Stunden*3600);
        
    $Minuten floor($Rest/60);
        
    $Rest $Rest-($Minuten*60);
        
    $Zeit "T:$Tage - H:$Stunden - M:$Minuten - S:$Rest";
        
    $blau imagecolorresolve($bild47214250);
        
    $hinter imagecolorresolve($bild255255255);
        
    imagecolortransparent($bild$hinter);
        
    imagestring($bild751"$Zeit"$blau);

        if( !
    header_sent() ) {
            
    header("Content-type:image/png");
            
    imagepng($bild);
        }
        
    imagedestroy($bild);

    ?>
     
    Markus Wulftange

  5. #5
    Sturmrider Sturmrider ist offline Mitglied Gold
    Registriert seit
    Mar 2006
    Beiträge
    217
    @TchiboMann
    oh, wusste ich nicht, dass die phpinfo()-Informationen für andere ein Sicherheitsrisiko darstellen. Warum? (habe mich erlichgesagt noch nicht so ausführlich mit ihr beschäftigt)
    Übrigens habe ich das gleiche mit GD-Lib bereits gemeint

    Was die Sache mit meiner kleinen Anregung betrifft, die ist nicht böse, sondern gut gemeint ->wir wollen uns ja alle weiterentwickeln oder nicht ?
    Über 1. kann man natürlich streiten (was ich nicht vor habe !)
    kurze Begründung warum ich das dachte: man schreibt KlassenNamen ja normalerweise am Anfang groß, deswegen sollte man für die bessere Unterscheidung/Übersicht [finde ich] variablenNamen klein beginnen
     

  6. #6
    MS[shady] MS[shady] ist offline Mitglied Silber
    Registriert seit
    Dec 2001
    Ort
    Magdeburg [Sachsen-Anhalt]
    Beiträge
    62
    @Gumbo nun erhalte ich folgende Fehlermeldung "Fatal error: Call to undefined function header_sent() in /public_html/countdown/d1.php on line 21"

    GD ist installiert und auch enabled

    @Sturmride hast schon recht, bissel was einheitlich sollte man schon haben
     
    MfG MS[shady]

  7. #7
    TchiboMann TchiboMann ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Ort
    Lübeck
    Beiträge
    174
    naja, die Informationen, die PHP ausspuckt, sind ja reichlich. Sprich, er gibt auch Module des Apache Webservers aus, und die Apache-Version, und ob PHP als CGI installiert ist usw. Das alles kann nem Hacker als angriffsziel dienen - denn all diese Programme können dokumentierte und nicht-dokumentierte Sicherheitslücken aufweisen, teilweise eventuell gravierende.

    Ich sag immer: Gib so wenig wie nur irgend möglich an Informationen über deinen Server raus - dann erst bist du auf einer sichereren Seite (nicht der sichersten).

    Naja, okay, mag sein dass man wegen der Übersicht variablen kleinSchreiben sollte. Aber - es liegt eben im Ermessen des Programmierers, was ihm besser passt. Von dahher sag ich da nich ein Ton dazu Steht mir nicht zu, darüber zu urteilen

    Was ich allerdings hasse, sind Coder, die ihren Code nicht einrücken, da werd ich sogar sauer aber alles andre soll mir eben egal sein =)

    Achjo, das mit der GD-Lib Da hatteste hinterhergeschossen, dass du das doch eher ausschliesst darum hab ich das nochmal erwähnt, nicht um dich zu ärgern
     

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Tippfehler: die gemeinte Funktion heißt „headers_sent()“. Das hättest du aber auch selbst herausfinden können.
     
    Markus Wulftange

  9. #9
    MS[shady] MS[shady] ist offline Mitglied Silber
    Registriert seit
    Dec 2001
    Ort
    Magdeburg [Sachsen-Anhalt]
    Beiträge
    62
    @Gumbo sorry, bin schon müde

    kann das Zeichenwirrwar leider nicht kopieren darum hab ich ne jpg Datei angehangen
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken PHP script auf einem server läufts auf dem anderen nicht-ausgabe.jpg  
     
    MfG MS[shady]

  10. #10
    Sturmrider Sturmrider ist offline Mitglied Gold
    Registriert seit
    Mar 2006
    Beiträge
    217
    *lacht* soetwas finde ich klasse
    Wenn man sich mit Leuten gut und gesittet unterhalten kann! @TchiboMann du bist mir sympathisch auch schon, da du eine Antipathie gegen nicht eingerückte Codes hegst *lol*

    Noch ne kurze Anmerkung zur phpinfo(). Ich habe mich da eben mal informiert:
    Streng genommen stellt sie kein Sicherheitsrisiko dar, allerdings praktisch schon. So können, wie du bereits geschrieben hast, gelegentlich mal Lücken drin gefunden werden, die es erleichtern verwundbare Systeme aufzufinden. Allerdings NICHT das Angreifen erleichtern (grundsätzlich könnte ein Bot auch einfach jeden Host angreifen)

    Problem bei der veröffentlichen der phpinfo() wäre z.B. man kann man mit geeigneten Anfragen bei google alle Hosts finden, die noch eine alte libgd verwenden ->wenn google eine phpinfo-Datei indexiert hat

    Sry, das gehört nicht ganz zum Thema, doch ich wollte das noch richtig stellen
     

  11. #11
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Das bezeichnete Zeichenwirrwarr ist der binäre Quellcode der Grafik. Daher scheint es zu funktionieren. Nur die Klassifizierung als PNG scheint nicht zu klappen. Ich hoffe, dass „Content-Type“ in den beiden Fällen nicht identisch geschrieben ist, ist nicht die Ursache. Aber probier’s mal aus.
     
    Markus Wulftange

  12. #12
    MS[shady] MS[shady] ist offline Mitglied Silber
    Registriert seit
    Dec 2001
    Ort
    Magdeburg [Sachsen-Anhalt]
    Beiträge
    62
    Nein es ist nicht gleich geschrieben.
     
    MfG MS[shady]

  13. #13
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Zitat Zitat von MS[shady] Beitrag anzeigen
    Nein es ist nicht gleich geschrieben.
    Das habe ich ja bereits geschrieben. Meine Frage war nun, ob das auch die Ursache ist.
     
    Markus Wulftange

  14. #14
    MS[shady] MS[shady] ist offline Mitglied Silber
    Registriert seit
    Dec 2001
    Ort
    Magdeburg [Sachsen-Anhalt]
    Beiträge
    62
    Sorry

    Nein das ich nicht die Ursache.

    Bin erstmal pennen *g*
     
    MfG MS[shady]

  15. #15
    TchiboMann TchiboMann ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Ort
    Lübeck
    Beiträge
    174
    @ sturmrider
    8)
    Joh, hab da ein komplettes, nicht einmal kostenloses CMS... extrem mies programmiert, und nicht ein bischen eingerückt der Code. echt brutal zu lesen und zu verstehen, da werd ich jedes mal sauer wenn ich im Code etwas suchen muss

    Okay, wenn man es streng nimmt ist phpinfo(); sicherlich keine übliche Sicherheitslücke, ist natürlich klar aber besser ist, man betrachtet ist (vielleicht für sich) als Lücke, seh ich jedenfalls so


    Okay, zurück zum eigentlichen Thema...

    PHP-Code:
    <?php
    header
    ("Content-type:image/png");
    $bild imagecreatefrompng("d.png");
          
    $Datum "14.04.2007 10:05:00";                                  // Schrift
                
    $Zieldatum mktime(substr($Datum112), substr($Datum142), substr($Datum172), substr($Datum32), substr($Datum02), substr($Datum64), -1);
              
    $Differenz $Zieldatum-time();
              
    $Tage floor($Differenz/86400);
              
    $Rest $Differenz-($Tage*86400);
              
    $Stunden floor($Rest/3600);
              
    $Rest $Rest-($Stunden*3600);
              
    $Minuten floor($Rest/60);
              
    $Rest $Rest-($Minuten*60);
              
    $Zeit "T:$Tage - H:$Stunden - M:$Minuten - S:$Rest";
    $blau imagecolorresolve($bild47214250);
    $hinter imagecolorresolve($bild255255255);
    imagecolortransparent($bild$hinter);
    imagestring($bild751"$Zeit"$blau);
    imagepng($bild);
    imagedestroy($bild);
    ?>
    könnte eventuell deshalb nicht funktionieren, weil der header am anfang der datei ist, ich weiss nicht wieso, keine ahnung. aber bei mir hatte das auch nicht funktioniert. ich hab es so gemacht:

    PHP-Code:
    <?php
    $bild 
    imagecreatefrompng("d.png");
          
    $Datum "14.04.2007 10:05:00";                                  // Schrift
                
    $Zieldatum mktime(substr($Datum112), substr($Datum142), substr($Datum172), substr($Datum32), substr($Datum02), substr($Datum64), -1);
              
    $Differenz $Zieldatum-time();
              
    $Tage floor($Differenz/86400);
              
    $Rest $Differenz-($Tage*86400);
              
    $Stunden floor($Rest/3600);
              
    $Rest $Rest-($Stunden*3600);
              
    $Minuten floor($Rest/60);
              
    $Rest $Rest-($Minuten*60);
              
    $Zeit "T:$Tage - H:$Stunden - M:$Minuten - S:$Rest";
    $blau imagecolorresolve($bild47214250);
    $hinter imagecolorresolve($bild255255255);
    imagecolortransparent($bild$hinter);
    imagestring($bild751"$Zeit"$blau);

    // Hier header ausgeben und Bild erstellen...
    header("Content-type:image/png");

    //bild erstellen
    imagepng($bild''100);
    imagedestroy($bild);
    ?>
    Anmerkung: imagepng() hat bei mir noch zwei zusätzliche Parameter, ich habe aber keine Ahnung, wozu die sind. bei letzterem denke ich mal, dass es wohl die Qualität beschreiben soll. jedenfalls funktioniert das so bei mir einwandfrei... eventuell kannst du ja auch imagejpg() ausprobieren. Hab gelesen, dass bei GDlib < v.1.6 imagepng() nicht funktioniert.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 21.01.07, 19:59
  2. Antworten: 16
    Letzter Beitrag: 10.11.06, 10:49
  3. Antworten: 10
    Letzter Beitrag: 13.04.06, 21:16
  4. Antworten: 4
    Letzter Beitrag: 02.10.05, 14:50
  5. Antworten: 8
    Letzter Beitrag: 03.09.05, 20:08