2016-06-16 3 views
-1

Сначала я думал, что это проблема только с IE. Но теперь я включаю коды ошибок и там это отображение этого:Примечание: сеанс уже запущен, я не могу закончить сеанс

Примечание: уже началось заседание - игнорирование session_start() в /var/www/html/login.php по линии 7

Line 7 это команда запуска сеанса.

У меня есть три файла. index.php, auth.php и login.php, который содержит весь процесс входа в систему:

index.php

<?php 

echo "<a href=\"/login.php\">Log in</a>"; 

?> 

auth.php

$_user_ = 'admin'; 
$_password_ = 'password'; 

session_start(); 

$url_action = (empty($_REQUEST['action'])) ? 'logIn' : $_REQUEST['action']; 
$auth_realm = (isset($auth_realm)) ? $auth_realm : ''; 

if (isset($url_action)) { 
if (is_callable($url_action)) { 
    call_user_func($url_action); 
} else { 
    echo 'Function does not exist, request terminated'; 
}; 
}; 

function logIn() { 
global $auth_realm; 

if (!isset($_SESSION['username'])) { 
    if (!isset($_SESSION['login'])) { 
     $_SESSION['login'] = TRUE; 
     header('WWW-Authenticate: Basic realm="'.$auth_realm.'"'); 
     header('HTTP/1.0 401 Unauthorized'); 
     echo '<h1>Not authorized!</h1>'; 
     echo '<p>You must enter a valid login and password.</p>'; 
     echo '<a href="?action=logOut">Log in</a> | '; 
     echo '<a href="../">Back to the Website</a></p>'; 
     exit; 
    } else { 
     $user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : ''; 
     $password = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; 
     $result = authenticate($user, $password); 
     if ($result == 0) { 
      $_SESSION['username'] = $user; 
     } else { 
      session_unset($_SESSION['login']); 
      errMes($result); 
      exit; 
     }; 
    }; 
}; 
} 

function authenticate($user, $password) { 
global $_user_; 
global $_password_; 

if (($user == $_user_)&&($password == $_password_)) { return 0; } 
else { return 1; }; 
} 

function errMes($errno) { 
switch ($errno) { 
    case 0: 
     break; 
    case 1: 
     echo '<h1>Not authorized!</h1>'; 
     echo 'Username and password are incorrect.'; 
     echo '<p><a href="?action=logOut">Log in</a> | '; 
     echo '<a href="../">Back to the Website</a></p>'; 
     break; 
    default: 
     echo 'Unknown error'; 
}; 
} 

function logOut() { 

session_destroy(); 
session_unset(); 

if (isset($_SESSION['username'])) { 
    session_destroy($_SESSION['username']); 
    foreach(array_keys($_SESSION) as $k) unset($_SESSION[$k]); 
    echo "<h1>You've successfully logged out</h1>"; 
    echo '<a href="?action=logIn">Log In</a> | '; 
    echo '<a href="../">Back to the Website</a>'; 
} else { 
    header("Location: ?action=logIn", TRUE, 301); 
}; 
if (isset($_SESSION['login'])) { session_unset($_SESSION['login']); }; 
exit; 
} 

login.php

<?php 

$auth_realm = 'My Website'; 

require_once 'auth.php'; 

session_start(); 
if(!isset($_SESSION['username'])) { 
die('Please login first <a href="login.php?action=logIn">log in</a>.'); 
} 
echo "<p>You've logged in as {$_SESSION['username']} "; 
echo '<a href="?action=logOut">Log out</a></p>' 

?> 
  1. Начните с index.php и нажмите логин и введите «админ» и «пароль»
  2. Нажмите на Выход из
  3. Нажмите кнопку «Назад к веб-сайту»
  4. Кликните на «Войти» снова
  5. Нажмите отменить
  6. Нажмите на «Назад к веб-сайту»
  7. Нажмите на входе в систему.

==> Теперь вы вошли в систему, не передавая имя пользователя и пароль. Это недостаток безопасности и работает только с IE 11. Я пытался использовать несколько разных вариантов для удаления сеанса, но ничего не помогает. Кто может мне помочь?

Я также проверил это с Chrome, здесь он работает правильно, и я вынужден передать данные для входа после того, как точка 7.

ответ

0

Попробуйте выйти так:

unset($_SESSION['username']); 
session_destroy(); 
setcookie('PHPSESSID','',time()-3600,'/','',0,0); //unless you changed the PHP session cookie name 
+0

Нет, это не Помогите. Хотя я не устанавливаю cookie, я пробовал этот код. В результате я снова получил окно входа в систему, когда я отключаюсь при выходе из системы. И все еще остается. – HamburgIsNice

+0

Я обнаружил неразрешенную ошибку для Internet Explorer или что-то в моем коде неправильно? – HamburgIsNice

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