ilch Forum » Ilch Clan 1.1 » Allgemein » txt-Dateien downloaden lassen

Geschlossen
  1. #1
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Hi ich möchte ein Skript machen, bei dem die User ein Forumlar ausfüllen, welches Sie nach dem Absenden der Daten herunterladen können.
    Allerdings habe ich mit dem Download Schwierigkeiten, da die txt-Datei im Browser angezeigt wird anstatt Sie herunter zu laden.
    Und mit der function "download" bekomme ich ständig Fehler.
    Hier mal mein Code:
    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    function download($file , $name) {
        $size = filesize($file);
        header("Content-type: application/octet-stream");
        header("Content-disposition: attachment; filename=".$name);
        header("Content-Length: ".$size);
        header("Pragma: no-cache");
        header("Expires: 0");
        readfile($file);
    }  
    
    
    $title = $allgAr['title'].' :: aaa';
    $hmenu  = 'aaa';
    $design = new design ( $title , $hmenu );
    $design->header();
    
    if ( isset ($_POST['submit']) ) {
    		
    	// Gesendete Formularangaben zusammenfügen
    	$somecontent = 
    				"// Diese server.cfg wurde über den Onlinecreator auf www.wiskyjim.de erstellt.\n" . 
    				"\n" . 
    				"\n" . 
    				"// Servername\n" . 			
    				"hostname \"" . $_POST["servername"] . "\"\n" . 
    				"\n" . 
    				"// RCON Passwort\n" . 
    				"rcon_password \"" . $_POST["rcon"] . "\"\n" . 
    				"\n" . 
    				"// Advanced RCON\n" . 
    				"sv_rcon_banpenalty \"" . $_POST["sv_rcon_banpenalty"] . "\"\n";
    				"sv_rcon_maxfailures \"" . $_POST["sv_rcon_maxfailures"] . "\"\n";
    				"sv_rcon_minfailures \"" . $_POST["sv_rcon_minfailures"] . "\"\n";
    				"sv_rcon_minfailuretime \"" . $_POST["sv_rcon_minfailuretime"] . "\"\n";
    				// ... Ab hier werde ich die Datei fortsetzen
    	
    	$filename = 'include/contents/aaa/server.cfg';
    	
    	if (is_writable($filename)) {
    	
    		if (!$fp = fopen($filename, "w+")) {
    			print "Kann die Datei $filename nicht öffnen";
    			exit;
    		}
    		rewind($fp);
    	
    		if (!fwrite($fp, $somecontent)) {
    			print "Kann in die Datei $filename nicht schreiben";
    			exit;
    		}
    	
    		echo 'Die Angaben wurden übermittelt<br>' . 
    			'<a href="include/contents/aaa/server.cfg">Download<a>';
    	
    		fclose($fp);
    	
    	} else {
    		print "Die Datei $filename ist nicht schreibbar";
    	}
    	
    	if ( isset ($_POST['submit']) ) {
    		download("include/contents/aaa/server.cfg","aaa.cfg");
    	}
    }	
    ?>
    
    <form action="index.php?a" method="POST">
    	<table width="100%">
    		<tr>
    			<td>
    				Servername
    			</td>
    			<td>
    				<input type="text" name="servername" />
    			</td>
    		</tr>
    		<tr>
    			<td>
    				RCON Passwort<br>
    				sv_rcon_banpenalty (1/0) - Bannt Spieler, welche die Maximalgrenze der RCON Eingaben erreicht hat.<br>
    			</td>
    			<td>
    				<input type="text" name="rcon" /><br>
    				<select name="sv_rcon_banpenalty" size="1"
    					onchange="alert(this.form.Pizza.options[this.form.Pizza.selectedIndex].value)">
    					<option value="0">0</option>
    					<option value="1">1</option>
    				</select><br>
    			</td>
    		</tr>  
    	</table>
    	<input type="submit" name="submit"/>
    </form>
    
    <?php
    $design->footer();
    ?>
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    SteiniKeule Mitglied
    Registriert seit
    23.06.2012
    Beiträge
    18
    Beitragswertungen
    6 Beitragspunkte
    Dazu musst du mit header() arbeiten. Ich hab das bei Ilch noch nicht versucht. Wird aber so einfach nicht gehen, da du das auf einer extra Seite machen musst.
    if (file_exists($path . $_GET['file']))
    $path = "PFAD";
    header("Content-type: application/octet-stream\n");
    header("Content-disposition: attachment; filename=\"" . $_GET['file'] . "\"\n");
    header("Content-transfer-encoding: binary\n");
    header("Content-length: " . filesize($path . $_GET['file']) . "\n");
    $fp = fopen($path . $_GET['file'], "r");
    fpassthru($fp); 
    fclose ($fp);
    } else
    echo "datei existiert nicht";


    Nur als Beispiel. Kannst den Download auch im neuem Fenster machen und dort den angepassten Header verwenden.
    Alternative wäre dann noch mit JS.

    Header?
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Wäre das möglich, den Code von dir als function im func ordner anzulegen und im eigendlichen Skript aufzurufen oder ist das dann selbe wie wenn es im Skript vorkommt?
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    she Mitglied
    Registriert seit
    13.11.2010
    Beiträge
    1.115
    Beitragswertungen
    82 Beitragspunkte
    function download_text_file () {
    if (file_exists($path . $_GET['file']))
    $path = "PFAD";
    header("Content-type: application/octet-stream\n");
    header("Content-disposition: attachment; filename=\"" . $_GET['file'] . "\"\n");
    header("Content-transfer-encoding: binary\n");
    header("Content-length: " . filesize($path . $_GET['file']) . "\n");
    $fp = fopen($path . $_GET['file'], "r");
    fpassthru($fp); 
    fclose ($fp);
    } else
    echo "datei existiert nicht";
    }
    Google+ shelfinger.eu
    Das Wissen verfolgt mich - doch ich bin schneller!
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Sorry aber ich komm im Moment überhaupt nicht mehr zurrecht.
    Ich versuche seit knapp 10 Stunden dieses header richtig einzusetzen und bekomme ständig nur Fehler.
    Ich hau mich jetzt erst mal aufs Ohr.
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    SteiniKeule Mitglied
    Registriert seit
    23.06.2012
    Beiträge
    18
    Beitragswertungen
    6 Beitragspunkte
    ZitatZitat geschrieben von wiskyjim

    Ich versuche seit knapp 10 Stunden dieses header richtig einzusetzen und bekomme ständig nur Fehler.


    Ich finde leider mein Putztuch für meine Glaskugel nicht. Aber ich denke erkannt zu haben, dass dein Fehler diese Meldung ist:
    header already sent

    Dann liegt dein Fehler wohl hier:
    $title = $allgAr['title'].' :: aaa';
    $hmenu  = 'aaa';
    $design = new design ( $title , $hmenu );
    $design->header();
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Steini ich fürchte ich denke mal wieder viel komlizierter als es tatsächlich ist. Jetzt bekomme ich zwar keine header Schwierigkeiten mehr dennoch bekomme ich diese server.cfg nicht zum Downloaden.

    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    //function download_text_file () {
    //if (file_exists($path . $_GET['file'])) {
    //$path = "include/contents/aaa/server.cfg";
    //header("Content-type: application/octet-stream\n");
    //header("Content-disposition: attachment; filename=\"" . $_GET['file'] . "\"\n");
    //header("Content-transfer-encoding: binary\n");
    //header("Content-length: " . filesize($path . $_GET['file']) . "\n");
    //$fp = fopen($path . $_GET['file'], "r");
    //fpassthru($fp);
    //fclose ($fp);
    //} 
    //else {
    //echo "datei existiert nicht";
    //}
    //}
    
    $title = $allgAr['title'].' :: aaa';
    $hmenu  = 'aaa';
    $design = new design ( $title , $hmenu );
    $path = "include/contents/aaa/server.cfg";
    $design->header("Content-type: application/octet-stream\n Content-disposition: attachment; filename=\"" . $_GET['file'] . "\"\n Content-transfer-encoding: binary\n Content-length: " . filesize($path . $_GET['file']) . "\n");
    
    
    if ( isset ($_POST['submit']) ) {
    		
    	// Gesendete Formularangaben zusammenfügen
    	$somecontent = 
    				"// Diese server.cfg wurde über den Onlinecreator auf www.wiskyjim.de erstellt.\n" . 
    				"\n" . 
    				"\n" . 
    				"// Servername\n" . 			
    				"hostname \"" . $_POST["servername"] . "\"\n" . 
    				"\n" . 
    				"// RCON Passwort\n" . 
    				"rcon_password \"" . $_POST["rcon"] . "\"\n" . 
    				"\n" . 
    				"// Advanced RCON\n" . 
    				"sv_rcon_banpenalty \"" . $_POST["sv_rcon_banpenalty"] . "\"\n";
    				"sv_rcon_maxfailures \"" . $_POST["sv_rcon_maxfailures"] . "\"\n";
    				"sv_rcon_minfailures \"" . $_POST["sv_rcon_minfailures"] . "\"\n";
    				"sv_rcon_minfailuretime \"" . $_POST["sv_rcon_minfailuretime"] . "\"\n";
    				// ... Ab hier werde ich die Datei fortsetzen
    	
    	$filename = 'include/contents/aaa/server.cfg';
    	
    	if (is_writable($filename)) {
    	
    		if (!$fp = fopen($filename, "w+")) {
    			print "Kann die Datei $filename nicht öffnen";
    			exit;
    		}
    		rewind($fp);
    	
    		if (!fwrite($fp, $somecontent)) {
    			print "Kann in die Datei $filename nicht schreiben";
    			exit;
    		}
    	
    		echo 'Die Angaben wurden übermittelt<br><a href="include/contents/aaa/server.cfg">download</a>';
    	
    		fclose($fp);
    	
    	} else {
    		print "Die Datei $filename ist nicht schreibbar";
    	}
    	
    }	
    ?>
    
    <form action="index.php?a" method="POST">
    	<table width="100%">
    		<tr>
    			<td>
    				Servername
    			</td>
    			<td>
    				<input type="text" name="servername" />
    			</td>
    		</tr>
    		<tr>
    			<td>
    				RCON Passwort<br>
    				sv_rcon_banpenalty (1/0) - Bannt Spieler, welche die Maximalgrenze der RCON Eingaben erreicht hat.<br>
    			</td>
    			<td>
    				<input type="text" name="rcon" /><br>
    				<select name="sv_rcon_banpenalty" size="1"
    					onchange="alert(this.form.Pizza.options[this.form.Pizza.selectedIndex].value)">
    					<option value="0">0</option>
    					<option value="1">1</option>
    				</select><br>
    			</td>
    		</tr>  
    	</table>
    	<input type="submit" name="submit"/>
    </form>
    
    <?php
    $design->footer();
    ?>
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    SteiniKeule Mitglied
    Registriert seit
    23.06.2012
    Beiträge
    18
    Beitragswertungen
    6 Beitragspunkte
    if(submit)
    {
    //eingabe prüfen
    //cfg erstellen
    //header für download erstellen
    //ausgabe header
    }
    else
    {
    //normalen Header erstellen
    //formular
    }
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Habs jetzt wieder 7x geändert aber bekomm die olle Datei nicht gebacken, dass ich die downloaden kann.
    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    
    
    if ( isset ($_POST['submit']) ) {
    
    		
    	// Gesendete Formularangaben zusammenfügen
    	$somecontent = 
    				"// Diese server.cfg wurde über den Onlinecreator auf www.wiskyjim.de erstellt.\n" . 
    				"\n" . 
    				"\n" . 
    				"// Servername\n" . 			
    				"hostname \"" . $_POST["servername"] . "\"\n" . 
    				"\n" . 
    				"// RCON Passwort\n" . 
    				"rcon_password \"" . $_POST["rcon"] . "\"\n" . 
    				"\n" . 
    				"// Advanced RCON\n" . 
    				"sv_rcon_banpenalty \"" . $_POST["sv_rcon_banpenalty"] . "\"\n";
    				"sv_rcon_maxfailures \"" . $_POST["sv_rcon_maxfailures"] . "\"\n";
    				"sv_rcon_minfailures \"" . $_POST["sv_rcon_minfailures"] . "\"\n";
    				"sv_rcon_minfailuretime \"" . $_POST["sv_rcon_minfailuretime"] . "\"\n";
    				// ... Ab hier werde ich die Datei fortsetzen
    	
    	$filename = 'include/contents/aaa/server.cfg';
    	
    	if (is_writable($filename)) {
    	
    		if (!$fp = fopen($filename, "w+")) {
    			print "Kann die Datei $filename nicht öffnen";
    			exit;
    		}
    		rewind($fp);
    	
    		if (!fwrite($fp, $somecontent)) {
    			print "Kann in die Datei $filename nicht schreiben";
    			exit;
    		}
    	
    //		print "Die Angaben wurden übermittelt<br>";
    	
    		fclose($fp);
    	
    	} else {
    		print "Die Datei $filename ist nicht schreibbar";
    	}
    	
    $title = $allgAr['title'].' :: aaa';
    $hmenu  = 'aaa';
    $design = new design ( $title , $hmenu );
    $design->header("Content-type: application/octet-stream; Content-Disposition: attachment; filename=server.cfg");
    	
    	echo '<meta http-equiv="refresh" content="5"; url="' .$filename. '"><a href="include/contents/aaa/server.cfg">Datei</a>';
    	
    } else {
    
    $title = $allgAr['title'].' :: aaa';
    $hmenu  = 'aaa';
    $design = new design ( $title , $hmenu );
    $design->header();
    
    }	
    ?>
    
    <form action="index.php?a" method="POST">
    	<table width="100%">
    		<tr>
    			<td>
    				Servername
    			</td>
    			<td>
    				<input type="text" name="servername" />
    			</td>
    		</tr>
    		<tr>
    			<td>
    				RCON Passwort<br>
    				sv_rcon_banpenalty (1/0) - Bannt Spieler, welche die Maximalgrenze der RCON Eingaben erreicht hat.<br>
    			</td>
    			<td>
    				<input type="text" name="rcon" /><br>
    				<select name="sv_rcon_banpenalty" size="1"
    					onchange="alert(this.form.Pizza.options[this.form.Pizza.selectedIndex].value)">
    					<option value="0">0</option>
    					<option value="1">1</option>
    				</select><br>
    			</td>
    		</tr>  
    	</table>
    	<input type="submit" name="submit"/>
    </form>
    
    <?php
    $design->footer();
    ?>
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    SteiniKeule Mitglied
    Registriert seit
    23.06.2012
    Beiträge
    18
    Beitragswertungen
    6 Beitragspunkte
    wo ist denn das Problem? Welche Fehler bekommst du angezeigt? Wo hängt es denn? Bischen mehr Info bitte.
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Das macht der gepostete Code

    Man bekommt nach wie vor den die Datei angezeigt, statt sie herunterzuladen.
    Ich möchte, dass wenn man auf Absenden klickt ein Download startet der diese server.cfg downloadet und nicht anzeigt.
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    SteiniKeule Mitglied
    Registriert seit
    23.06.2012
    Beiträge
    18
    Beitragswertungen
    6 Beitragspunkte
    Ungetestet und ohne Garantie

    Vllt findest du ja noch einen Wunsch, den du auf die Mod-Wunschliste setzen kannst zwinker

    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined('main') or die('no direct access');
    
    if (isset($_POST['submit'])) {
        $somecontent = "// Diese server.cfg wurde über den Onlinecreator auf www.wiskyjim.de erstellt.\n" .
            "\n" . "\n" . "// Servername\n" . "hostname \"" . $_POST["servername"] . "\"\n" .
            "\n" . "// RCON Passwort\n" . "rcon_password \"" . $_POST["rcon"] . "\"\n" . "\n" .
            "// Advanced RCON\n" . "sv_rcon_banpenalty \"" . $_POST["sv_rcon_banpenalty"] .
            "\"\n";
        "sv_rcon_maxfailures \"" . $_POST["sv_rcon_maxfailures"] . "\"\n";
        "sv_rcon_minfailures \"" . $_POST["sv_rcon_minfailures"] . "\"\n";
        "sv_rcon_minfailuretime \"" . $_POST["sv_rcon_minfailuretime"] . "\"\n";
        // ... Ab hier werde ich die Datei fortsetzen
    
        $filename = 'include/contents/aaa/server.cfg';
    
        if (is_writable($filename)) {
    
            if (!$fp = fopen($filename, "w+")) {
                print "Kann die Datei $filename nicht öffnen";
                exit;
            }
            rewind($fp);
    
            if (!fwrite($fp, $somecontent)) {
                print "Kann in die Datei $filename nicht schreiben";
                exit;
            }
            fclose($fp);
    
        } elseif (!file_exists($filename)) {
            echo "Die Datei $filename ist nicht vorhanden";
        } else {
            echo "Die Datei $filename ist nicht schreibbar";
        }
    
    
        header("Content-type: application/octet-stream\n");
        header("Content-disposition: attachment; filename=server.cfg \n");
        header("Content-transfer-encoding: binary\n");
        header("Content-length: " . filesize($filename) . "\n");
        $fp = fopen($filename, "r");
        fpassthru($fp);
        fclose($fp);
    
    }
    
    $title = $allgAr['title'] . ' :: aaa';
    $hmenu = 'aaa';
    $design = new design($title, $hmenu);
    $design->header();
    ?>
     
    <form action="index.php?a" method="POST">
        <table width="100%">
            <tr>
                <td>
                    Servername
                </td>
                <td>
                    <input type="text" name="servername" />
                </td>
            </tr>
            <tr>
                <td>
                    RCON Passwort<br>
                    sv_rcon_banpenalty (1/0) - Bannt Spieler, welche die Maximalgrenze der RCON Eingaben erreicht hat.<br>
                </td>
                <td>
                    <input type="text" name="rcon" /><br>
                    <select name="sv_rcon_banpenalty" size="1"
                        onchange="alert(this.form.Pizza.options[this.form.Pizza.selectedIndex].value)">
                        <option value="0">0</option>
                        <option value="1">1</option>
                    </select><br>
                </td>
            </tr> 
        </table>
        <input type="submit" name="submit"/>
    </form>
     
    <?php
    $design->footer();
    ?>
    1 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Steini es funktioniert! Ich muss mir jetzt erst mal ansehen was du da geändert hast, damit ich das besser verstehe.
    Vielen Dank

    Thema kann geschlossen werden !
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten