[PHP] Dateien werden überschrieben trotz "file_exists" überprüfung

digiTALE

Lt. Junior Grade
Dabei seit
Juli 2004
Beiträge
270
Hey,

habe ein Script das mir eine PHP Datei erstellt. Dieses soll aus einen Namen der aus einem Formular übergeben wird, erstellt werden.
Damit man keine gleiche Dateien erstellt ist die Funktion "file_exists" intergriert. Leider funktioniert das nicht und er überschreibt mir die Dateien!

PHP:
<? 
$datei="chriz."; 
$inhalt = "inhalt der in der php datei steht";

$error = false; 

if (empty($datei)) { 
	echo "...";   
	$error = true;   
} 

if ($error) {  
	print "Ein Fehler ist aufgetreten!"; 
}
else { 
	if (file_exists($datei)) { 
		print "Eine Datei mit dem selben Namen ($datei.php) ist bereits vorhanden"; 
	}
	else{ 
		$fp = fopen($datei.php, "w");
		fwrite($fp, $inhalt);
		fclose($fp); 

		print "Die Datei <b>$datei.php</b> wurde erstellt"; 
	} 
} 
?>

Weiß jemand einen Rat wie ich das stoppen kann und er das nicht überschreibt?

mfg digiTALE
 

RonZ

Lt. Junior Grade
Dabei seit
Aug. 2005
Beiträge
260
Hey,
wenn du die Datei "chriz." nennst wird er diese auch nie finden und geht automatisch in den else-Zweig. Du musst sie oben schon als "chriz.php" deklarieren.
Unten m8ste dann aus "$fp = fopen($datei.php, "w");" -> "$fp = fopen($datei, "w");"

Gruß RonZ
 

DerEineDa

Lieutenant
Dabei seit
Juni 2003
Beiträge
1.002
Ach, das ist schon legitim, wenn da
PHP:
file_exists($datei . "php")) {
und
PHP:
$fp = fopen($datei . "php", "w");
stehen würde :)
 
Zuletzt bearbeitet:

mh1001

Lt. Commander
Dabei seit
Nov. 2003
Beiträge
2.039
Allerdings fehlt selbiges dann noch in der Überprüfungs-Funktion. ;)
So sollte es klappen:

PHP:
<?  
$datei="chriz.";  
$inhalt = "inhalt der in der php datei steht"; 

$error = false;  

if (empty($datei))
{  
  echo "...";    
  $error = true;    
}  

if ($error)
{   
  print "Ein Fehler ist aufgetreten!";  
} 
else
{  
  if (file_exists($datei."php"))
  {  
    print "Eine Datei mit dem selben Namen ($datei.php) ist bereits vorhanden";  
  } 
  else
  {  
    $fp = fopen($datei."php", "w"); 
    fwrite($fp, $inhalt); 
    fclose($fp);  

    print "Die Datei <b>".$datei.".php</b> wurde erstellt";  
  }  
}  
?>

MfG mh1001

//Edit: Zu langsam, da hat wohl schon jemand seinen Beitrag schneller editiert. ;)
 
Zuletzt bearbeitet:

DerEineDa

Lieutenant
Dabei seit
Juni 2003
Beiträge
1.002
Macht nichts, wir haben trotzdem noch diesen Teil vergessen:
PHP:
if (empty($datei . "php"))
{  
  echo "...";    
  $error = true;    
}
Das ändert nichts daran, dass RonZ recht hat und die $datei direkt richtig definiert werden sollte. Einfach der Variable direkt "chriz.php" zuweisen und wir können uns den Furz schenken.
 

mh1001

Lt. Commander
Dabei seit
Nov. 2003
Beiträge
2.039
Nein, obiges ist wohl bewusst so gewählt, sonst ist der Parameter ja nie leer. ;)
Allerdings wäre es dann sinnvoll den Punkt auch noch mit heraus zu nehmen.

Ansonsten hast du natürlich Recht. Ich dachte nur dass der Dateiname im Endeffekt wahrscheinlich dynamisch generiert wird und das ganze deswegen so definiert wurde.
Sonst macht das natürlich so keinen Sinn. ;)

MfG mh1001
 
Zuletzt bearbeitet:
Top