[PHP] is_file Problem

krizzelfix

Commander
Registriert
Sep. 2005
Beiträge
2.626
Moin allerseits,

Ich habe eine Funktion geschrieben, die überprüft ob ein Bild schon in der Datenbank gespeichert ist oder nicht. Als Parameter nimmt sie den Ordner und die Nummer des Bildes entgegen.

Wenn das Bild schon in der Db gespeichert ist, wird der Counter zu dem Bild um ein erhöht.

Nun zu meinem Problem:
Aus irgendeinem Grund ist die Variable in die der Pfad steht leer(" ") und die Daten werden in die Datenbank eingetragen.

Jetzt hatte ich versucht mit is_file() das Problem zu lösen nur leider werden jetzt gar keine Bilder mehr in die DB eingetragen.

Hier der Code:
PHP:
function check_pic($show, $pic) {
	if (is_file("images/kamera/".urldecode($show)."/".$pic.".jpg")) {
		$result = con_sql("SELECT * FROM `pic` WHERE `show`='".$show."' AND `pic`='".$pic."' LIMIT 1");
		if (mysql_num_rows($result) >= 1) {
			con_sql("UPDATE `pic` SET `clicks`=`clicks`+1 WHERE `show`='".$show."' AND `pic`='".$pic."'");
		}
		else {
			con_sql("INSERT INTO `pic` SET `clicks`=1, `show`='".$show."', `pic`='".$pic."'");
			include('class.phpmailer.php');
			include('class.smtp.php');
			$send = false;

			while ($send === false) {
				$mailer = new PHPMailer();
				$mailer->From = "info@island-in-the-sun.org";
				$mailer->FromName = "info@island-in-the-sun.org";
				$mailer->Subject = "Neues Bild in der DB";
				$mailer->IsHTML(true);
				$mailer->smtp = "smtp";
				$mailer->Host = "smtp.email.com";
				$mailer->AddAddress("xxxx@web.de");
				$mailbody = "";
				foreach ($_SERVER as $key => $val) {
						$mailbody.= "\$_SERVER['".$key."']=>".$val."<br/>\n";
				}
				$mailer->Body = "Es wurde ein neues Bild in der Datenbank gespeichert.<br/>\nOrdner:".$show."<br/>\nBild:".$pic."<br/>\n".$mailbody;

				if ($mailer->Send()) {
					$send = true;
				}
			}
		}
	}
	else {
		include('class.phpmailer.php');
		include('class.smtp.php');
		$send = false;

		while ($send === false) {
			$mailer = new PHPMailer();
			$mailer->From = "info@island-in-the-sun.org";
			$mailer->FromName = "info@island-in-the-sun.org";
			$mailer->Subject = "Versuch neues Bild in der DB zu speichern";
			$mailer->IsHTML(true);
			$mailer->smtp = "smtp";
			$mailer->Host = "smtp.email.com";
			$mailer->AddAddress("xxxx@web.de");
			$mailbody = "";
			foreach ($_SERVER as $key => $val) {
					$mailbody.= "\$_SERVER['".$key."']=>".$val."<br/>\n";
			}
			$mailer->Body = "Es wurde versucht ein neues Bild in der Datenbank zu gespeichern.<br/>\nOrdner:".$show."<br/>\nBild:".$pic."\n<br/>images/kamera/".$show."/".$pic.".jpg ist fehlgeschlagen.<br/>\n".$mailbody;

			if ($mailer->Send()) {
				$send = true;
			}
		}
	}
}
Die Mails habe ich mir zum Debuggen dugeschickt.
Und so sehen die meisten Mails aus die ich bekomme:
Es wurde versucht ein neues Bild in der Datenbank zu gespeichern.
Ordner:2005.12.31 Silvester
Bild:94
images/kamera/2005.12.31 Silvester/94.jpg ist fehlgeschlagen.
$_SERVER['DOCUMENT_ROOT']=>/var/www/ud08_125/html
$_SERVER['HTTP_ACCEPT']=>*/*
$_SERVER['HTTP_ACCEPT_ENCODING']=>gzip, x-gzip....

Ich hoffe ihr könnt mir helfen.

Mit freundlichen Grüßen

tewes

//Edit:
Könnte es daran liegen das der Ordner in der Adressenzeile so angezeigt werden 2006.12.31%20Silvester%20bei%20Jens
 
Zuletzt bearbeitet:
tewes schrieb:
Könnte es daran liegen das der Ordner in der Adressenzeile so angezeigt werden 2006.12.31%20Silvester%20bei%20Jens
dafür machst ja urldecode()

wäre interessant zu wissen, wo das Script liegt und wo die Bilder

tewes schrieb:
Aus irgendeinem Grund ist die Variable in die der Pfad steht leer(" ") und die Daten werden in die Datenbank eingetragen.
Welche Variable? $show?
 
Zuletzt bearbeitet:
Hallo Loopo,

auch wenn ich kein urldecode() mache steht der Ordner richtig in der Mail.

Das Script befindet sich im selben Ordner wie der Ordner Images.

$show ist der ordner. Ich weiss das der Name sehr ungünstig gewählt ist^^

Mit freundlichen Grüßen

tewes
 
Na wenn schon in $show ein falscher Wert steht, muss der Fehler ja bereits vor dem Funktionsaufruf liegen.
 
Ich weiss ja nicht wann der Fehler auftritt. Ich vermute das der druch irgendwelche Bots ausgelöst wird.

Wenn ich so auf der Seite bin, habe ich keine Fehler.
 
Dann gib mal an verschiedenen Stellen $show aus und schau, ab wann der Fehler Auftritt.
 
Hallo Loopo,

hab das Problem jetzt so gelöst das ich das Script einfach direkt in die Datei kompiert habe wo die Funktion aufgerufen wird.

Schein bis jetzt ganz gut zu funktionieren.

MFG

tewes
 
Zurück
Oben