problem jest nastepujący. Stworzywszy sesje efekt widoczny jest tylko na stronie index.php?id=pole... Zamieszcze fragmenty kodu.
cms/rangi/login.php
Ta podstrona jest includowana w polu przeznaczonym na logowanie, albo jeżeli jest juz ktoś zalogowany to do bajerów profilu... (admin.php, modek.php czy user.php)
Kod
<?php
if (isset($_SESSION['admin']) && $_SESSION['admin']=='123') {
include('cms/rangi/admin.php');
}
else if (isset($_SESSION['user']) && $_SESSION['user']=='abc') {
include('cms/rangi/user.php');
}
else {
?>
<table cellpadding="0" cellspacing="0" align="center">
<form name="login" method="POST" action="index.php?id=pole">
<tr><td><input type="text" class="log" name="login" value="login" onFocus="if(this.value=='login') {this.value='';}" onBlur="if(this.value=='') {this.value='login';}"></td><td rowspan="3" width="2"></td><td rowspan="3"><input type="image" SRC="_img/ikony//ok.png" ALT="OK"></td></tr>
<tr><td height="6"></td></tr>
<tr><td><input type="password" class="log" name="pass" value="haslo" onFocus="if(this.value=='haslo') {this.value='';}" onBlur="if(this.value=='') {this.value='haslo';}"></td></tr>
<tr><td colspan="3" height="3"></td></tr>
<tr><td colspan="3"><a href="#" class="srodek">Rejestracja w Portalu</a>
<a href="#" class="srodek">Przypomnienie hasła</a></td></tr>
</form>
</table>
<?php
}
?>
if (isset($_SESSION['admin']) && $_SESSION['admin']=='123') {
include('cms/rangi/admin.php');
}
else if (isset($_SESSION['user']) && $_SESSION['user']=='abc') {
include('cms/rangi/user.php');
}
else {
?>
<table cellpadding="0" cellspacing="0" align="center">
<form name="login" method="POST" action="index.php?id=pole">
<tr><td><input type="text" class="log" name="login" value="login" onFocus="if(this.value=='login') {this.value='';}" onBlur="if(this.value=='') {this.value='login';}"></td><td rowspan="3" width="2"></td><td rowspan="3"><input type="image" SRC="_img/ikony//ok.png" ALT="OK"></td></tr>
<tr><td height="6"></td></tr>
<tr><td><input type="password" class="log" name="pass" value="haslo" onFocus="if(this.value=='haslo') {this.value='';}" onBlur="if(this.value=='') {this.value='haslo';}"></td></tr>
<tr><td colspan="3" height="3"></td></tr>
<tr><td colspan="3"><a href="#" class="srodek">Rejestracja w Portalu</a>
<a href="#" class="srodek">Przypomnienie hasła</a></td></tr>
</form>
</table>
<?php
}
?>
Jeszcze tylko mała uwaga, do tych sesji dodaje wartość abc lub 123 tylko przykładowo. Celem wstawiania tych wartości jest zabezpieczenie sie przed tworzeniem fake sesji, które dawałyby uprawnienia...
cms/rangi/pole.php do tego odwoluje sie login.php tu sprawdzane sa wartosci login i haslo i tworzone sa sesje...
Kod
<?php
session_start();
$link = mysql_connect('127.0.0.1','root','haslo);
mysql_select_db('portal');
$user = $_POST['login'];
$result = mysql_query("SELECT * FROM phpbb_users WHERE username = '$user'");
$pass = $_POST['pass'];
$pass = md5($pass);
$row = mysql_fetch_array($result);
if($pass == $row['user_password']){
switch ($row['user_id'])
{
case 2: $_SESSION[$user] = '123'; break;
case 3: $_SESSION[$user] = 'abc'; break;
default: echo('zalogowany jako none'); break;
}
}
mysql_close($link);
?>
session_start();
$link = mysql_connect('127.0.0.1','root','haslo);
mysql_select_db('portal');
$user = $_POST['login'];
$result = mysql_query("SELECT * FROM phpbb_users WHERE username = '$user'");
$pass = $_POST['pass'];
$pass = md5($pass);
$row = mysql_fetch_array($result);
if($pass == $row['user_password']){
switch ($row['user_id'])
{
case 2: $_SESSION[$user] = '123'; break;
case 3: $_SESSION[$user] = 'abc'; break;
default: echo('zalogowany jako none'); break;
}
}
mysql_close($link);
?>
i chyba to wszystko.
Problem tkwi w tym, że include np. admin.php jeżeli jestesmy zalogowani na admina działa tylko, gdy jestesmy na stronie index.php?id=pole (normalna strona główna z dodaną wartością cms/rangi/pole.php).
Bawię się w PHP od września, więc nie wymagajcie odemnie za dużo... prosiłbym o radę, żebym wreszcie uporał się z tym problemem, dziekuję z góry!