2016-05-26 6 views
0

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

<?php 
    session_start(); 
    $_SESSION["name"] = ""; 
    $_SESSION["password"] = ""; 

?> 

<!DOCTYPE html> 
<form action="start.php" method="post"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Remember the Cow</title> 
     <link href="https://webster.cs.washington.edu/css/cow-provided.css" type="text/css" rel="stylesheet" /> 
     <link href="cow.css" type="text/css" rel="stylesheet" /> 
     <link href="https://webster.cs.washington.edu/images/todolist/favicon.ico" type="image/ico" rel="shortcut icon" /> 
    </head> 

    <body> 
     <div class="headfoot"> 
      <h1> 
       <img src="https://webster.cs.washington.edu/images/todolist/logo.gif" alt="logo" /> 
       Remember<br />the Cow 
      </h1> 
     </div> 

     <div id="main"> 
      <p> 
       The best way to manage your tasks. <br /> 
       Never forget the cow (or anything else) again! 
      </p> 

      <p> 
       Log in now to manage your to-do list. <br /> 
       If you do not have an account, one will be created for you. 
      </p> 

      <form id="loginform" action="login.php" method="post"> 
       <div><input name="name" type="text" size="8" autofocus="autofocus" /> <strong>User Name</strong></div> 
       <div><input name="password" type="password" size="8" /> <strong>Password</strong></div> 
       <div><input type="submit" value="Log in" /></div> 
      </form> 

      <p> 
       <em>(last login from this computer was ???)</em> 
      </p> 
     </div> 

     <div class="headfoot"> 
      <p> 
       <q>Remember The Cow is nice, but it's a total copy of another site.</q> - PCWorld<br /> 
       All pages and content &copy; Copyright CowPie Inc. 
      </p> 

      <div id="w3c"> 
       <a href="https://webster.cs.washington.edu/validate-html.php"> 
        <img src="https://webster.cs.washington.edu/images/w3c-html.png" alt="Valid HTML" /></a> 
       <a href="https://webster.cs.washington.edu/validate-css.php"> 
        <img src="https://webster.cs.washington.edu/images/w3c-css.png" alt="Valid CSS" /></a> 
      </div> 
     </div> 
    </body> 
</html> 
+0

cookie и сеансы - это два разных механизма. Сессии будут очищены, когда пользователь закроет окно своего браузера или после периода бездействия. Cookies остаются в браузере в течение предопределенного периода. Когда кто-то входит в систему, они должны выбрать флажок, если они запомнят свой логин. Затем вы можете установить зашифрованное значение в файл cookie в файле setcookie в php docs, и каждый раз, когда кто-то приходит на сайт, вы можете проверить наличие cookie $ _COOKIES ['cookie name'] и занести их в журнал, если это действительное значение – Brett

ответ

1

Вы почти там.

После подтверждения того, что имя и пароль правомочно (использование password_hash и password_verify при хранении паролей для повышения безопасности), создавать и сохранять уникальный идентификатор сеанса:

session_regenerate_id(); 

После того, как вы сделаете это , вы можете сохранить этот идентификатор сеанса в таблице сеанса. Это высоко рекомендуется регенерировать session_id каждый раз, когда пользователь меняет состояние (вход в систему/выход или эскалация привилегий).

Я бы не хранил пароль в сеансе и не полагался на имя пользователя.

Сессия аутентифицируется, если session_id соответствует сеансу аутентифицированного сеанса в вашей базе данных сеансов. Для завершения сеанса, удалите session_id из вашей сессии таблицы и регенерировать session_id:

unset($_SESSION['SESSIONKEY']; 
session_regenerate_id(); 

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

Дополнительное чтение:

When and why I should use session_regenerate_id()?

0

Если вы получаете данные из базы данных, то вы можете получить данные, основанные на имени пользователя и пароль и хранить целые данные в массив сессии в качестве:

$_SESSION['user'] = mysql_query("select *from users where username = '"+$username+"' and password = '"+$password+"'"); 

а также сохранить имя пользователя и пароль в системном файле cookie. , и когда вы выходите из системы вручную, удалите файл cookie.