Zrobiłem logowanie na sesjach, pomagając sobie poradnikami z sieci i teraz mam taki problem. Chciałbym, żeby zalogowany widział w menu odnośniki "profil" i "wyloguj", a niezalogowany "rejestracja" i "logowanie". Nie mam pojęcia, co robię źle.
login.php
<html>
<?
include 'header.php';
include 'connect.php';
?>
<div id="container">
<?
// sprawdzamy czy user nie jest przypadkiem zalogowany
if(!$_SESSION['logged']) {
// jeśli zostanie naciśnięty przycisk "Zaloguj"
if(isset($_POST['name'])) { // filtrujemy dane...
$_POST['name'] = clear($_POST['name']);
$_POST['password'] = clear($_POST['password']);
// i kodujemy hasło
$_POST['password'] = codepass($_POST['password']);
// sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
$result = mysql_query("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_POST['name']}' AND `user_password` = '{$_POST['password']}' LIMIT 1"); // jeśli tak to ustawiamy sesje "logged" na true oraz do sesji "user_id" wstawiamy id usera
$_SESSION['logged'] = true;
$_SESSION['id'] = $row['user_id'];
echo '<p>Zostałeś poprawnie zalogowany! Możesz teraz przejść na <a href="index.php">stronę główną</a>.</p>'; } else {
echo '<p>Podany login i/lub hasło jest nieprawidłowe.</p>'; }
}
// wyświetlamy komunikat na zalogowanie się
<form method="post" action="login.php">
<p>
Login:<br>
<input type="text" name="name">
</p>
<p>
Hasło:<br>
<input type="password" name="password">
</p>
<p>
<input type="submit" value="Zaloguj">
</p>
</form>
</div>';
} else {
echo '<p>Jesteś już zalogowany, więc nie możesz się zalogować ponownie.</p> <p>[<a href="index.php">Powrót</a>]</p>';
}
?>
</div>
</body>
</html>
connect.php
<?php
function clear($text) {
// jeśli serwer automatycznie dodaje slashe to je usuwamy
}
$text = trim($text); // usuwamy białe znaki na początku i na końcu return $text;
}
function codepass($password) {
// kodujemy hasło (losowe znaki można zmienić lub całkowicie usunąć
return sha1
(md5($password).'#!%Rgd64'); }
// funkcja na sprawdzanie czy user jest zalogowany, jeśli nie to wyświetlamy komunikat
function check_login() {
if(!$_SESSION['logged']) {
die('<p>To jest strefa tylko dla użytkowników.</p> <p>[<a href="login.php">Logowanie</a>] [<a href="register.php">Zarejestruj się</a>]</p>');
}
}
// funkcja na pobranie danych usera
function get_user_data($user_id = -1) {
// jeśli nie podamy id usera to podstawiamy id aktualnie zalogowanego
if($user_id == -1) {
$user_id = $_SESSION['user_id'];
}
$result = mysql_query("SELECT * FROM `users` WHERE `user_id` = '{$user_id}' LIMIT 1"); return false;
}
}
// jeśli nie ma jeszcze sesji "logged" i "user_id" to wypełniamy je domyślnymi danymi
if(!isset($_SESSION['logged'])) { $_SESSION['logged'] = false;
$_SESSION['user_id'] = -1;
}
?>
index.php
<html>
<?
include 'header.php';
include 'connect.php';
?>
<div id="container">
<?
check_login();
?>
asda
</div>
</body>
</html>
i header.php
<head>
<meta charset="utf-8">
<title>Heheszkii</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="header">
<div id="logo">
</div>
<div id="menu">
<a href="front.php">Front</a>
<a href="fresh.php">Fresh</a>
<a href="random.php">Random</a>
<a href="submit.php">Submit</a>
</div>
<div id="usermenu">
<?
if ($_SESSION['logged'] = true) {
echo'<div id="logged"><a href="logout.php">Logout</a> <a href="profile.php">Profile</a></div>';
}
else {
echo '<div id="notlogged"><a href="login.php">Login</a> <a href="register.php">Register</a>';
}
?>
</div>
</div>