2013-07-28 2 views
0

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

Когда я запускаю сценарий login.php в браузере и введите правильное имя пользователя и пароль (или даже неправильный ввод) .. он отображает сообщение об ошибке

(Примечание: Undefined переменной: _SESSION в C : \ Program Files (x86) \ EasyPHP-DevServer-13.1VC9 \ data \ localweb \ rassal \ login.php в строке 8).

Если я ввожу правильную комбинацию, пользователь зарегистрирован ... но все же появляется одно и то же уведомление, и скрипт перенаправляется на страницу login.php.

Как отредактировать скрипт, чтобы он работал отлично? Например, он должен принять логин, а затем перейти на страницу (в сеансе).

Вот коды

login.php

<?php 
$username = (isset($_POST['username'])) ? $_POST['username'] : ''; 
$password = (isset($_POST['password'])) ? $_POST['password'] : ''; 
$redirect = (isset($_REQUEST['redirect'])) ? $_POST['redirect'] : 'secret.php'; 

if(isset($_POST['submit'])) 
{ 
if(!isset($_SESSION['logged']) && $_SESSION['logged']!=1) 
{ 
if(!empty($username) && $username == 'uname' && !empty($password) && $password = 'ppas') 
{ 
$_SESSION['username']=$username; 
$_SESSION['logged']=1; 
header('Refresh: 5; URL = '.$redirect); 
echo "Redirecting"; 
die(); 
} 
else 
{ 
$_SESSION['username']=''; 
$_SESSION['logged']=0; 
echo "You entered a wrong combination of username and password"; 
} 
} 
} 
?> 
<html> 
<head> 
<title>Login </title> 
</head> 
<body> 
<form action="login.php" method="post"> 
<table> 
<tr> 
<td>Username :</td> 
<td><input type="text" name="username" value="<?php echo $username; ?>" /></td> 
</tr> 
<tr> 
<td>Password:</td> 
<td><input type="password" name="password" value="<?php echo $password; ?>" /></td> 
</tr> 
<tr> 
<td><input type="submit" name="submit" value="Log In" /></td> 
</tr> 
</table> 
</form> 
</body> 
</html> 

Вот auth.inc.php

<?php 
session_start(); 

if(!isset($_SESSION['logged']) && $_SESSION['logged']!=1) 
{ 
header('Refresh: 5; URL=login.php?redirect=' . $_SERVER['PHP_SELF']); 
echo "You'd be now redirected to the login page "; 
} 
die(); 
?> 

и вот secret.php (файл, который будет показан, когда пользователь имеет успешно зарегистрирован)

<?php 
require ('auth.inc.php'); 
?> 
<html> 
<head> 
<title>Logged IN </title> 
</head> 
<body> 
<h2>You're now logged in </h2> 
</body> 
</html> 
+0

Вы пишете это без отступничества, или это просто копия/вставка, выбитая? Использование правильного форматирования и IDE (netbeans бесплатно) действительно помогает в читабельности, а позже, когда вы вернетесь, чтобы отредактировать свой код. По теме: вы должны начать все свои файлы с помощью "session_start();" – JimL

+0

Вы должны поместить 'session_start' перед вызовом' isset' на '$ _SESSION ['logged']'. –

+0

Где находится 'session_start()'? – Sean

ответ

2

Попробуйте написать session_start(); в верхней части login.php после <?php активировать переменную сеанса :)

Кроме того, замените все

if(!isset($_SESSION['logged']) && $_SESSION['logged']!=1) 

с

if (!isset($_SESSION['logged']) || $_SESSION['logged']!=1) 

, чтобы убедиться, что вы не вызов неопределенный индекс.

+0

Хорошо, сделал это ... но теперь я получаю эту ошибку: - Примечание: Неопределенный индекс: зарегистрирован в C: \ Program Files (x86) \ EasyPHP-DevServer-13.1VC9 \ data \ localweb \ rassal \ login.php в строке 10 – Rahul

+0

.. потому что не установлен. Это должно быть «||», а не «&&»: if (!isset ($ _ SESSION ['logged']) || $ _SESSION ['logged']! = 1) –

0

Вы не запустили сеанс, поэтому в нем не указана переменная login.php файл.

Используйте это в login.php файле:

<?php 
session_start(); //use this line in your login.php file at the starting 
$username = (isset($_POST['username'])) ? $_POST['username'] : ''; 

Редакцией:

<?php 
session_start(); 
if(!isset($_SESSION['logged'])) { 
    $_SESSION['logged'] = ""; 
} 

Используйте этот код.

+0

Хорошо, сделал это ... но теперь я получаю эту ошибку: - Примечание: Неопределенный индекс: зарегистрирован в C: \ Program Files (x86) \ EasyPHP-DevServer-13.1VC9 \ data \ localweb \ rassal \ login.php в строке 10 – Rahul

+0

@Rahul Я отредактировал ответ, проверю и использую этот код для вас. –

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