Seite 3 von 5

Verfasst: 02.01.2005 15:29
von Cojote

Code: Alles auswählen

$file_info = getimagesize($file); 
$file_size = filesize($file); 
Versuche alles was du über die Datei, auf die $file verweist, in deinem Skript verwenden möchtest ganz zu anfang deines Skripts in Variablen zu speichern (also obige Zeilen irgendwie ganz an den Anfang des Skripts bringen).

Verfasst: 02.01.2005 15:37
von Suche Hilfe
also der Fehler ist weg. Aber es erscheint immer diesser Fehler.

Code: Alles auswählen

if($file == ""){
      $file       = "<b>Keine Datei ausgewählt.</b>";
      $error_file = true;
      $error      = true;
    }
Steht immer keine Datei ausgewählt

Verfasst: 02.01.2005 15:41
von Cojote
$file ist zu dem Zeitpunkt nachdem du die phpbb-Funktionen ausgeführt hast leer. Deshalb trifft die Bedingung $file=="" zu und damit wird $file auf Keine Datei ausgewählt gesetzt.

Verfasst: 02.01.2005 15:46
von Suche Hilfe
Wie kann ich machen das es nicht leer ist?

Verfasst: 02.01.2005 15:50
von Cojote
versuchs doch mal wie bereits geschrieben:

an den Anfang deines Skripts z.b. $temp = $file schreiben...dann in der Schleife auf $temp == "" prüfen.

EDIT: Musst halt nachsehen ob dann nicht noch weitere Änderungen an deinem Skript notwendig werden, da du ja dann mit $temp arbeitest.

Verfasst: 02.01.2005 15:57
von Suche Hilfe
Jetzt erkennt er die Datei aber als 0kb obwohl die 20kb groß ist und er schreibt bei einer jpg datei Bildformat muss .jpg sein.. Was kann es jetzt sein?

Verfasst: 02.01.2005 16:06
von Cojote
Ich würde mal vorschlagen du postest mal den PHP-Code...wie sieht denn die HTML-Ausgabe des Upload-Formulars aus?

Verfasst: 02.01.2005 16:10
von Suche Hilfe
PHP Code :

Code: Alles auswählen

<?
$temp = "$file";
define('IN_PHPBB', true);
$phpbb_root_path = '../';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
  
  @include("config.php");
  @mysql_connect($db_server,$db_user,$db_password) or die("Datenbankverbindung fehlgeschlagen");
  @mysql_select_db($db_name) or die("Datenbankauswahl fehlgeschlagen");


//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
if ( $userdata['session_logged_in'] ) 
{ 
    // Code, wenn ein Benutzer angemeldet ist 

  echo $header;
  echo "
          <form action=\"create_new.php\" enctype=\"multipart/form-data\" method=\"post\">
            <table border=\"0\" cellpadding=\"0\" cellspacing=\"15\" width=\"".$img_width."\">
              <tr>
                <td colspan=\"2\">";

  if($_POST["submit"]){
    $name       = $_POST["name"];
    $email      = $_POST["email"];
    $comment    = $_POST["comment"];
	$icq        = $_POST["icq"];
	$user        = $_POST["user_id"];
    $error      = false;
    $error_file = false;



    if(!ereg('^[-^!#$%&\'*+\/=?`{|}~._a-z0-9]+@([-a-z0-9]+(\.[-a-z0-9]+)*\.[-a-z0-9]{2,6}|\[[0-9]{1,3}(\.[0-9]{1,3}){3}\])$',$email)){
      $email = "<b>Muss gültig sein.</b>";
      $error = true;
    }

    if($temp == ""){
      $temp       = "<b>Keine Datei ausgewählt.</b>";
      $error_file = true;
      $error      = true;
    }

    if(strlen($comment) < 3){
      $comment = "<b>Mindestens drei Zeichen.</b>";
      $error   = true;
    }

    if(!$error_file){
      $file_info = getimagesize($file);
      $file_size = filesize($file);

      if($file_info[0] > $img_width){
        $message_width = "<b>".$file_info[0]." - Bild um ".($file_info[0] - $img_width)." Pixel zu breit.</b>";
        $error         = true;
      }
      else{
        $message_width = $file_info[0]." Pixel - OK";
      }

      if($file_info[1] > $img_height){
        $message_height = "<b>".$file_info[1]." - Bild um ".($file_info[1] - $img_height)." Pixel zu hoch.</b>";
        $error          = true;
      }
      else{
        $message_height = $file_info[1]." Pixel - OK";
      }

      if($file_info[2] != $img_format){
        $message_type = "<b>Bildformat muss ".$img_format_info." sein.</b>";
        $error        = true;
      }
      else{
        $message_type = $img_format_info." - OK";
      }

      if($file_size > $img_size){
        $message_size = "<b>".number_format($file_size/1024,0,",","")." - Datei um ".number_format(($file_size - $img_size) / 1024,0,",","")." KB zu groß.</b>";
        $error        = true;
      }
      else{
        $message_size = number_format($file_size/1024,0,",","")." KB - OK";
      }
    }

    echo "&nbsp;</td>
              </tr>
			  <tr>
                <td>ID:</td>
                <td>$user</td>
              </tr>
              <tr>
                <td>Name:</td>
                <td>$name</td>
              </tr>
              <tr>
                <td>E-Mail-Adresse:</td>
                <td>$email</td>
              </tr>
			  <tr>
                <td>ICQ:</td>
                <td>$icq</td>
              </tr>
              <tr>
                <td>Bilddatei:</td>";

    if(!$error_file){
      echo "
                <td>&nbsp;</td>
              </tr>
              <tr>
                <td>&nbsp;&nbsp;&nbsp;- Breite:</td>
                <td>".$message_width."</td>
              </tr>
              <tr>
                <td>&nbsp;&nbsp;&nbsp;- Höhe:</td>
                <td>".$message_height."</td>
              </tr>
              <tr>
                <td>&nbsp;&nbsp;&nbsp;- Typ:</td>
                <td>".$message_type."</td>
              </tr>
              <tr>
                <td>&nbsp;&nbsp;&nbsp;- Größe:</td>
                <td>".$message_size."</td>
              </tr>";
    }
    else{
      echo "
                <td>$file</td>
              </tr>";
    }

    echo "
              <tr>
                <td>Kommentar:</td>
                <td>$comment</td>
              </tr>";

    $error_goback = "
              <tr>
                <td align=\"center\" colspan=\"2\">
                  <br><br>
                  <b>Dein Bild konnte nicht hochgeladen werden. Klicke <a href=\"JavaScript:history.back()\">hier</a> um zum Formular zurückzukehren.</b>
                </td>
              </tr>";

    if($error){
      echo $error_goback;
    }
    else{
      $row = mysql_fetch_array(mysql_query("SELECT id FROM ".$db_table_pictures." ORDER BY id DESC LIMIT 0,1;"));
      $id  = $row["id"] + 1;

      if(!(copy($file,dirname($_SERVER['PATH_TRANSLATED']).$img.$id.$img_format_info))){
        echo $error_goback;
      }
      else{
        mysql_query("INSERT INTO ".$db_table_pictures." VALUES('$id','$name','$comment',0,0,'$icq','$email','$user');");
        mail($email,"Vielen Dank für dein Bild bei $title!","Dein Bild wurde erfolgreich bei $title hochgeladen!\n\nBild ansehen:     $url/index.php?show=$id\nTopliste ansehen: $url/toplist.php\nBilder bewerten:  $url\nBild hochladen:   $url/create_new.php","From: $webmaster <$webmaster>\n");
        echo "
              <tr>
                <td align=\"center\" colspan=\"2\">
                  <br><br>
                  <b>Dein Bild wurde erfolgreich hochgeladen! Klicke <a href=\"index.php?show=$id\">hier</a> um zur Bildbewertung zu gelangen.</b>
                </td>
              </tr>";
      }
    }

    echo "
            </table>
          </form>";
  }
  else{
    echo "
                  Hier kannst du dein eigenes Bild hochladen und bewerten lassen.
                  <br><br>
                </td>
              </tr>
			  <tr>
                <td>ID</td>
                <td><input name=\"user_id\" type=\"text\" value=\"".$userdata['user_id']."\" size=\"3\" maxlength=\"30\" readonly=\"true\">
              </td>
              </tr>
              <tr>
                <td>Dein Name:</td>
                <td><input name=\"name\" type=\"text\" value=\"".$userdata['username']."\" size=\"30\" maxlength=\"30\" readonly=\"true\">
              </td>
              </tr>
              <tr>
                <td>Deine E-Mail-Adresse:</td>
                <td><input name=\"email\" size=\"30\" type=\"text\" value=\"".$userdata['user_email']."\" readonly=\"true\"></td>
              </tr>
			  <tr>
                <td>Deine ICQ-Nummer</td>
                <td><input name=\"icq\" size=\"10\" maxlength=\"9\" value=\"".$userdata['user_icq']."\" type=\"text\" readonly=\"true\"></td>
              </tr>
              <tr>
                <td>Bilddatei wählen:</td>
                <td><input name=\"file\" size=\"30\" type=\"file\"></td>
              </tr>
              <tr>
                <td valign=\"top\">Kommentar:<br>(max. ".$comment_size." Zeichen)</td>
                <td><textarea cols=\"70\" name=\"comment\" onkeyup=\"this.value=this.value.slice(0,".$comment_size.")\" rows=\"6\"></textarea></td>
              </tr>
              <tr>
                <td>&nbsp;</td>
                <td><input name=\"submit\" type=\"submit\" value=\"Bild hochladen & bewerten lassen\"></td>
              </tr>
            </table>
          </form><hr>";
  }

  echo $footer;
  
} 
else 
{ 
    // Code, wenn kein Benutzer angemeldet ist 
	echo "Bitte Logen Sie sich <a href=\"../login.php\">hier</a> ein.";
}
@mysql_close();
?>
Und HTML Ausgabe:

Code: Alles auswählen

<html>
  <head>
  <meta http-equiv="imagetoolbar" content="no">
    <link href="style.css" rel="stylesheet" type="text/css">
    <title>ruszone.de</title>
  </head>
  <body >
    <table align="center" border="0" cellpadding="0" cellspacing="0" width="240">
	  <div align="center"></div><tr>
        <td align="center" colspan="2">
          <a href="index.php">Bewerten</a> |
          <a href="toplist.php">Top 10</a> |
          <a href="create_new.php">Eigenes Bild hochladen</a> |
		  <a href="../index.php">Zum Forum</a>
          <hr>
        </td>
      </tr>
      <tr>
        <td align="center" colspan="2">
          <form action="create_new.php" enctype="multipart/form-data" method="post">
            <table border="0" cellpadding="0" cellspacing="15" width="240">
              <tr>
                <td colspan="2">&nbsp;</td>
              </tr>
			  <tr>
                <td>ID:</td>
                <td>2</td>
              </tr>
              <tr>
                <td>Name:</td>
                <td>admin</td>
              </tr>
              <tr>
                <td>E-Mail-Adresse:</td>
                <td>admin@abc.de</td>
              </tr>
			  <tr>
                <td>ICQ:</td>
                <td></td>
              </tr>
              <tr>
                <td>Bilddatei:</td>
                <td>&nbsp;</td>
              </tr>
              <tr>
                <td>&nbsp;&nbsp;&nbsp;- Breite:</td>
                <td> Pixel - OK</td>
              </tr>
              <tr>
                <td>&nbsp;&nbsp;&nbsp;- Höhe:</td>
                <td> Pixel - OK</td>
              </tr>
              <tr>
                <td>&nbsp;&nbsp;&nbsp;- Typ:</td>
                <td><b>Bildformat muss .jpg sein.</b></td>
              </tr>
              <tr>
                <td>&nbsp;&nbsp;&nbsp;- Größe:</td>
                <td>0 KB - OK</td>
              </tr>
              <tr>
                <td>Kommentar:</td>
                <td>fdffss</td>
              </tr>
              <tr>
                <td align="center" colspan="2">
                  <br><br>
                  <b>Dein Bild konnte nicht hochgeladen werden. Klicke <a href="JavaScript:history.back()">hier</a> um zum Formular zurückzukehren.</b>
                </td>
              </tr>
            </table>
          </form>
        </td>
      </tr>
    </table>
    <br><br>
  </body>
</html>

Verfasst: 02.01.2005 16:23
von Suche Hilfe
was für bedeutung hat das ausrufezeichen in php?

Verfasst: 02.01.2005 18:13
von Blutgerinsel
Suche Hilfe hat geschrieben:was für bedeutung hat das ausrufezeichen in php?
Negation Operator......

Lässt sich am besten verdeutlichen indem man sich Gedanklich mit "nicht" übersetzt......

Beispiel

Code: Alles auswählen

if (!$blubb)
Wenn $blubb false ist tritt die Bedingung in Kraft.....Der kleine ist wunderbar geeignet um Return Values ins Gegenteil zu prüfen

preg_match(); gibt true zurück wenn ein regulärer Ausdruck passt. Wenn ich aber nur wissen will ob ein regulärer Ausdruck nicht passt müsste der Return Value false sein...

Code: Alles auswählen

if (!preg_match('!bla!',$wu))
  echo "bla konnte nicht gefunden werden !";
Einfacher kann man es wohl nicht mehr erklären......
Eine Bedingung springt immer nur bei einem true an