Bildplatzhalter mit if(empty....

flandersX

Mitglied
Hallo,

ich habe hier ein kleines Script, über welches sich user eintragen können.
Mit Name Adresse etc. und einmem BILD welches hochgeladen wird.
Momentan ist es so, dass die User ein Bild angeben MÜSSEN. Ich möchte aber, das ein "standardbild/platzhalter" dort erscheint, wenn kein Bild angegeben wurde.
Code:
if (isset($_POST['submit'])) {
	$server_path = $_SERVER['DOCUMENT_ROOT']; // Pfad zum Stammverzeichnis
	$data_path = 'db/images/'; // Pfad zum Bilderordner
	$allowed_types = "(jpg|jpeg|gif|png)"; // erlaubte Dateitypen
	$db_filename = 'db.txt';
	
	if(is_uploaded_file($_FILES["pic"]["tmp_name"])) { // Check, ob Datei hochgeladen
		if(preg_match("/\." . $allowed_types . "$/i", $_FILES["pic"]["name"])) { // Check, ob erlaubter Dateityp
			$filename = uniqid('ban_')."_".$_FILES["pic"]["name"]; // Gebe der Datei einen einzigartigen Dateinamen
			if(copy($_FILES["pic"]["tmp_name"], $server_path.$data_path.$filename)) { // Wenn die Datei in den richtigen Pfad kopiert werden konnte				
				$somecontent = $_POST['vname'].";".$_POST['nname'].";".$_POST['mail'].";".$filename.";".$aname."\n";
				if (is_writable($db_filename)) {
					if (!$handle = fopen($db_filename, "a")) {
						 print "Kann die Datei $db_filename nicht öffnen";
						 exit;
					}
					if (!fwrite($handle, $somecontent)) {
						print "Kann in die Datei $db_filename nicht schreiben";
						exit;
					}
					fclose($handle);
				} else {
					print "Die Datei $db_filename ist nicht schreibbar";
				}
			}
		}
	}
}

könnt ihr mir helfen?
habe bereits mit if(empty rumprobiert. aber mehr als ein:
Code:
if(empty($_FILES["pic"]["tmp_name"])) echo "Du hast kein Bild angegeben";
Ist bei mir nicht rausgekommen :(
 
Hallo,
nimm mal folgende Variante:
PHP:
if ( !isset($_FILES['pic']['tmp_name']) )
{
  echo "Du hast kein Bild angegeben";
}

Dein Problem ist, dass du mit empty() nur prüfst, ob die Variable $_FILES['pic']['tmp_name'] leer ist oder nicht. Aber wenn ein User kein Bild hoch lädt, existiert die Variable nicht.
Deswegen musst du abfragen, ob die Variable gesetzt ist in dem Fall per isset das ! steht für "nicht gesetzt".

mfg
 
Hallo,

danke für Deine Antwort.

Das mit dem Echo war nur ein Beispiel. :)

User die kein Bild hochladen, also auch nicht angeben, denen soll ein standardbild zugeteilt werden.
Quasi muss ja dann eine Alternative in die db.txt geschrieben werden. Wenn der User nichts angegeben hat.

Und das versuche ich die ganze Zeit, und bekomme es nicht hin....:(
 
Ist doch mit der Prüfung aus meinem Quelltext oben auch kein Problem.

von dir (wenn Bild angegeben) :
PHP:
$filename = uniqid('ban_')."_".$_FILES["pic"]["name"]; // Gebe der Datei einen einzigartigen Dateinamen

ansonsten wenn das Bild fehlt:
PHP:
$filename = "nopic.gif"; // beispielsweise

den Rest speicherst du wie gewohnt in die DB oder TXT, beachte aber, dass du das ausserhalb von
PHP:
if ( is_uploaded_file($_FILES["pic"]["tmp_name"]) ) { ... }
machen musst.
 
Ich würde statt [phpf]isset[/phpf] eindeutig [phpf]empty[/phpf] vorziehen, da es nicht nur prüft ob die Variable gesetzt ist, sondern auch ob sie leer ist. Und in diesem Fall ist es angenehmer beides zu wissen.
 
Zurück