2016-06-17 2 views
0

эта вещь действительно взорвала мой разум. Я хочу создать страницу с текстовым полем, где мои клиенты могут ввести свое имя пользователя, и с помощью php я хочу сообщить странице, чтобы проверить, есть ли это имя пользователя, например, в файле с именем locationn.html, если оно существует, создайте файл cookie и позвольте ему перейти на другую страницу, если не добавить новую строку в файл, содержащий введенное имя пользователя.как сделать страницу входа пользователя на основе файла

это мой код в этом коде «unamec» - это имя файла cookie, а «$ user» - это имя пользователя, а «umname» - это имя текстового поля пользователя, значение которого отправлено на страницу используя метод post.

<?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

Итак, в чем вопрос? – Epodax

+0

В общем, это конечно возможно. Хотя возникает вопрос: _why? _ Обычно для такой вещи используется база данных, подход к базе данных намного быстрее и гораздо более гибкий, чем использование текстового файла в качестве хранилища. – arkascha

+0

Замечание: посмотрите на функцию 'file()' php: http://php.net/manual/en/function.file.php Сохраняет ручную 'explode()', поскольку вы уже получаете линии, разделенные на массив. – arkascha

ответ

0

Я могу помочь вам с сохранением и извлечением имени пользователя из файла. Вы можете адаптировать это и пара с управлением сеансом, чтобы достичь своих целей.

<?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

У меня появилась идея обрезать мои переменные из вашего кода –

Смежные вопросы