kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: 19MB große Datei splitten

    geschrieben von meinkredit

    Beispiel ... Speichern als Teil-Dateien mit jeweils max. n Zeilen

    <?php 
    // --------------------------------------------------------------- 
    
    $dateiname = 'data/grosse_datei.txt';   // ---- Quell-Datei ----
    
    $file_ext = '.txt';  	// ---- Dateiendung der Quell-/Ziel Datei ---- 
    $save_dir = 'data'; 	// ---- Speicher-Pfad (Ordner-Name) ---- 
    $maxlines = 1000; 		// ---- Anzahl der Zeilen je Parts Datei ---- 
    
    
    ## $rowlen = 10240;  	// ---- max. länge einer Zeile ---- 
    
    $datei = 1; 	// ---- Start Datei Nummer ---- 
    $zeile = 0; 	// ---- Start Zeilen je Block ---- 
    $allez = 0; 	// ---- Start Zeilen Gesamt ---- 
    $nrpad = 4; 	// ---- Anzahl Stellen Parts-Nr ($dnr) ---- 
    
    $dnr = str_pad($datei,$nrpad,'0',STR_PAD_LEFT); 
    
    $fbase =  basename($dateiname,$file_ext);    // ---- Dateiname ohne Pfad und ohne Extension ---- 
    
    $dateiliste = array(); 
    
    $save_dir = trim($save_dir,'/'); 
    
    $neu_datei = $save_dir.'/parts_'.$fbase.'_'.$dnr.$file_ext; 
    
    $dateiliste[] = $neu_datei; 
    
    echo "<br />Parts Datei (Nr: ".$dnr."): ".$neu_datei."\n"; 
    
    $fpr = @fopen($dateiname, "r") or die ('Kann Datei nicht lesen.');
    
    $fpx = @fopen($neu_datei, "w+") or die ('Kann Datei nicht schreiben.');
    
    ## while($line = fgets($fpr, $rowlen)) { 
    while($line = fgets($fpr)) { 
    	$zeile++;
    	if($zeile == $maxlines){ 
    		fclose($fpx); 	// ---- alte parts datei schliessen ---- 
    		$datei++;
    		
    		$dnr = str_pad($datei,$nrpad,'0',STR_PAD_LEFT); 
    		$neu_datei = $save_dir.'/parts_'.$fbase.'_'.$dnr.$datei_ext; 
    		$dateiliste[] = $neu_datei; 
    		
    		echo "<br />Parts Datei (Nr: ".$dnr."): ".$neu_datei."\n";  
    		
    		$fpx = @fopen($neu_datei, "w+") or die ('Kann Datei nicht schreiben.');
    		$zeile = 0; 	// ---- Zeilen Zähler zurücksetzen ---- 
    	}
    	fwrite($fpx,$line); // ---- in neue datei schreiben ---- 
    	$allez++; 
    }
    
    fclose($fpr);
    
    
    // --------------------------------------------------------------- 
    
    echo "<br />\n"; 
    echo "<br />\n"; 
    echo "<br />Zeilen Gesamt: ".$allez."\n"; 
    echo "<br />max. Zeilen pro Datei: ".$maxlines."\n"; 
    echo "<br />Dateien Gesamt: ".$datei."\n"; 
    echo "<br />\n"; 
    echo "<br />\n"; 
    
    print "<pre style=\"margin:4px; padding:4px; color:#000000; background:#DEDEDE; text-align:left;\">\n"; 
    print_r($dateiliste); 
    print "</pre>\n"; 
    
    echo "<br />\n"; 
    echo "<br />\n"; 
    echo "<br />\n"; 
    
    // --------------------------------------------------------------- 
    ?>


    Hinweis zu: $nrpad
    Die Zeile im Code:
    $nrpad = 4; 	// ---- Anzahl Stellen Parts-Nr ($dnr) ----

    .. gibt die Anzahl der Stellen (=Ziffern) für Nummerierung der Parts-Dateien an

    BSP: die Quell-Datei hat 41350 Zeilen, je Parts-Datei soll max. 1000 Zeilen haben
    dann werden 42 Dateien erstellt (letzte Datei hat dann nur 350 Zeilen)
    42 ---> eine 2 Stellige Zahl --->
    $nrpad = 2;
    genügt dann ... :)

    BSP: die Quell-Datei hat 41350 Zeilen, je Parts-Datei soll max. 100 Zeilen haben
    dann werden 414 Dateien erstellt (letzte Datei hat dann nur 50 Zeilen)
    414 ---> eine 3 Stellige Zahl --->
    $nrpad = 3;
    genügt dann ... :)


    Hinweis mit: $rowlen würde man die max. Zeilen-Länge beim Auslesen der Quell-Datei angeben,
    wenn die Zeilen relativ kurz sind, dann genügt da auch
    $rowlen = 1024;

    oder halt noch geringerer Wert, je nach bekannter max. Zeichen-Länge einer Zeile

    wenn man bei fgets()
    $rowlen
    weg lässt, wird bis zum Zeilen-Ende ausgelesen

    habe die Variante mit
    $rowlen
    (Zeilen-Länge) aus-kommentiert drin gelassen
    wenn man die max. Zelen-Länge kennt und verwendet ist fgets() ein wenig effektiver (schneller)

  • in: txt datei auslesen

    geschrieben von meinkredit

    Hallo nochmal ...

    ich versteh immer noch nicht, warum so kompliziert mit ssh2_connect() ...
    ... warum nicht einfach mit file() auslesen ?!?

    Das sollte doch auch gehen, wenn die Datei am gleichen Server leigt, wo das Script aufgerufen wird ?!

    Aufruf für User dann z.B. test3.php?user=Erik .... oder mit Formular (siehe unten)

    <?php 
    // ------------------------------------- 
    if (!empty($_GET['user'])) { 
    $user_name = trim($_GET['user']); 
    
    $user_file = 'accounts/'.$user_name.'.3FFAcc'; 
    
    $user_data = file($user_file); 
    
    // ------------------------------------- DEBUG Ausgabe ------ 
    echo "<br />\n"; 
    echo "<br />\n"; 
    
    print "<pre style=\"margin:4px; padding:4px; color:#000000; background:#DEDEDE; text-align:left;\">\n"; 
    print_r($user_data); 
    print "</pre>\n"; 
    
    echo "<br />\n"; 
    echo "<br />\n"; 
    // ------------------------------------- 
    ?>


    anstatt der DEBUG Ausgabe dann halt die foreach oder for oder while Schleife mit Bedingung

    PS:

    Eingabe über Formular dann etwa so (als HTML)

    <form name="form1" method="get" action="test3.php">
      Username: <input type="text" name="user" size="30" maxlength="150" />
      <input type="submit" name="go" value="OK" />
    </form>


    ggf.
    action="test3.php"
    anpassen, damit das Formular an die richtige Ziel-Datei gesendet wird

  • in: txt datei auslesen

    geschrieben von meinkredit

    Frage ... warum SFTP ... ??? ... hat jeder User einen SFTP Zugang ?

    soll die Statistik nicht einfach über einen LINK erreichbar sein ??

    BSP: http://<DEINEDOMAIN>/pfad/statistik.php?user=mickeymaus

    Wie werden die Dateien dem User zugeordnet?

    ... hat jeder User eine eigene Datei ....z.B.: /userpfad/mickeymaus.3FFAcc
    ... oder einen Order ....z.B.: /userpfad/mickeymaus/.3FFAcc
    ... oder ist .3FFAcc schon eine User-Spezifische Datei ?

  • in: txt datei auslesen

    geschrieben von meinkredit

    Wenn es sicher ist, dass das Passwort immer in der 3. Zeile steht,
    dann kannst Du diese 3. Zeile ja einfach "nicht ausgeben"

    ... Datei je Zeile in ein Array mit file()
    ... bei Durchlauf in foreach() Schleife ... wenn Zeile = Nr. 3 dann keine Ausgabe

    dazu einfach einen Zähler
    $z
    einführen, der bei Ausgabe die Zeile hoch-zählt.

    $file_name = '.3FFAcc'; 
    $file_data =  file($file_name, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    
    $z=1; 
    foreach($file_data as $zeile) { 
      if ($z != 3) { 
        print "<br />" . $zeile . "\n"; 
      }
    $z++; 
    }


    oder ... es geht auch mit count() und einer for() Schleife

    $file_name = '.3FFAcc'; 
    $file_data =  file($file_name, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    
    $zeilen = count($file_data); 
    
    for($i=0; $i<$zeilen; $i++) { 
      $z = ($i+1); 
      if ($z != 3) { 
        print "<br />" . $file_data[$i] . "\n"; 
      }
    }


    aber aufpassen, es wird einfach immer nur die dritte (3.) Zeile ausgelassen,
    also wenn (wegen Update) mal das Passwort in einer anderen Zeile steht,
    dann die Bedingung für die NICHT-Ausgabe
    if ($z != 3)
    entsprechend anpassen.

    :)
  • in: Webdesign Problem

    geschrieben von meinkredit

    einfach genau andersrum machen

    du hast eine Datei als Template
    und includest nur im Content-Bereich die unterschiedlichen Texte

    welcher Text includet werden soll kannst Du ja als Variable $seite festlegen
    oder aus ReWrite (oder aus Request URI) ermitteln)

    <?php
    // --------------------------
    $seite = 'hilfe';
    include_once('seiten/'..$seite'.php');
    // --------------------------
    ?>

    oder

    <?php
    // --------------------------
    $seite = 'impressum';
    include_once('seiten/'..$seite'.php');
    // --------------------------
    ?>

    usw. ...

  • in: CAPTCHA in Gästebuch einbauen

    geschrieben von meinkredit

    hallo

    Google sagt: ... nimm: http://www.google.com/recaptcha

    dazu gibts auch ne PHP-Library mit Beispiel zum Einbau

Login zum Webhosting ohne Werbung!