• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Blog Problem

Marvin231

Neues Mitglied
Hi,
Ich hab ein Blog erstellt in dem man etwas schreiben und Bilder hochladen kann. Mein Problem ist jetzt:
1. Der Text geht in und über den footer Bereich, aber soll nur im content Bereich bleiben.
2. Wenn ich die Bilder im Formular blog_eingabe.php hochlade dann kommt immer diese Fehlermeldung:

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg, libjpeg: recoverable error: Corrupt JPEG data: 27 extraneous bytes before marker 0xd9 in /users/mytriptocanada/www/blog_eingabe.php on line 59
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'blog_20130828163802.JPG' is not a valid JPEG file in /users/mytriptocanada/www/blog_eingabe.php on line 59
Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in /users/mytriptocanada/www/blog_eingabe.php on line 62
Warning: imagedestroy() expects parameter 1 to be resource, boolean given in /users/mytriptocanada/www/blog_eingabe.php on line 65

Hier sind die beiden Scripte:

blog_eingabe.php (für den Betreiber):
PHP:
<?php
session_start();

if (isset($_POST["pw"]))
{
    if($_POST["pw"] == "***")
    {
        $_SESSION["pw"] = $_POST["pw"];
    }
}

if (!isset($_SESSION["pw"]))
    exit("<p>Kein Zugang<br />
    <a href='admin_password.html'>Zum Login</a></p>");
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
        <?php
            if (isset($_POST["gesendet"]))
            {
                $con = mysqli_connect("localhost", "***", "***");
                mysqli_select_db($con, "***");

                if($_POST["art"] == 0)
                    mysqli_query($con, "insert into blog (art, text)"
                        . " values (0, '" . $_POST["text"] . "')");

                else
                {
                    $fn = $_FILES["upfile"]["name"];
                    $fn_teile = explode(".", $fn);
                    $fn_endung = $fn_teile[count($fn_teile) - 1];
                    if(strtolower($fn_endung) == "jpg")
                    {
                        $fn = "blog_" . date("YmdHis") . "." . $fn_endung;

                        copy($_FILES["upfile"]["tmp_name"], $fn);
                        mysqli_query($con, "insert into blogdaten (art, text)"
                            . " values (1, '$fn')");

                    $info = getimagesize($fn);
                    $width_alt = $info[0];
                    $height_alt = $info[1];

                    if($width_alt > $height_alt)
                    {
                        $width_neu = 320;
                        $height_neu = ceil($height_alt * $width_neu / $width_alt);
                    }
                    else
                    {
                        $height_neu = 240;
                        $width_neu = ceil($width_alt * $height_neu / $height_alt);
                    }
                    $im_alt = imagecreatefromjpeg($fn);
                    $im_neu = imagecreatetruecolor($width_neu, $height_neu);

                    imagecopyresampled($im_neu, $im_alt, 0, 0, 0, 0, $width_neu, $height_neu, $width_alt, $height_alt);
                    imagejpeg($im_neu, $fn);

                    imagedestroy($im_alt);
                    imagedestroy($im_neu);
                    }
                    else
                        echo "<p><font color='#ff0000'>
                        Bild wurde nicht hochgeladen, muss vom Typ JPG sein!>/font></p>";
                        mysqli_close($con);
                    }
                }
        ?>
    </head>
    <body>
        <p align="center"><b>My trip to Canada, Eingabe</b></p>
        <form action="blog_eingabe.php" method="post">
            <input type="hidden" name="art" value="0" />
            <p>Text eingeben und absenden (max. 10000 Zeichen):</p>
            <p><textarea name="text" rows="5" cols="80"></textarea></p>
            <p><input type="submit" name="gesendet" value="Senden"/>
            <input type="reset" value="Leeren"/></p>
        </form>

        <p><b>oder</b></p>
        <form enctype="multipart/form-data"
              action="blog_eingabe.php" method="post">
        <input type="hidden" name="art" value="1" />
        <p>Bild auswählen und absenden:</p>
        <p><input name="upfile" type="file"/></p>
        <p><input type="submit" name="gesendet" value="Senden"/>
        <input type="reset" value="Leeren"/></p>
        </form>
    </body>
</html>
 
index.html (für den Betrachter):
PHP:
<?php

?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link rel="stylesheet" type="text/css" href="style.css">
        <style type="text/css">
            body,td {
                font-family: Verdana;
                font-size: 10pt;
            }
            .li {
                font-size: 8pt;
                margin-left: 50px;
                float: left;
            }
            #content table {
                border: 0;
            }
            #blog {
                height: auto;
                margin-top: 50px;
                margin-left: 50px;
                float: left; 
            }
        </style>
        <script language="JavaScript">
      // Ziel-Datum in MEZ
      var jahr=2222, monat=2, tag=22, stunde=22, minute=22, sekunde=22;
      var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);

      function countdown() {
        startDatum=new Date(); // Aktuelles Datum

        // Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
        if(startDatum<zielDatum)  {

          var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

          // Jahre
          while(startDatum<zielDatum) {
            jahre++;
            startDatum.setFullYear(startDatum.getFullYear()+1);
          }
          startDatum.setFullYear(startDatum.getFullYear()-1);
          jahre--;

          // Monate
          while(startDatum<zielDatum) {
            monate++;
            startDatum.setMonth(startDatum.getMonth()+1);
          }
          startDatum.setMonth(startDatum.getMonth()-1);
          monate--;

          // Tage
          while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
            tage++;
            startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
          }

          // Stunden
          stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
          startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);

          // Minuten
          minuten=Math.floor((zielDatum-startDatum)/(60*1000));
          startDatum.setTime(startDatum.getTime()+minuten*60*1000);

          // Sekunden
          sekunden=Math.floor((zielDatum-startDatum)/1000);

          // Anzeige formatieren
          (jahre!=1)?jahre=jahre+" Jahre,  ":jahre=jahre+" Jahr,  ";
          (monate!=1)?monate=monate+" Monate,  ":monate=monate+" Monat,  ";
          (tage!=1)?tage=tage+" Tage,  ":tage=tage+" Tag,  ";
          (stunden!=1)?stunden=stunden+" Stunden,  ":stunden=stunden+" Stunde,  ";
          (minuten!=1)?minuten=minuten+" Minuten  und  ":minuten=minuten+" Minute  und  ";
          if(sekunden<10) sekunden="0"+sekunden;
          (sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";

          document.countdownform.countdowninput.value=
              jahre+monate+tage+stunden+minuten+sekunden;

          setTimeout('countdown()',200);
        }
        // Anderenfalls alles auf Null setzen
        else document.countdownform.countdowninput.value=
            "0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
      }
    </script>
    </head>
    <body onload="countdown()">
        <div id="container">
        <header>
            <img src="images/flagge-kanada.gif" alt="Kanada-Flagge" width="200px" height="133px">
            <h1 style="color: #c60000">My Trip to Canada</h1>
            <h3>Back in Germany:</h3>
            <form name="countdownform">
                <p>
                <input size="75" name="countdowninput" readonly="">
                </p>
            </form>
            <nav>
                <ul>
                    <li><span><a href="index.php">Home</a></span></li>
                    <li><a href="profil.html">Profil</a></li>
                    <li><a href="gastfamilie.html">Meine Gastfamilie</a></li>
                    <li><a href="kontakt.php">Kontakt</a></li>
                    <li><a href="gästebuch.php">Gästebuch</a></li>
                </ul>
            </nav>
        </header>
            <hr>
            <div id="content">
                <div id="info">
                    <table rules="none">
                    <colgroup>
                        <col style="width: 50px">
                        <col style="width: 400px">
                        <col style="width: auto">
                    </colgroup>
                    <tr>
                        <td style="background-color: #c60000">
                        <h2>I<br>N<br>F<br>O</h2>
                        </td>
                        <td>
                        <p>Hallo ich bin Marvin Bernd, der Inhaber von Marvin Bernd Webdev.
                        Ich bin zurzeit Schüler und habe mir das Programmieren selbst beigebracht.
                        Hauptsächlich programmiere ich Websites, Apps und Software. Zu meinen
                        Programmierkenntnissen gehören HTML, CSS, PHP, MySQL und C#.</p>
                        </td>
                    </tr>
                </table>
                </div>
                <div class="clock" style="position:relative;width:100px;"><iframe src="http://de.thetimenow.com/clock/germany/r%C3%BCsselsheim?t=a&amp;embed=1&amp;text=15&amp;textdate=12&amp;format=24&amp;digitalclock=36&amp;analogclock=30&amp;letter_spacing=-2&amp;bordersize=0&amp;bordercolor=F7F7F7&amp;bgcolor=d7d7d7&amp;colorloc=000000&amp;colordigital=2C8EBF&amp;colordate=000000&amp;styleloc=bold&amp;styledigital=normal&amp;styledate=normal&amp;right=0" style="border:none;overflow:hidden;" height="140" scrolling="no" width="100"></iframe><a href="http://de.thetimenow.com/germany/r%C3%BCsselsheim" style="position:absolute; top:0; left:0; display:inline-block; width:100px; height:140px; z-index:50;" target="_blank" rel="nofollow" title="Clock provided by thetimenow.com"></a></div>
                <div class="clock" style="position:relative;width:100px;"><iframe src="http://de.thetimenow.com/clock/canada/vancouver?t=a&amp;embed=1&amp;text=15&amp;textdate=12&amp;format=24&amp;digitalclock=36&amp;analogclock=30&amp;letter_spacing=-2&amp;bordersize=0&amp;bordercolor=BCE2F7&amp;bgcolor=d7d7d7&amp;colorloc=000000&amp;colordigital=2C8EBF&amp;colordate=000000&amp;styleloc=bold&amp;styledigital=normal&amp;styledate=normal&amp;right=0" style="border:none;overflow:hidden;" height="140" scrolling="no" width="100"></iframe><a href="http://de.thetimenow.com/canada/vancouver" style="position:absolute; top:0; left:0; display:inline-block; width:100px; height:140px; z-index:50;" target="_blank" rel="nofollow" title="Clock provided by thetimenow.com"></a></div>
                <table id="blog" border="0" style="width: 80%">
                <?php
                    $con = mysqli_connect("localhost", "***", "***");
                    mysqli_select_db($con, "***");
                    $res = mysqli_query($con, "select * from blog" . " order by zeit desc");

                    while($dsatz = mysqli_fetch_assoc($res))
                    {
                        $z = $dsatz["zeit"];
                        $zeit = mktime(substr($z,11,2), substr($z,14,2), substr($z,17,2), substr($z,5,2), substr($z,8,2), substr($z,0,4));
                        $pst = strtotime("+7 hour", $zeit);

                        echo "<tr>";
                        echo "<td valign='top' class='li'>"
                            . date("d.m.y H:i", $zeit) . " MEZ<br/>"
                            . date("d.m.y H:i", $pst) . " PST</td>";
                        if($dsatz["art"] == 1)
                            echo "<td valign='top' width='20 %'>"
                                . "<img src='" . $dsatz["text"] . "' /></td>";
                        else
                            echo "<td valign='top' width='80 %' style='word-break:break-all;word-wrap:break-word'>"
                                . $dsatz["text"] . "</td>";
                        echo "</tr>";
                    }
                    mysqli_close($con);
                   
                    echo "</table>";
                ?>
                    <p class="li">MEZ = Mitteleuropäische Zeit,
                    PST = Pacific Standard Time</p>
            </div>
        <footer>
            <table style="width: 100%">
                <tr>
                    <td><a href=""><img src="images/mb-webdev.png" alt="mb-webdev" /></a></td>
                    <td><p>&copy 2013 Marvin Bernd Webdev</p></td>
                    <td><a href="admin_password.html">Admin</a></td>
                </tr>
            </table> 
        </footer>
        </div>
    </body>
</html>

Hier hist der Link zur Website:
http://mytriptocanada.bplaced.net/

Ich hoffe mir kann jemand helfen.

Viele Grüße
Marvin Bernd
 
Klar ist die GD-Lib vorhanden, denn sonst hättest du eine "Undefinded Function"
Ich tippe auf eine kaputte Grafik oder halt kein Jpg
 
Wenn ich eine .jpg Datei hochlade, dann kommt die Fehlermeldung. Wenn ich eine .jpeg Datei hochlade, dann kommt meine eigene Fehlermeldung: Bild wurde nicht hochgeladen, muss vom Typ JPG sein!
 
Du sollst diese Zeile mal einbauen und gucken, ob eventuell ein Fehler vorliegt.
 
Die Klammern gehören doch nicht zu dieser echo-Ausgabe? Debugge erstmal dein Script richtig. Z.B. durch

PHP:
var_dump($_FILES);

welches nach dem Hochladen ausgeführt und angezeigt werden sollte.

Dann solltest Du auch nochmal die tatsächlich auf dem Server gespeicherten Dateien kontrollieren.

Wenn die auch schon schwarz sind, prüfe mit phpinfo() noch die GDlib-Einstellungen und schau dir die Manuals zu den image-Funktionen (oben in deinem Quellcode vom Forum verlinkt) an.
 
Zurück
Oben