PHP Логин вопросы - PullRequest
       8

PHP Логин вопросы

1 голос
/ 11 ноября 2010

Итак, я хочу создать скрипт входа в систему для моей страницы, используя php и MySQL. Я искал в интернете хороший учебник по всей информации об этом, но, похоже, большинство из них просто дают сценарий и говорят, что вы идете. Проблема в том, что мне нужно больше информации о сессиях, куки и прочем. Кто-нибудь знает хорошее место, чтобы узнать об этом материале?

Ответы [ 7 ]

2 голосов
/ 11 ноября 2010

Вы должны понимать, что каждый раз, когда вы используете session_start (); Функция, вы создаете новый сеанс на вашем сервере или, если он уже создан, он делает ссылку, так что это идентифицирует каждого посетителя браузером, и в то же время, когда вы создаете этот сеанс, сервер устанавливает переменную cookie в заголовках с переменной с именем PHPSESSID эта переменная имеет хеш с идентификатором вашей сессии.

В PHP у вас есть предопределенная глобальная переменная с именем $ _SESSION, эта переменная может быть использована для хранения данных, таких как флаг для вашего логина, что-то вроде этого.

$ _ SESSION ['login'] = true;

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

1 голос
/ 11 ноября 2010

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

Здесь есть довольно хорошее руководство , но оно настроено так, чтобы показать, как построить процедуру входа в систему как в PHP4, так и в PHP5, поэтому следите за пронумерованными заголовками и убедитесь, что вы используете только файлы, относящиеся кверсия PHP.Обязательно ознакомьтесь с разделом о шифровании паролей.В эти дни вам определенно будет лучше.Хорошая вещь в этом уроке состоит в том, что он включает комментарии для каждого шага, так что вы будете знать, что они делают, и можете искать дополнительную информацию, если вам это нужно.Другая вещь, которую вы можете сделать, это опубликовать здесь часть вашего скрипта, если вам нужно объяснение конкретной части.

1 голос
/ 11 ноября 2010

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

1 голос
/ 11 ноября 2010

Честно говоря, я не знаю ни одного места для того, что вы хотите, потому что я выучил это сам. Потому что на самом деле это легко.

Основной принцип, лежащий в основе всего этого, заключается в проверке правильности введенной информации для входа в систему (проверяя ее через BL и DA, если вы знаете, о чем я говорю), а затем сохраняйте произвольную информацию о пользователе в $ _ SESSION переменная типа $_SESSION['name'] = 'guest', а затем написать простое утверждение в начале каждой страницы, для которой требуется вход в систему, чтобы проверить содержимое массива $ _SESSION и, если он не установлен, перенаправить на другую страницу и так далее. ..
Это оно! : D Надеюсь, я смогу ответить на то, что вы искали! ; -]

EDIT: Вот простая страница входа:

<?php
session_start();    //required if you want to use the $_SESSION array
$username = $_REQUEST['txtUsername'];   //storing the value of the "txtUsername" text box in the form sent by client after the form has been submited
$password = $_REQUEST['txtPassword'];   //same as $username

if (isset($username) && isset($password))
{
    /*
    * this section depends on the implementation of your BL and DA layers.
    * assume that my BL selects a member by it's username and returns an array
    * containing his/her info
    */
    require_once('mybl.php');   //assume that my BL tier is implemented in the "mybl.php" file
    MyBL $bl = new MyBL();
    $queryResult = $bl->selectByUsername($username);

    //authenticating user
    if ($queryResult['username'] == $username && $queryResult['password'] == $password)
    {
        //the user has been authenticated and can proceed to other pages available for members only

        /* 
        * i'm storing the user's username in the session so that I could refer to it in other pages
        * in case I want to update/modify database tables for this specific user.
        */
        $_SESSION['username'] = $username;
        //store anything else you want for the current user:
        $_SESSION['name'] = $queryResult['name'];   //for welcome prompt

        header('Location: welcome.php');    //redirecting the user
    }
    else    //in case of wrong username/password
    {
        $message = "Incorrect username/password";
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>LoginPage</title>
</head>

<body>
<form method="post" action="login.php">
<table style="border: 1px dashed">  
    <tr>
        <td>Username:</td>
        <td><input name="txtUsername" type="text" />
    </tr>
    <tr>
        <td>Password:</td>
        <td><input name="txtPassword" type="password" />
    </tr>
    <tr>
        <td colspan="2" align="center"><input name="btnSubmit" type="submit" value="Login" />
    </tr>
</table>
</form>
<span style="color: red;"><?php echo $message; ?> </span>
</body>
</html>

Страница приветствия :

<?php
session_start();
//checking to see if the user is logged in
if (!isset($_SESSION['username']))
    header('Location: login.php');  //the user is not logged in, he/she is redirected to the login page.

/*
* Basically you might want to put this code at the beginning of every page that requires
* logging in. This way a user that hasn't logged in can't see the contents of the page
* and you don't have to worry about extra checking and conditions that could raise errors
* due to empty "$_SESSION" array.
*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login successful</title>
</head>

<body>
Login successfull!<br />
Welcome <?php echo $_SESSION['name']; ?>
</body>
</html>
1 голос
/ 11 ноября 2010

Моя аутентификация Аутентификация PHP с несколькими доменами и поддоменами , не защищенная, будет обновлена ​​позже.

1 голос
/ 11 ноября 2010

Вот несколько ссылок, которые могут помочь:

1 голос
/ 11 ноября 2010

Что именно вы ищете в отношении сеансов и файлов cookie?

Убедитесь, что вы используете http://php.net/manual/en/index.php

Но если вы дадите больше информации, мы поможем вам в гораздо лучшем направлении

EDIT: Это выглядит как довольно всеобъемлющее руководство со всеми необходимыми вам функциями: http://www.evolt.org/node/60265

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...