Zeile für Zeile in Datei und Dateidownload soll starten

FBIagent

Erfahrenes Mitglied
Moin,

ich habe folgenden Code geschrieben:
PHP:
<?php
  
  $ip = gethostbyname("moinsen.no-ip.info");
  $user_ip = $_SERVER['REMOTE_ADDR'];
  
  mkdir($user_ip);

  $line[1] = "127.0.0.1 L2authd.lineage2.com";
  $line[2] = $ip." L2authd.lineage2.com";
  
  $datei = fopen("./".$user_ip."/hosts","w+");
  fwrite($datei,$line[1]);
  fclose($datei);

  header("Location: ./".$user_ip."/hosts");
?>

Ich möchte nicht nur das $line[1] in die erste Zeile der Datei hosts geschrieben wird
sondern auch, das $line[2] in Zeile 2 der Datei hosts datei geschrieben wird.
Wie realisiere das?

Wenn es dann weiter geht mit header(), wird die Datei hosts geöfnet und nicht
runtergeladen. Wie mach ich das, das die Datei runtergeladen wird?

THX
MFG FBIagent
 
Mhm wie wäre es mir

PHP:
 $line = $line[1]."<br>".$line[2];

Eine Idee hätte ich noch weiss aber nicht ob das so klappt. Entweder die Datei nach dem ersten Schreiben mit modus a öffnen. Setzt den Zeiger auf das Ende der Datei und löscht nicht den Inhalt.
Wobei ich nicht weiss ob er es dann in die 2. Zeile schreibt ansonsten klappt es eventuell das man den Zeiger so setzt das man bei Zeichen 256 wäre was reintheoretisch ja die 2. Zeile ist zu Beginn.

.
 
Hallo!

Ein <br> schreibt es aber trotzdem nur in eine Zeile..... damit wird lediglich bewirkt, dass der Browser es in 2 Zeilen darstellt.

Wenn es aber in der Datei in 2 Zeilen soll, würde ich es so machen:
PHP:
$line = $line[1]."\r\n".$line[2];
Wenn es jedoch in der Datei und dem Browser in 2 Zeilen soll, würde ich es so machen:
PHP:
$line = $line[1]."<br>\r\n".$line[2];
Gruss Dr Dau
 
Also beim automatischem Download wird es schwierig, denn schlieslich kann zumindest jedes Progarmm jede Datei öffnen.
An den Brower wird ja eine ASCII Datei gesendet..... und die kann er problemlos anzeigen.
Du könntest aber z.b. anstatt dem Header, einfach ein Link zu der Datei ausgeben.
Auf diesen Link machst Du dann ein Rechtsklick und gehst auf "Ziel speichern unter".
Evtl. könntest Du es auch mal hiermit probieren:
PHP:
header("Content-Disposition: attachment; filename=./".$user_ip."/hosts");
Könnte evtl. auch Probleme geben weil die Datei keine Endung hat und so als Verzeichnis missinterpretiert werden könnte.
Vieleicht mal als hosts.txt, hosts.dat oder was auch immer, probieren?!
 
Jetzt hab ich die faxen dicke^^

Dein header(); gibt mir die html Datei in der es steht zum Download, mit dem
angegebendem Namen hosts.

Ich hab da mal volgendes im sinn:
PHP:
  $datei = fopen("file://localhost/C:/hosts","w+");
  fwrite($datei,$hosts_data);
  fclose($datei);
Mit Dateiendung auch schon versucht!
Dabei bekomme ich volgende Fehler:
Code:
Warning: fopen(file://localhost/C:/hosts): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/herr0000/Server_IP/aktualisieren.php on line 35

Warning: fwrite(): supplied argument is not a valid stream resource in /usr/export/www/vhosts/funnetwork/hosting/herr0000/Server_IP/aktualisieren.php on line 36

Warning: fclose(): supplied argument is not a valid stream resource in /usr/export/www/vhosts/funnetwork/hosting/herr0000/Server_IP/aktualisieren.php on line 37

Kann man das so überhaupt machen?

THX
MFG FBIagent
 
Zuletzt bearbeitet:
Nope :

Localhost ist ja automatisch dein Rootverzeichniss und ich tippe das die Datei ebenfalls dort liegt.
Wenn dein Rootverzeichniss nun nicht das ist wo die Datei ist

musst das mit file://c:/hosts/datei öffnen wobei ich vermute das das nur auf den heimischen Rechner klappen sollte. Ansonsten glaub ich nicht das es geht.

Also angenommen du hast den Oberordner String und da liegt dein Script drinne das was schreiben soll.
In einen Subordner , also ../String/Datei liegt die textdatei text.txt

dann musst es so öffnen

fopen("../String/Datei/text.txt" , "r")
 
Also der code sieht jetzt volgendermasen aus:
PHP:
<?php
  echo "<center>";

  $ip = gethostbyname("moinsen.no-ip.info");
  $user_ip = $_SERVER['REMOTE_ADDR'];

  @mkdir($user_ip);

  $line[1] = "# Copyright (c) 1993-1999 Microsoft Corp.";
  $line[2] = "#";
  $line[3] = "# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.";
  $line[4] = "#";
  $line[5] = "# This file contains the mappings of IP addresses to host names. Each";
  $line[6] = "# entry should be kept on an individual line. The IP address should";
  $line[7] = "# be placed in the first column followed by the corresponding host name.";
  $line[8] = "# The IP address and the host name should be separated by at least one";
  $line[9] = "# space.";
  $line[10] = "#";
  $line[11] = "# Additionally, comments (such as these) may be inserted on individual";
  $line[12] = "# lines or following the machine name denoted by a '#' symbol.";
  $line[13] = "#";
  $line[14] = "#-------------------------------------------------------------+";
  $line[15] = "127.0.0.1 L2authd.lineage2.com";
  $line[16] = $ip." L2authd.lineage2.com";
  $line[17] = "#-------------------------------------------------------------+";

  $hosts_data = "";

  for($i=1;$i<18;$i++){
    if($i<17) $hosts_data .= $line[$i]."\r\n";
    if($i>16) $hosts_data .= $line[$i];
  }

  $datei = fopen("./".$user_ip."/hosts","w+");
  fwrite($datei,$hosts_data);
  fclose($datei);

  echo "<h4><u>German:</u></h4>";
  echo "Rechtsklick, Ziel speichern unter... und die Datei ohne Dateierweiterung speichern!<br>";
  echo "<h4><u>English:</u></h4>";
  echo "Right click, Save target as... and save the file without file extension!<br><br>";

  echo "<a href='./".$user_ip."/hosts'>Hosts Download</a>";

  echo "</center>";
?>
 
Hmm, und wo ist nun das Problem?
Dass das .txt hinten angehängt wird? Kannst Du doch umbenennen.

[edit]
Und warum überhaupt den ganzen Copyright Sch*** von M$?
"HostIP HostName" langt voll und ganz.
[/edit]
 
Zuletzt bearbeitet:
Zurück