bardzo proste logowanie - nie działa na podstronach

0

Mam formularz z logowaniem:

 <?php session_start();
require_once ('connect.php');
?>
<!DOCTYPE HTML>
<html>

<head>

	<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet"> 
	<link href="../style/style.css" rel="stylesheet">
	<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
	<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
	<?php include("./skrypty/header.php"); ?>
</head>

<body>
<div id="container">


      <form name="form-logowanie" action="work.php" method="post">
          Login: <input type="text" name="login" /><br />
          Hasło: <input type="password" name="password" />
          <input type="submit" name="zaloguj" value="Zaloguj" />
      </form>

</body>
</html>

Przenosi mnie to do pliku w którym jest weryfikacja loginu i hasła:

<?php 
session_start();

require_once ('connect.php');
?>

<!DOCTYPE HTML>
<html>

<head>
	<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet"> 
	<link href="../style/style.css" rel="stylesheet">
	<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
	<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
	<?php include("../skrypty/header.php"); ?>
</head>

<body>
	<div id="container">

		<div id="logo">
			<a href="../index.php"><img src="../img/logo.png" ></a>
		</div>

      <?php 

if ($_POST['login']=="admin" && $_POST['password']=="admin")
	$_SESSION['auth']=TRUE;
else		  			
	$_SESSION['auth']=FALSE;


      	if ($_SESSION['auth']) {
              ?>		
		        <div id="menu">
					<a href="?co=1">Dodaj</a> | <a href="?co=2">Edytuj</a> | <a href="?co=3">Stopka</a> | <a href="?co=4">Slider</a> | <a href="?co=9">Wyloguj</a>
				</div>

				<div id="arts">

				<?php 
					switch ($_GET['co']) {
						case 1;			
							include("skrypty/dodaj.php");
							break;
						case 2;
							include("skrypty/edytuj.php");
							break;					
						case 3;
							include("skrypty/stopka.php");
							break;			
						case 4:
							include("skrypty/slider.php");
							break;		
						case 9:
							{
								session_destroy();
								echo '<meta http-equiv="refresh" content="1; URL=index.php">';
							
							break;	
							}
						default:
							include("skrypty/main.php");
							break;
					}

					?>

					</div>

				<div style="clear:both;"></div><?php
		} else {
              echo '<meta http-equiv="refresh" content="1; URL=index.php">';
              echo '<p style="padding-top:10px;"><strong>Próba nieautoryzowanego dostępu...</strong><br>trwa przenoszenie do formularza logowania<p></p>';
      }
      ?>


	</div>

</body>
</html> 

Jeżeli hasło poprawnie wpiszę czy admin admin to jestem zalogowany i wyświetla mi się główna strona czyli ze switch'a opcja default. Natomiast jeśli próbuję przejść do jakiejś innej zakładki dostaje komunikat o nieautoryzowanym dostępie ($_SESSION['auth']=false).
Wie ktoś może dlaczego tak się dzieje, gdzie jest błąd?

1

Problem leży tutaj:

 
if ($_POST['login']=="admin" && $_POST['password']=="admin")
    $_SESSION['auth']=TRUE;
else                      
    $_SESSION['auth']=FALSE;

za każdym razem sprawdzasz czy wysyłasz POST'a, dodaj do if'a isset($_POST...) i wtedy jeżeli jest wysłany formularz to sprawdzi poprawnosc, a jezeli nie ma formularza to sprawdzi sesje Auth.

0

Racja - kompletnie mi to umknęło. Dzięki wielkie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1