Невозможно обнаружить $ _SESSION ['username'] на странице index / auth - PullRequest
1 голос
/ 01 апреля 2019

Я не могу отобразить $ _SESSION ['username'] на моей странице index.html / auth.php после входа в систему. Это странно, потому что он может обнаружить $ _SESSION ['username'] на других страницах после входа в систему,только не моя страница index / auth.

РЕДАКТИРОВАТЬ: При правильном входе в систему login.php переходит в index.html.Затем index.html отображает кнопку «login» из auth.php как «Login»

login.php, где пользователь вводит имя пользователя и пароль для входа в систему, а $ _SESSION ['username'] равносоздано.

<?php session_start(); 
require('db.php');
// If form submitted, insert values into the database.
if (isset($_POST['username'])){
        // removes backslashes
	$username = stripslashes($_REQUEST['username']);
        //escapes special characters in a string
	$username = mysqli_real_escape_string($con,$username);
	$password = stripslashes($_REQUEST['password']);
	$password = mysqli_real_escape_string($con,$password);
	//Checking is user existing in the database or not
        $query = "SELECT * FROM `users` WHERE username='$username'
and password='".md5($password)."'";
	$result = mysqli_query($con,$query) or die(mysql_error());
	$rows = mysqli_num_rows($result);
        if($rows==1){
		$_SESSION['username'] = $username;
            // Redirect user to index.html
	    header("Location: ../index.html");
         }else{
	echo "<div class='form'>
<h3>Username/password is incorrect.</h3>
<br/>Click here to <a href='login.php'>Login</a></div>";
	}
    }else{
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
<link rel="stylesheet" href="login.css" />
</head>
<body>
<div class="form">
<h1>Log In</h1>
<form action="" method="post" name="login">
<input type="text" name="username" placeholder="Username" required  style="text-align: center;"/>
<input type="password" name="password" placeholder="Password" required  style="text-align: center;"/>
<input name="submit" type="submit" value="Login" />
</form>
<a href='resetpassword.php'>Forgotten Password?</a>
	  <br/><a href='registration.php'>Register Here</a>
</div>
<?php } ?>
</body>
</html>

index.html, где вызывается страница auth.php (остальная часть моей страницы index.html не имеет значения для этой проблемы, заменена на «бла-бла-бла»)).РЕДАКТИРОВАТЬ: Мой сервер настроен так, что index.html может запускать php.

<?php session_start(); ?> 
 <?php require('login/auth.php'); ?>
  <?php include('login/checkadmin.php'); ?>
  <?php include('login/getoutages.php'); ?>

<!doctype html>
<html>
blah blah blah
</html>

auth.php, где используется база данных и где $ _SESSION ['username'] предназначен для отображения, но не для этого!

<?php session_start();
		  ob_end_clean();
	  
	  if(isset($_SESSION['username'])) {
		  ?>
	  <table id="signedin">
	  <tr>
	  <td colspan="5">
	    Welcome, <?php echo $_SESSION['username']; ?>!
        </td>
		</tr>
		<tr>
		<td align="right">
		<a id="logouts" href="login/logout.php">Sign Out</a>
		</td>
		<td align="right"> 
		</td>
		<td align="left">
		<a id="profiles" href="login/profile.php">Profile</a>&nbsp;
		</td>
		</tr>
	  </table>
	  
	  
	  <?php } else if(!isset($_SESSION['username'])) { ?>
	 
	  <div id="notsignedin"><a id="logins" href="/login/login.php">Login</a></div>
	  
    <?php } ?>

Любая информация полезна!Спасибо!

РЕДАКТИРОВАТЬ: я обновил свой код для запуска session_start ();прежде всегоПо-прежнему не удается обнаружить $ _SESSION ['username'].EDIT2: переключил $ username = $ _SESSION ['username'];в login.php для $ _SESSION ['username'] = $ username;Все еще не отображается на auth.php

Ответы [ 3 ]

0 голосов
/ 01 апреля 2019

Вам необходимо вызвать session_start () перед проверкой issest ($ _ Session ['username'])

0 голосов
/ 01 апреля 2019

Вам нужно поместить session_start(); перед вызовом $_SESSION переменных на этой странице, поэтому if(isset($_SESSION['username']) не будет "установлен" до начала сеанса, просто переместите его на страницу выше, это хорошая практика, чтобы позвони в первую очередь. Я обычно помещаю это в мою страницу конфигурации наряду с моим соединением с БД и включаю это в каждую страницу :)

Надеюсь, это поможет

0 голосов
/ 01 апреля 2019

Вы должны начать сеанс в каждом файле раньше всего

<?php session_start(); ?>

По крайней мере, если вы вызываете каждую страницу отдельно

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