SESSION - как да разбера дали е логнат

morkov4o

Registered
В сайта ми регистрацииката е във форума . И така имам логинче за страницата ми ,което е и за форума ... ето го и него login.php:
<?php
session_start();
?>
<head><meta http-equiv="refresh" content="3;URL=http://web-student.com" />
<link rel="stylesheet" href="font.css" type="text/css"><title>Login</title></head>
<?
//Скрипта получава данните от формуляра
$potrebitel= $HTTP_POST_VARS['potrebitel'];
$pas= $HTTP_POST_VARS['pas'];
//Тук се проверява дали сте написали правилното име и парола
$user="";
$password="";
$database="webstud_phpb1";

mysql_connect("localhost", "$user","$password");
@mysql_select_db($database) or die( "Unable to select database");

$query="SELECT * from phpbb_users
where username like '$potrebitel' and user_password like md5('$pas') ";
$result=mysql_query($query);
mysql_close();
if (mysql_num_rows($result) >0&&mysql_num_rows($result) <2 ){

echo "Здравейте  ";
echo $potrebitel;
echo "!";
echo "  След 3 секунди ще бъдете пренасочен/а!";


$HTTP_SESSION_VARS['potrebitel'] = $potrebitel;
echo $_SERVER['REQUEST_URI'];


echo $HTTP_SESSION_VARS['potrebitel'];
} else {
session_destroy();
echo "Вие нямате достъп до тази страница";
exit;
}

в примера даже с echo е показано че сесията бачка:) И така логина си ми работи,но идва момента в който трябва да ограничавам потребителите ,които са логнати да могат да влизат , които не не :П ето го и сктипта :

<?
session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
echo $potrebitel;
if ($potrebitel == ""){
echo "Трябва да се логнете!";
exit;
}
?>

обаче не иска ,даже и да съм се логнал ми казва съобщението ,което е при нелогнатите: "Трябва да се логнете"
Плс хелп какво да правя ?
 

Admin

Registered
Така трябва да е:

<?
session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
echo $potrebitel;
if (isset($HTTP_SESSION_VARS['potrebitel']))
{
echo "Трябва да се логнете!";
exit;
}
?>

Не да проверява дали $potrebitel e "нищо", а дали
има стартирана сесия .
 

morkov4o

Registered
да но така пуска всеки независимо дали е логнат или не :(

какво да правя :(
 

Admin

Registered
Пробвай така и ако не стане дай целия скрипт да видя какво си омазал.
admin каза:
Така трябва да е:

<?
session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
echo $potrebitel;
if (!isset($HTTP_SESSION_VARS['potrebitel']))
{
echo "Трябва да се логнете!";
exit;
}
?>

Не да проверява дали $potrebitel e "нищо", а дали
има стартирана сесия .
 

morkov4o

Registered
това е файла който искам да защитя:
<?
session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
echo $potrebitel;
if (isset($HTTP_SESSION_VARS['potrebitel']))
{
echo "Трябва да се логнете!";
exit;
}
?>


това е логин.пхп :
<?php
session_start();
?>
<head><meta http-equiv="refresh" content="3;URL=http://web-student.com" />
<link rel="stylesheet" href="font.css" type="text/css"><title>Login</title></head>
<?
//Скрипта получава данните от формуляра
$potrebitel= $HTTP_POST_VARS['potrebitel'];
$pas= $HTTP_POST_VARS['pas'];
//Тук се проверява дали сте написали правилното име и парола
$user="";
$password="";
$database="webstud_phpb1";

mysql_connect("localhost", "$user","$password");
@mysql_select_db($database) or die( "Unable to select database");

$query="SELECT * from phpbb_users
where username like '$potrebitel' and user_password like md5('$pas') ";
$result=mysql_query($query);
mysql_close();
if (mysql_num_rows($result) >0&&mysql_num_rows($result) <2 ){

echo "Здравейте  ";
echo $potrebitel;
echo "!";
echo "  След 3 секунди ще бъдете пренасочен/а!";


$HTTP_SESSION_VARS['potrebitel'] = $potrebitel;
echo $_SERVER['REQUEST_URI'];


echo $HTTP_SESSION_VARS['potrebitel'];
} else {
session_destroy();
echo "Вие нямате достъп до тази страница";
exit;
}

това е формата за логване:
<head><link rel="stylesheet" href="font.css" type="text/css"><title>Login</title><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

</head><?
if (isset($HTTP_SESSION_VARS['potrebitel']))
{
$potrebitel=$HTTP_SESSION_VARS['potrebitel'];

}
else
{

echo "<FORM ACTION='login.php' METHOD=POST>
Потребител:

<INPUT TYPE='text' NAME='potrebitel' value=''><br>


Парола:

<INPUT TYPE='password' NAME='pas'><br>




<INPUT TYPE=submit VALUE='ВХОД'>
</FORM>";
echo"<a href='http://web-student.com/phpbb2/profile.php?mode=register'>Регистрация</a><br>";
echo"<a href='http://web-student.com/phpbb2/profile.php?mode=sendpassword'>Забравена парола</а>";
exit;
}
echo "Здравейте  ";
echo $potrebitel;
echo "<br /><a href='logout.php'>Излез</>";
echo "<br /><a href='http://web-student.com/mycms/admin/modifynews.php?id=132&action=add&select=&name='>Напиши Новина</а>";
?>
 

Admin

Registered
<?
session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
echo $potrebitel;
if (!isset($HTTP_SESSION_VARS['potrebitel']))
{
echo "Трябва да се логнете!";
exit;
}
?>


сложи една удивителна пред isset
 

morkov4o

Registered
Да но така винаги пише че трябва да се логна :( според мен не мойе да предаде сесията ...
 

Admin

Registered
morkov4o каза:
Да но така винаги пише че трябва да се логна :( според мен не мойе да предаде сесията ...
А иначе кога пишеше, че тряба да си логнат.
Как така не може да предаде сесията.
:) дай демо.


Ти на своя комп ли пробваш?
Няма да стане там.
 

morkov4o

Registered
значи логваш се с FixTheProblem pass 12345 на url- web-student.com/login и после от хоризонталното меню дай на Изпрати урок и не иска :(
 

bafitu

Registered
е така нестава ли ?
Код:
<?
session_start();
$potrebitel = $_SESSION['potrebitel'];

if (isset($potrebitel))
{
echo $potrebitel;
echo "text text";
}
else {

echo "Трябва да се логнете!"; }
?>
ЕДИТ:
сега видях , че ти .. никъде не си задал сесия....
във .. скрипта login.php
след проверките там..
сложи това:
session_register("potrebitel");
 

Admin

Registered
Добре де...
Това ме пренасочва към index.php ....
В index.php има ли session_start(); в началото на кода.

Във всички файлове през които ме разхождаш трябва да имат
най-отгоре session_start(); иначе сесияте се унищожава.
 

morkov4o

Registered
ей сега даже направих един тест на сървара дали предава сесии направих един файл script1.php
<?php
session_start();
$_SESSION['color']="blue";
?>
<a href="script2.php">Go to Script2.php</a>

i script2.php

<?php
session_start();
if(isset($_SESSION['color']))
echo "Value of color is: ".$_SESSION['color'];
else echo "Color is NOT set";
?>

и бачка предава blue ... но си нямам и идея защо се получава така в моя случай ... до ся си мислех че е от сесиите, но не е ... ;(
 

morkov4o

Registered
ооо няма ... :( ей сега ще сложа!
 

morkov4o

Registered
добавих най-отгоре на index.php :
<?
session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
?>
това но ... пак неще ... :(
 

Admin

Registered
morkov4o каза:
добавих най-отгоре на index.php :
<?
session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
?>
това но ... пак неще ... :(

По добре сложи:

session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
echo $potrebitel."<br/>";

За да видя, че със сесията в index.php всичко е наред.
 

morkov4o

Registered
сложих в индекса <?
session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
echo $potrebitel."<br/>";
?>
ама като се логна горе не ми изписва усернамето :(
 

morkov4o

Registered
ей ся сложих в индекса :
<?
session_start();
$potrebitel = $HTTP_SESSION_VARS['potrebitel'];
if($potrebitel)
{ echo $potebitel; }
else { echo "Не сте регистрирани!"; }
?>
и даже и да се логна ми дава не сте се регистрирали демек проблема е в логин.пхп и в предаването на сесията ;)
 

Admin

Registered
Я смени проверяващия скрипт с този:


<?php
session_start();

//Скрипта получава данните от формуляра
$potrebitel= $HTTP_POST_VARS['potrebitel'];
$pas= $HTTP_POST_VARS['pas'];
//Тук се проверява дали сте написали правилното име и парола
$user="";
$password="";
$database="webstud_phpb1";

mysql_connect("localhost", "$user","$password");
@mysql_select_db($database) or die( "Unable to select database");

$query="SELECT * from phpbb_users
where username like '$potrebitel' and user_password like md5('$pas') ";
$result=mysql_query($query);
mysql_close();
if (mysql_num_rows($result) >0&&mysql_num_rows($result) <2 ){




$HTTP_SESSION_VARS['potrebitel'] = $potrebitel;
header("Location: http://www.web-student.com/index.php");


echo $HTTP_SESSION_VARS['potrebitel'];
} else {
session_destroy();
echo "Вие нямате достъп до тази страница";
exit;
}
?>
 

Горе