2013-06-18 3 views
1

Я хочу создать вход и выход сеансусоздать логин и выход из сеанса

Моей таблица в базе данных MySQL выглядит как этот

CREATE TABLE `login` (
    `id` int(10) NOT NULL auto_increment, 
    `username` varchar(20) NOT NULL, 
    `password` varchar(20) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; 

и подключение MySQL с именем, как config.inc

Моими index.php страница выглядит следующим образом

<?php 

// Inialize session 
session_start(); 

// Check, if user is already login, then jump to secured page 
if (isset($_SESSION['username'])) { 
header('Location: securedpage.php'); 
} 

?> 
<html> 

<head> 
<title>PHPMySimpleLogin 0.3</title> 
</head> 

<body> 

<h3>User Login</h3> 

<table border="0"> 
<form method="POST" action="loginproc.php"> 
<tr><td>Username</td><td>:</td><td><input type="text" name="username" size="20">  </td></tr> 
<tr><td>Password</td><td>:</td><td><input type="password" name="password"  size="20"> </td></tr> 
<tr><td>&nbsp;</td><td>&nbsp;</td><td><input type="submit" value="Login"></td></tr> 
</form> 
</table> 

</body> 

</html> 

Проверка имени пользователя и пароля файл с именем, как loginproc.php

<?php 

// Inialize session 
session_start(); 

// Include database connection settings 
include('config.inc'); 

// Retrieve username and password from database according to user's input 
$login = mysql_query("SELECT * FROM user WHERE (username = '" .  mysql_real_escape_string($_POST['username']) . "') and (password = '" .  mysql_real_escape_string(md5($_POST['password'])) . "')"); 

// Check username and password match 
if (mysql_num_rows($login) == 1) { 
// Set username session variable 
$_SESSION['username'] = $_POST['username']; 
// Jump to secured page 
header('Location: securedpage.php'); 
} 
else { 
// Jump to login page 
header('Location: index.php'); 
} 

?> 

Мой безопасный код страницы с именем, как securedpage.php

<?php 

// Inialize session 
session_start(); 

// Check, if username session is NOT set then this page will jump to login page 
if (!isset($_SESSION['username'])) { 
header('Location: index.php'); 
} 

?> 
<html> 

<head> 
<title>Secured Page</title> 
</head> 

<body> 

<p>This is secured page with session: <b><?php echo $_SESSION['username']; ?></b> 
<br>You can put your restricted information here.</p> 
<p><a href="logout.php">Logout</a></p> 

</body> 

</html> 

И, наконец, выйти из системы страница названа logout.php

<?php 

// Inialize session 
session_start(); 

// Delete certain session 
unset($_SESSION['username']); 
// Delete all session variables 
// session_destroy(); 

// Jump to login page 
header('Location: index.php'); 

?> 

Теперь моя проблема когда я вхожу в имя пользователя и пароль, он wil Я остаюсь только на index.php, он не пойдет на другую страницу. Пожалуйста, посмотрите этот код и скажите мне, когда я делаю неправильно.

Спасибо.

+0

Рассмотрите возможность использования PDO или MySQLi вместо MySQL. – MisterBla

+0

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

ответ

3

Первый всего, regular mysql functions будет устарел в PHP 5.5.0.

Во-вторых, вы ищете внутри таблицы называется user в то время как вы назвали ваши login.

И ... вам не нужно фильтровать md5.

Удачи.

0

Согласно PHP 5.5 Все функции mysql_ * устарели. Попробуйте использовать уровни абстракции или mysqli.

В вашем loginproc.php Вы должны начать сеанс после успешной проверки имени пользователя и пароля, чтобы использовать session_start() в если условие

 if (mysql_num_rows($login) == 1) 
0

Во-первых, Вы можете иметь более одного пользователя с теми же учетными данными ,

Во-вторых, у вас могут не быть пользователей с введенным именем пользователя или паролем.

В-третьих, в SQL Query password = '" . mysql_real_escape_string(md5($_POST['password']))

изменения в

password = '" . md5(mysql_real_escape_string($_POST['password'])) 

И проверить имя таблицы "входа" или "пользователь" ??

попробовать этот

0

В securedpage.php использования:

... 
if (!isset($_SESSION['username'])==null) 
{ 
    header('Location: index.php'); 
} 
... 

вместо:

... 
if (!isset($_SESSION['username'])) 
{ 
    header('Location: index.php'); 
} 
... 

Сделайте то же самое в index.php

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