2016-06-17 6 views
0

dieses Ding wirklich meinen Verstand geblasen Ich möchte eine Seite mit einem Textfeld, wo meine Kunden ihren Benutzernamen eingeben können und mithilfe von PHP Ich möchte sagen, die Seite zu überprüfen, ob dort ist ein Benutzername wie der in einer Datei mit dem Namen locationn.html, wenn vorhanden, erstellen Sie ein Cookie und lassen Sie ihn auf einer anderen Seite, wenn Sie keine neue Zeile zu der Datei hinzufügen, die den eingegebenen Benutzernamen enthält.Wie man eine dateibasierte Benutzer Login-Seite

Dies ist mein Code in diesem Code "unamec" ist der Name des Cookies und "$ user" ist der Benutzername und "umname" ist der Name des Textfelds, dessen Wert an die Seite selbst gesendet wird Verwenden einer Post-Methode.

<?php 
if(isset($_POST["uname"])){ 
$user=$_POST["uname"]; 
$pass=$_POST["passs"]; 
$see=file_get_contents("locationn.html"); 
$lines=explode("\n",$see); 
foreach($lines as $line){ 
if($line == $user){ 
setcookie("unamec",$user,time()+86400,"/"); 
echo '<script>window.location="main.html";</script>'; 
} 
} 
} 
?> 
+0

Also, was ist die Frage? – Epodax

+0

Im Allgemeinen ist dies sicherlich möglich. Obwohl sich die Frage stellt: _why? _ Normalerweise wird eine Datenbank für solche Zwecke verwendet, ein Datenbankansatz ist viel schneller und viel flexibler als die Verwendung einer Textdatei als Speicher-Backend. – arkascha

+0

Eine Randnotiz: werfen Sie einen Blick auf PHP '' file() '-Funktion: http://php.net/manual/en/function.file.php Es erspart Ihnen das Handbuch' explode() ', da Sie bereits die Zeilen in ein Array getrennt. – arkascha

Antwort

0

Ich kann Ihnen beim Speichern und Abrufen eines Benutzernamens aus einer Datei helfen. Sie können dies anpassen und mit Session-Management verbinden, um Ihre Ziele zu erreichen.

<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $username = isset($_POST['username']) ? $_POST['username'] : null; 
    if($username !== preg_replace('/[^a-zA-Z0-9]+/', '', $username)) 
     throw new Exception('Invalid username.'); 
    $userStore = new UserStore('/tmp/creds.txt'); 
    if(! $userStore->isStored($username)) { 
     if($userStore->storeUsername($username)) { 
      echo $username . ' stored.'; 
     } 
    } else { 
     echo $username . ' is on file.'; 
    } 
} 


class userStore 
{ 
    public $fp; 
    public $filename; 

    public function __construct($filename) 
    { 
     $this->filename = $filename; 
     if(!file_exists($this->filename)) 
      file_put_contents($this->filename, null); 
     $this->fp = fopen($this->filename, "r+"); 
    } 

    public function isStored($username) { 
     $username_exists = false; 

     if(! $size = filesize($this->filename)) 
      return false; 
     $contents = fread($this->fp, $size); 

     $lines = array_filter(explode("\n", $contents)); 
     foreach($lines as $line) { 
      if(trim($line) == $username) { 
       $username_exists = true; 
       break; 
      } 
     } 

     return $username_exists; 
    } 

    public function storeUsername($username) 
    { 
     $fp = $this->fp; 
     if (flock($fp, LOCK_EX)) { 
      fwrite($fp, "$username\n"); 
      fflush($fp); 
      flock($fp, LOCK_UN); 
     } else { 
      return false; 
     } 

     return true; 
    } 
} 
?> 
<form method='POST'> 
    <input type='text' name='username'> 
    <input type='submit' value='login'> 
</form> 
+0

Ich habe die Idee, meine Variablen aus Ihrem Code zu schneiden, danke –

Verwandte Themen