Логин... Проблем със регистрирането на сесии!

luudman

Registered
Ето кода:
Код:
<?php
session_start();
include ( "config.php" );
include ( "functions.php" );
include ( "impresii.php" );
if($_POST['login']){
	$username = $_POST[username];
	$password = $_POST[password];
	$check_act_ban = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
	$row_act_ban = mysql_fetch_array($check_act_ban);
	$num_act_ban = mysql_num_rows($check_act_ban);
	if($num_act_ban=='0'){
		unset($username);
		unset($password);
	}else{
		if($row_act_ban[ban] !='0' AND $row_act_ban[act] !='1' ){
			unset($username);
			unset($password);
		}else{
			$check = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password' AND act='1' AND ban='0'");
			$row = mysql_fetch_array($check);
			$_SESSION['username'] = $row['username'];
			$_SESSION['password'] = $row['password'];
			$_SESSION['rank'] = $row['rank'];
			header ("Location: $_SERVER[HTTP_REFERER]");
		}
	}
}
?>
Когато регистрирам сесията за Ранковете:
$_SESSION['rank'] = $row['rank'];
И после се опитам да извадя ранка, Не става!???
Защо не става? мисля, че всичко е Тип топ!
Да уточня! Това ми е header-а на сайта и го инклудвам на всякъде! Също така преобразувам ранка със функция и става изкарването така:
Код:
rank($_SESSION['rank']);
като функцията е тази:
Код:
function rank($num_rank){
	if($num_rank=='1'){
		echo 'Потребител';
	}elseif($num_rank=='2'){
		echo 'Супер Потребител';
	}elseif($num_rank=='3'){
		echo 'Администратор';
	}else{
		echo 'Некъв си там';
	}
}
Също така ми излиза винаги "Некъв си там" защото дори няма сесия! Защо не се регистрира Сесията??
 
А после как ще го изкарвам?
session_register($username); ????
също така трябва да ти е включена global оптиона на сървъра!
 
Aми ше си го искарваш както обикновенно $_SESSION['username'] :wink:
правиш session_register('username', $username); и готоо
 
Не е добре да се включва мода register_globals! Също така е по-лесно със $_SESSION и не се изкарва така както ти каза! Изкарва се например:
session_register('row[rank]');
echo row[rank];
Но искам да знам защо не ми регистрира row['rank']??? а не как да го регистрирам!
 
1. Провери дали register_globals() ти е включен...
2. Пробвай с този код...
Код:
<?
session_start();
?>
<?php
include ( "config.php" );
include ( "functions.php" );
include ( "impresii.php" );
if($_POST['login']){
   $username = $_POST[username];
   $password = $_POST[password];
   $check_act_ban = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
   $row_act_ban = mysql_fetch_array($check_act_ban);
   $num_act_ban = mysql_num_rows($check_act_ban);
   if($num_act_ban=='0'){
      unset($username);
      unset($password);
   }else{
      if($row_act_ban[ban] !='0' AND $row_act_ban[act] !='1' ){
         unset($username);
         unset($password);
      }else{
         $check = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password' AND act='1' AND ban='0'");
         $row = mysql_fetch_array($check);
         $_SESSION['username'] = $row['username'];
         $_SESSION['password'] = $row['password'];
         $_SESSION['rank'] = $row['rank'];
         header ("Location: $_SERVER[HTTP_REFERER]");
      }
   }
}
?>
3. Колкото до този код:
Код:
function rank($num_rank){
   if($num_rank=='1'){
      echo 'Потребител';
   }elseif($num_rank=='2'){
      echo 'Супер Потребител';
   }elseif($num_rank=='3'){
      echo 'Администратор';
   }else{
      echo 'Некъв си там';
   }
}
Променливата $num_rang представлява числото, запазено через сесия... и понеже няма такова число изкарва Некъв си.
 
Като гледам нищо не си променил! Второ регистрира ми username и password ! Пробвах да изкарам дори и $_SESSION['rank']:
echo $_SESSION['rank'];
Не стана! Защо само $_SESSION['rank'] не регистрира а username и password Регистрира??? :!:
 
luudman каза:
Като гледам нищо не си променил! Второ регистрира ми username и password ! Пробвах да изкарам дори и $_SESSION['rank']:
echo $_SESSION['rank'];
Не стана! Защо само $_SESSION['rank'] не регистрира а username и password Регистрира??? :!:
Ами има 2 възможности... или да няма колона rank... или ти да бъркаш някъде във тази функция function rank($num_rank){ откъде го взе това $num_rank ако е $_SESSION['rank'] по-добре го направи така:
Код:
$num_rank = $_SESSION['rank'];
if($num_rank=='1'){
      echo 'Потребител';
   }elseif($num_rank=='2'){
      echo 'Супер Потребител';
   }elseif($num_rank=='3'){
      echo 'Администратор';
   }else{
      echo 'Некъв си там';
   }
Не съм сигурен но мисля че така ще работи

ПП: Ако не стане с == пробвай само =[/code]
 
Пич малко не разбираш тия неща! :D Не е така! Аз дори и да изкарам сесията нищо не става! Без функции без нищо! Също така тази функция:
function rank($num_rank){
if($num_rank=='1'){
echo 'Потребител';
}elseif($num_rank=='2'){
echo 'Супер Потребител';
}elseif($num_rank=='3'){
echo 'Администратор';
}else{
echo 'Некъв си там';
}
}
$num_rank е просто променлива която ще ти трябва за функцията! Мога да слова и още! Тогава трябва да допълваме изкарването на функцията! Ако например направим така:
function table($border, $height){
echo '<table border=" '.$border.' "><tr><td height=" '.$height.' ">Blaaa</td></tr></table>'
}
и ще трябва да я извикаме така:

table('3', '100%')
И така 3 представлява $border, а 100% $height това са просто променливи за функцията! Няма значения! А и аз казах, че само
echo $_SESSION[rank]; също не ми изкарва нищо, а би трябвало число! А то значи не регистрира сесията! Има такова поле казва се rank, имам записи , записал съм си на моя потребител тестовия Ранк2 и нищо.......
 
Е ти хубаво записваш функцията ама защо сравняваш променливата на функцията с ранка..... после как викаш function rank(1/2/3); ..... би трябвало да сравняваш с $row['rank'] и да запишеш функцията без променлива....
 
Ето ти примера със функцията(говориш и не разбираш!!!):
function rank($num_rank){
if($num_rank=='1'){
echo 'Потребител';
}elseif($num_rank=='2'){
echo 'Супер Потребител';
}elseif($num_rank=='3'){
echo 'Администратор';
}else{
echo 'Некъв си там';
}
}
Това е функцията от тук ако $num_rank = '1' ще изкара Потребител вместо да пиша така:
if ($row[rank] =='1'){
.......... Аз го правя на функция за да го ползвам БЕЗБРОЙ пъти! Ето например ако ранка е 1:
function rank(1){ // тук ще стане 1!!!
if(1=='1'){
echo 'Потребител';
}elseif(1=='2'){
echo 'Супер Потребител';
}elseif(1=='3'){
echo 'Администратор';
}else{
echo 'Некъв си там';
}
}
Тоест се изпълнява само Първото! Така ли не разбра! Тия функции са най-лесни! Затова има много функции във един добър сайт! Щото ти ще пишеш не знам колко пъти:
if($num_rank=='1'){
echo 'Потребител';
}elseif($num_rank=='2'){
echo 'Супер Потребител';
}elseif($num_rank=='3'){
echo 'Администратор';
}else{
echo 'Некъв си там';
}
.......
А аз само викам:
rank($admin_row[rank]);
и готово! не говори за Функцията не става дума за нея! Ти да махнеш функцията и да искаш да изкара само число, пак не става!
 
Добре де добре като толкова разбираш прави го ама аз ти казах карай ако мислиш че неразбирам функцийте си сгрешил ама карай както и да е, аз не виждам проблем щом не е от функцията...... Освен ако нямаш ред rank
 
А бе..................................... Махаме функцията:
<?php
session_start();
include ( "config.php" );
include ( "functions.php" );
include ( "impresii.php" );
if($_POST['login']){
$username = $_POST[username];
$password = $_POST[password];
$check_act_ban = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
$row_act_ban = mysql_fetch_array($check_act_ban);
$num_act_ban = mysql_num_rows($check_act_ban);
if($num_act_ban=='0'){
unset($username);
unset($password);
}else{
if($row_act_ban[ban] !='0' AND $row_act_ban[act] !='1' ){
unset($username);
unset($password);
}else{
$check = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password' AND act='1' AND ban='0'");
$row = mysql_fetch_array($check);
$_SESSION['username'] = $row['username'];
$_SESSION['password'] = $row['password'];
$_SESSION['rank'] = $row['rank'];
header ("Location: $_SERVER[HTTP_REFERER]");
}
}
}
?>
После изкарвам:
echo $_SESSION['rank'];
И ПАК НЕ СТАВА! Това от функцията ли е сега бе? :evil: Аз ти викам сесията не регистрира ти ми викаш някаква си въшлива функция! Регистрирам но не се запазва функцията! Изкарва ми:
echo $_SESSION['username'];
Но не и echo $_SESSION['rank']; ! това питам! Сега разбра ли! И не спами!
 
luudman каза:
И не спами!
Хе кой го казва, не се коси толко ве баси просто изказвам мнение никаде по правилата не пише че е забранено.... Аре спирам изчерпах се, пак казвам да си провериш таблицата и сичко наново, за да си напълно сигурен. И не се коси толко.... :shock:
 
luudman каза:
После изкарвам:
echo $_SESSION['rank'];
И ПАК НЕ СТАВА! Това от функцията ли е сега бе? :evil: Аз ти викам сесията не регистрира ти ми викаш някаква си въшлива функция! Регистрирам но не се запазва функцията! Изкарва ми:
echo $_SESSION['username'];
Но не и echo $_SESSION['rank']; ! това питам! Сега разбра ли! И не спами!


1. провери в базата за този потребител, каква е стойността на полето "ранк"
2. провери така ли се казва колонката
3. ако предните стъпки не са ти помогнали дай echo $row['rank'];
 
Без никакви проблеми си изкара числото:
<?php
session_start();
include ( "config.php" );
include ( "config.php" );
if($_POST['login']){
$check = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
$row = mysql_fetch_array($check);
$_SESSION['username'] = $row['username'];
$_SESSION['password'] = $row['password'];
$_SESSION['rank'] = $row['rank'];
header ("Location: login.php");
}elseif($_SESSION['username']){

$check = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
$row = mysql_fetch_array($check);
echo $row[rank].' Ранк!';

}else{
echo '
<form method="post" action="">
<table>
<tr>
<td>Потребител:</td>
<td><input type="text" name="username" class="login"></td>
</tr>
<tr>
<td>Парола:</td>
<td><input type="password" name="password" class="login"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="login" value="Влез" class="log_but"></td>
</tr>
<tr>
<td colspan="2"><a href="index.php?act=reg" class="login">Не сте се Регистрирали?</a></td>
</tr>
</table>
</form>';
}

?>
Това е кода! Направих го и той тръгна! Полето е това! Самата сесия не ми регистрира(не знам защо!)! :oops:
 
А ти как разбираш, че не се е регистрирала? Може проблемът да е другаде.
Какво показва
echo $_SESSION['rank']; а не echo $row[rank].' Ранк!';
И го пренеси в друга страница примерно с линк да се влиза в нея и там
echo $_SESSION['rank'];
И пробвай с друго име не rank
 
Стана като махнах от head.php:
session_start();
include ( "config.php" );
include ( "functions.php" );
include ( "impresii.php" );
и го сложих във index.php! :) Мерси все пак, че отделихте време да погледнете! :P
 

Back
Горе