[PHP] dateien öffnen und schreiben

Fou-Lu

Lt. Junior Grade
Registriert
Aug. 2006
Beiträge
290
Hallo Leute,
ich sitze grad an einer page für mein Projekt und wollte die etwas automatisierter machen ^^

Also z.B. dass jeder von meinen Mitgliedern zeug verfassen und bearbeiten kann. Ich wollte auf mysql verzichten und es lieber in .txt oder .htm dateien packen. Zum öffnen und schreiben wollte ich "fopen()" funktion verwenden, doch jetzt taucht bei mir folgender fehler auf:


SecureSSI: Das Script (/usr/export/www/vhosts/funnetwork/hosting/bestia/test/WIKI/admin/panel.php) hat versucht, ausserhalb von seinem Userverzeichniss, auf die Datei /inc/info.txt zuzugreifen.
Aus Sicherheitsgruenden ist dies nicht erlaubt!

Warning: fopen() [function.fopen]: Sicherheitsverletzung: in /usr/export/www/vhosts/funnetwork/hosting/bestia/test/WIKI/admin/start.php on line 20


Wie kann ich des jetzt aber trotzdem so machen/einstellen, dass meine start.php datei in ein file aus einem übergeordneten ordner schreiben kann?



Danke schon mal im vorraus
 
Wenn du PHP5 zu verfügung hast solltest du file_get_contents und file_put_contents benutzen.
Dann kannst du einfach:
PHP:
$file = file_get_contents('../inc/news.php');
// $file Bearbeiten...
file_put_contents('../inc/news.php', $file);

Grüße

tewes
 
Ok, das mit dem öffnen und schreiben hätte ich fast geklärt. Da würde mich nur noch die fragen stören wie man dateien "überschreiben" kann. Also z.b. ich lade eine seite beispiel "impressum.php" es zeigt mir ein formular und in diesem formular steht bereits der hinhalt der datei "impressum.txt". Jetzt ändere ich das beispielsweise um und klicke auf "absenden" aber dann wird der text den ich grad geändert hab nur angehängt. wie schaff ich es aber dass die datei überschrieben wird und eine aktuelle erstellt wird sprich mit dem aktuellen text???

und zweite frage die ich hätte wäre:

PHP:
<?php
	$pfad = "upload/jpg"; //dieses "jpg" ist ebenfalls noch ein ordner namens "jpg" die datei soll nach "upload/jpg/DATEINAME.jpg" kopiert werden!!
	$file_name = $_POST['name'];
	$file = $_POST['datei'];
	if (copy($file, $pfad."/".$file_name)) {
            echo "Upload erfolgreich";
         }
         else {
            echo "Upload fehlgeschlagen";
         }
?>

wieso funktioniert dieser schnipsel den nicht? ich glaub ich hab alles richtig gemacht mit der copy funktion aber es wirft mir trotzdem immer die selbe meldung rauß:

Warning: copy(021.jpg) [function.copy]: failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/bestia/test/uni/upaktion.php on line 5
Upload fehlgeschlagen


Kann mir jemand helfen?

Danke schon mal im vorraus.
 
nun den. ich habe jetzt nur ein problem!! und ich habe echt bereits alles mögliche versucht, aber es funzt nicht!!!

kann mir den keiner helfen? und zwar mit einem richtigen ratschlag und nicht nur einem hinweis!
ich steh so "." kurz davor durchzudrehen deswegen ^^

ich habe das beispiel oben probiert, aber es hat nicht geklapt. dieses hier probiert ebenfalls nicht geklappt. und dann noch einige mehr in abgeänderter form.
PHP:
<?php
	if (isset($_FILES["datei"])) {
		$dir = opendir("upload/jpg/");
		move_uploaded_file($_FILES["datei"]["tmp_name"], $dir.$_FILES["datei"]["name"]);
	}
?>

hab bereits alles was mir so dazu eingefallen ist alles durchtestet aber nichts hat geklapt.

BIIITTEEE um HILLFEEE :(

PS: @r15ch13: danke für die tipps. das mit den dateien hab ich selber herausgefunden wie es geht, aber mit dem upload bin ich immernoch nicht weiter.

@all: ich wäre sehr dankbar für richtige tipps und besser noch ausgebesserte codeschnipsel oder so.
 
Du musst das Verzeichnis nicht öffnen um darin zu speichern.
Vorallem da move_uploaded_files 2 Dateien erwartet und kein Pointer von opendir().

PHP:
<?php
	if (isset($_FILES["datei"])) {
		$dir = "upload/jpg/";
		move_uploaded_file($_FILES["datei"]["tmp_name"], $dir.$_FILES["datei"]["name"]);
	}
?>

geht das ?
 
hm, danke für die hilfe, aber es geht immernoch nicht T_T

es wird keine fehlermeldung angezeigt sondern läuft alles nach plan ABER es kopiert bzw. ladet die dämliche datei nicht ins verzeichniss und auch in kein anderes! so hatte ich es auch schon mal gehabt, aber da liefs auch nicht.

ich hab nich mal nen plan ob das script überhaupt ausgeführt wird, weil normal dauert es ne weile bis ne datei raufgeladen wird, aber hier werde ich gleich zu der datei geleitet wo das script steht. wenn ich dann im ordner nachschau ist nichts drin. ich hab sogar den ordnern bereits schreib, lese und zugriffsrechte gegeben, aber es geht immernoch nicht.
 
Mojen, hab mal grad google angeworfen und den Schnipsel gefunden.
Hab ihn bei mir getestet, sollte also funktionieren.

PHP:
<?php
$path = dirname($_SERVER['SCRIPT_FILENAME']) . '/asd/';
//echo $path;
if (isset($_POST['upload']))
{
  if ($_FILES['userfile']['size'] > 0)
  {
      echo '<b>Informationen zur aktuellen Datei:</b><br />';
      echo $_FILES['userfile']['name'] . '<br />';
      echo $_FILES['userfile']['size'] . ' Byte<br />';
      echo $_FILES['userfile']['type'] . '<br />';
      move_uploaded_file($_FILES['userfile']['tmp_name'],   
               "$path{$_FILES['userfile']['name']}");
    } else {
      echo "Keine Datei hochgeladen";
    }
}
$dp = @opendir($path);
if ($dp === FALSE)
{
    mkdir('upload');
    $dp = opendir($path);
}
echo '<hr noshade size="1" />';
while ($file = readdir($dp))
{
  if (!preg_match('/^\.{1,2}/', $file))
  {
   echo $file;
   echo ' (' . filesize("$path/$file") . ' Byte)';
   echo '<br>';
  }
}
?>
<form method="post" enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>">
Ihre Dateiauswahl: <input type="file" name="userfile" />
<input type="submit" name="upload" value="Hochladen" />
</form>

MfG
 
@r15ch13: danke ich werds gleich mal teste. ich hoffe es funktioniert jetzt endlich ^^

ich wollte das script halt eigentlich selber schreiben wegen dem copyright und so shit, aber ich bekomms irgendwie nicht zum laufen (wie oben ja schon beschrieben ^^)

naja jetzt erstmal das hier testen ;)
 
Zurück
Oben