GetImageSize() funktioniert nicht...

Scorp1337

Erfahrenes Mitglied
Hallo,
mein GetImageSize() funktioniert nicht, obwohl ich es aus einem anderen Bereich meines Codes kopiert hab (und dann so bearbeitet hab wie ichs brauche).
PHP:
<?php
if($imgEdit == "yes")
			{
			$dateityp = GetImageSize($_FILES['bild']['tmp_name']);
			if($dateityp[2] != 0)
				{
				echo "Tag";
				if($_FILES['datei']['size'] <  10240000 and $dateityp[0] == 65 and $dateityp[1] == 100)
					{
					echo "Hallo";
					$newName = $editID["ID"]."a.jpg";
					move_uploaded_file($_FILES['bild']['tmp_name'], "./images/buch/".$newName);
					}
				}
			}

HTML:
<input type="radio" name="imgEdit" value="no" checked="checked"> Beibehalten<br>
<input type="radio" name="imgEdit" value="yes"> Neues hochladen:<br /><input type='file' name='bild' width="8">

...Wo ist mein Fehler?! Ich find ihn einfach nicht...
Tag und Hallo ist zum Test reingeschrieben. Gescheitert wird schon beim $dateityp[2] != 0.
 
Das kann ja gar net sein O_O

Array ( )


...das würde ja bedeuten, dass das Formular gar nicht funktioniert. Allerdings werden alle anderen Inhalte gespeichert.
 
Genau das war es, was gefehlt hat.

Jetzt möchte ich allerdings noch, dass erst das alte Bild gelöscht und dann das neue dort hin "kopiert" wird.

Mein Code sieht jetzt so aus, allerdings löscht er das alte Bild nur und kopiert das neue nicht dort hin.
Wenn ich das ganze ohne unlink() mache, und dort vorher kein Bild mit diesem Namen war, dann kopiert er das genau so, wie es soll.

Hier mal der Code:
PHP:
<?php
if($imgEdit == "yes")
	{
	$newName = $editID["ID"].".jpg";
	unlink("./images/buch/".$newName);
	$dateityp = GetImageSize($_FILES['bild']['tmp_name']);
	if($dateityp[2] != 0)
		{
		if($_FILES['datei']['size'] <  10240000 and $dateityp[0] == 65 and $dateityp[1] == 100)
			{
			move_uploaded_file($_FILES['bild']['tmp_name'], "./images/buch/".$newName);
			}
		}
	}

Wie kann das sein?
 
Edit: habs überlesen, das es ohne vorheriges unlink geht... muss mal eben selber suchen

PHP:
 if($_FILES['datei']['size'] <  10240000 and $dateityp[0] == 65 and $dateityp[1] == 100)
{
    move_uploaded_file($_FILES['bild']['tmp_name'], "./images/buch/".$newName);
}
Würde jetzt einfach mal behaupten, das liegt an dieser IF Abfrage.
Erstmal steht da noch $_FILES['datei'] und nicht wie sonst $_FILES['bild'], das bedeutet, das die Dateigrösse immer < 10240000 sein wird.
Dann ist die Frage, ob $dateityp[0] und[1] vom dem hochgeladenen Bild auch 65 bzw 100px ist.
Ich würde mal zum testen folgendes machen:
PHP:
 if($_FILES['datei']['size'] <  10240000 and $dateityp[0] == 65 and $dateityp[1] == 100)
{
     move_uploaded_file($_FILES['bild']['tmp_name'], "./images/buch/".$newName) or die("Move Upload File fehlgeschlagen"); // z.b. wenn der Pfad zum Ziel falsch ist, was hier sein könnte
}
else
{
     echo "<pre>";
     var_dump($dateityp);
     echo "</pre>";
}
Und dann mal schauen, was getimagesize() so ermittelt hat für das Bild und ob es 65x100px ist.

Gruss
 
Nachtrag zum letzten Post:

Nachdem ich gelesen habe, das es geht, wenn vorher kein unlink() aufgerufen wird, habe ich gedacht, es könnte am filestatcache von php liegen. Allerdings soll laut Manual (Clearstatcache()) unlink keinen Cache anlegen.
Zudem steht im Manual von move_uploaded_file() :
-->
Warnung Sollte die Zieldatei bereits existieren, wird sie überschrieben.

<--

Sorry, komm ich gerade nicht drauf.
Würde die raten mit ein paar echo's und var_dump()s die entsprechenden Codeteile zu debuggen.
 
Zurück