2016-12-12 2 views
0

Ich bin sehr neu zu PHP, ich versuche, eine einfache Funktion zu erstellen, die den Namen der Person in people.txt Datei schreiben wird.In PHP-Funktion schreiben

Ich begann mit dem Code unten. Datei www.mywebsite.com/person.php+personName

In den Ergebnissen dieser Person Namen people.txt hinzugefügt wird:

<?php 
session_start(); 
$counter_name = "people.txt"; 

if (!file_exists($counter_name)) { 
    $f = fopen($counter_name, "w"); 
    fwrite($f,"0"); 
    fclose($f); 
} 

$f = fopen($counter_name,"r"); 
$person = fread($f, filesize($counter_name)); 
fclose($f); 
$f = fopen($counter_name, "w"); 
fwrite($f, $person); 
fclose($f); 

Grundsätzlich bin Benutzer die Webseite so zu geben. Wenn eine neue Person auf diese Seite zugreift, wird der Name der neuen Person der nächsten Zeile hinzugefügt. Etwas wie dieses:

person1; 
person2; 
person3; 
... 

Bitte einige Hilfe, um den Rest dieser Funktion herauszufinden.

Antwort

1
function appendToFile($stringOrArray, $fileName, $eol = true) 
    $fp = fopen('people.txt', 'a'); 
    $e = $eol ? PHP_EOL : ''; 
    if(is_string($stringOrArray)){ 
    fwrite($fp, $stringOrArray.$e); fclose($fp); 
    return true; 
    } 
    elseif(is_array($stringOrArray)){ 
    foreach($stringOrArray as $v){ 
     fwrite($fp, $v.$e); 
    } 
    fclose($fp); 
    return true 
    } 
    else{ 
    die('$stringOrArray must be a String or Array'); 
    } 
    return false; 
} 
appendToFile('Single String', 'people.txt'); 
appendToFile('Another Line', 'people.txt'); 
appendToFile(array('First Array Element' 'Second Array Element'), 'people.txt'); 

Beachten Sie, dass Sie nicht sehen müssen, ob die Datei existiert, da sie sowieso erstellt wird. Auch ich würde eine Klasse erstellen, eher wie:

class FileHandler{ 
    private $fn, $fp, $md; 
    public function __construct($fileName){ 
    $this->fn = $fileName; 
    } 
    public function getFileName(){ 
    return $thsi->fn; 
    } 
    public function setMode($mode){ 
    $this->md = $mode; $this->fp = fopen($this->fn, $mode); 
    return $this; 
    } 
    public function getFilePointer(){ 
    return $this->fp; 
    } 
    public function getMode(){ 
    return $this->md; 
    } 
    private function fc(){ 
    fclose($this->fp); 
    } 
    public function exec($maybe, $eol = true){ 
    $fp = $this->fp; 
    $e = $eol ? PHP_EOL : ''; 
    switch($this->md){ 
     case 'r': 
     break; 
     case 'r+': 
     break; 
     case 'w': 
     break; 
     case 'w+': 
     break; 
     case 'a': 
     if(is_string($maybe)){ 
      fwrite($fp, $maybe.$e); $this->fc(); 
      return true; 
     } 
     elseif(is_array($maybe)){ 
      foreach($maybe as $v){ 
      fwrite($fp, $v.$e); 
      } 
      $this->fc(); 
      return true; 
     } 
     else{ 
      die('$maybe must be a String or Array with mode \'a\''); 
     } 
     break; 
     case 'a+': 
     break; 
     case 'x': 
     break; 
     case 'x+': 
     break; 
     case 'c': 
     break; 
     case 'c+': 
     break; 
     default: 
     // maybe you want a mode if none is selected 
     break; 
    } 
    return false; 
    } 
} 
$fh = new FileHandler('people.txt'); 
$fh->setMode('a')->exec(array('value 0', 'value 1', 'value 2')); 

Natürlich müssen Sie zu den Modi hinzuzufügen und eine Reihe von anderem Code zu schreiben. Habe Spaß!

+0

kann ich das einfach in einer .php Datei speichern, es zu meinem Host hinzufügen und der Zugriff funktioniert? Was ist mit der vollständigen Website-Adresse, auf die ich zugreifen muss? www.mywebsite.com/myphpfile.php + alles geht hier für den Personennamen? – Joe

+0

Wenn Sie '? = Property = value & property1 = value & property2 = value2' an das Ende dieser URL anhängen, dann verwenden Sie etwas wie' isset ($ _ GET ['property']) {appendToFile ($ _ GET ['property']); } 'du solltest gut sein. – PHPglue