проблем с логин форма

NoName

Registered
значи използвах формата от тази тема http://web-tourist.net/forum/viewtopic.php?t=1154
така потребителите от форума се логват с акаунтети им от там в сайта
проблема ми е сащия
примерно искам да се логна от страницата НОВИНИ и когато натисна логин ме препраща към логин.пхп ( която е същата като индекс.пхп )
въпроса ми е когато попълня формуляра в НОВИНИ.пхп и се логна да е ме препраща към ЛОГИН.пхп а да ме праща в НОВИНИ.пхп

ето как съм го направил
http://212.56.3.67/mycms/index.php

мислех да пробвам да взема страницата от която е дошъл потребителя и след това да го препращам пак към нея ама незнам дали ще стане и дали е правилно затова реших да питам

ето това съм го сложил в Индекс.пхп
Код:
<?
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://212.56.3.67/phpBB2/profile.php?mode=register'>Регистрация</a><br>";
echo"<a href='http://212.56.3.67/phpBB2/profile.php?mode=sendpassword'>Забравена парола</а>";
exit;
}
echo "Здравейте  ";
echo $potrebitel;
echo "<br /><a href='logout.php'>Излез</>";
echo "<br /><a href='http://212.56.3.67/mycms/admin/modifynews.php?id=132&action=add&select=&name='>Напиши Новина</а>";
?>


това във логин.пхп
Код:
  <?
//Скрипта получава данните от формуляра
$potrebitel= $HTTP_POST_VARS['potrebitel'];
$pas= $HTTP_POST_VARS['pas'];
//Тук се проверява дали сте написали правилното име и парола
$user="root";
$password="";
$database="phpbb";

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 )
   {
//Ако сме написали коректно "парола" и "потребител"
//създава се сесиина променлива с името bobi.
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;
echo "Здравейте  ";
echo $potrebitel;
echo "<br><a href='logout.php'>Излез</>";
}
else
{
{echo "Вие нямате достъп до тази страница";
exit;}



//Ако сме написали коректно "парола" и "потребител"
//създава се сесиина променлива с името bobi.
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;
echo $_SERVER['REQUEST_URI'];

}

?>
[/code]
 

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

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 )
{
//Ако сме написали коректно "парола" и "потребител"
//създава се сесиина променлива с името bobi.
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;
$refe=getenv("HTTP_REFERER");
header("Location: $refe");

exit;
}
else

{echo "Вие нямате достъп до тази страница";
exit;}



?>
 
Може и така.
В този случай винаги те връща в същата страница но единият път е със
създадена сесия а в другия без.

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

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 )
{
//Ако сме написали коректно "парола" и "потребител"
//създава се сесиина променлива с името bobi.
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;
$refe=getenv("HTTP_REFERER");
header("Location: $refe");

exit;
}
else
{
$refe=getenv("HTTP_REFERER");
header("Location: $refe");

exit;

}

?>
[/quote]
 
пак мерси :)
използвах същия принцип и за logout-a
Сега искам да направя някои страници да се виждат само от определени потребители т.е. определена ГРУПА от форума
значи трябва да има страница която е за НЕлогнати потребители, страница за логнати потребители и страница за потребители от групата в форума ВИП примерно
 
Мога да ти дам много начини но ето ти най лесния.
Каква ще е разликата между потребителите и ВИП потребителите.
Може да направиш едно поле в таблицата с име ВИП .
Примерно
user pass vip
bobi 3344 1
toti 2233 0
lolo 3344 0


Тези с 1 са ВИП останалите не са.

Скрипта проверява дали вполето ВИП има 0 и ако има пуска сесиина промелива
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;

Ако има 1 пуска две сесиини променливи.
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;
$HTTP_SESSION_VARS['vip']= $potrebitel;


Следващия скрипт проверява дали има сесия vip и дава права за ВИП.
В този пример за ВИП потребителя има две сесии.
Така той хем има права на потребител хем и нещо повече.
Може да пуснеш 5 различни променливи за различни видове потребители.
 
Аз искам да направя така че от форума се създава "потребитесла група" да речем с името ВИП ( по този начин админа ще може винаги да добавя още потребители в гръпата )
и тези ВИП потребители да имат различни права в сайта
ето докаде стигнах
първо трябва да направя една заявка в която да взема от таблицата phpbb_users да взема ID на поттребителя

после трябва да направя така че да проверя в таблицата phpbb_user_group
това ID да е равно на USER_ID и дали срещу него отговаря дадения номер на групата примерно от полето GROUP_ID

сега ще се пробвам сам да го направя поне заявките после ще питам пак
 
мисля че това трябва да са заявките обаче нататък ако може да помогнеш

$usergroup='5'
#номера на потребителската група

$qr2="SELECT id from phpbb_users where username like '$potrebitel' ";
$userid=mysql_query($qr2);
#заявка за ИД на потребителя

qr3="SELECT * from phpbb_user_group where user_id like '$userid' and group_id like '$usergroup' "
$proverka=mysql_query($qr3);
#проверка дали потребителя има правя в дадената група
 
Дай да обединиме всичко в една заявка. :)
Нали ползваме релационна база данни ?
Та ako ID то на групата е 5 трябва да стане така:




mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * from phpbb_user_group,phpbb_users WHERE phpbb_user_group.user_id=phpbb_users.user_id and phpbb_user_group.group_id='5' and phpbb_users.username='$potrebitel' ";
$result=mysql_query($query);
mysql_close();
if (mysql_num_rows($result) > 0)
{
echo "ТИ си вип потребител";
}



Тествал съм го.

Ако ще имаш повече от една група във форума и ще искаш
динамичен контрол над данните ще трябва да пиша нова по дълга заявка.

Искам да кажа, че ако искаш с една заявка да виждаш всеки усер
от КОИ групи е (защото един усер може да е от много групи във форума)
ще стане малко по сложно но не и невъзможно.
 
Едитнах си кода .
Сега вече трябва директно да проработи при теб.
 
Гледай сега нещо по сложно:





mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT phpbb_groups.group_name from phpbb_groups,phpbb_user_group,phpbb_users WHERE phpbb_user_group.user_id=phpbb_users.user_id and phpbb_user_group.group_id=phpbb_groups.group_id and phpbb_users.username='$potrebitel'";
$result=mysql_query($query);
mysql_close();
$num=mysql_num_rows($result);
$i=0;
while ($i<$num)
{
$grupa=mysql_result($result,$i,"phpbb_groups.group_name");
$HTTP_SESSION_VARS['$grupa']= $potrebitel;
echo $grupa."<br/>";
$i++;
}




Този скрипт проверява user-a в колко групи участва и как са имената на
тези групи.
След това регистрира сесиини променливи със име= на името на групата
и стойност $potrebitel .

Ако вземеме на пример моя user (админ) той в момента е в три групи
в този форум (създадени за проба).
Admin
v
WT

скрипта ще разбере, че съм член на тези групи и ще направи следното:
$HTTP_SESSION_VARS['Admin']= $potrebitel;
$HTTP_SESSION_VARS['v']= $potrebitel;
$HTTP_SESSION_VARS['WT']= $potrebitel;

това както е видно става с цикъл.

С две думи ако някой потребител е член на 20 групи скрипта ще ги открие
и ще му регистрира 20 сесиини променливи. :)

Това ти го давам за пример като сложна заявка но имай на ум,
че е написано за 5 мин.
Сам прецени дали е сложно. :)

Пробвай скрипта.
Той ще проработи при теб.
Ето ти демо:
http://admin.web-tourist.net/new/grup.php (това е за $potrebitel='admin';)

Показва в коя група участвам и регистрира сесии за всяка една от тях.
 
немога да създам цялата конструкция на логин.пхп

къде бъркам

<?

$potrebitel= $HTTP_POST_VARS['potrebitel'];
$pas= $HTTP_POST_VARS['pas'];

$user="root";
$password="";
$database="phpbb";

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);


$query2="SELECT * from phpbb_user_group,phpbb_users WHERE phpbb_user_group.user_id=phpbb_users.user_id and phpbb_user_group.group_id='5' and phpbb_users.username='$potrebitel' ";
$result2=mysql_query($query2);

mysql_close();
if (mysql_num_rows($result) >0&&mysql_num_rows($result) <2 )
{
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
}

else
if (mysql_num_rows($result2) > 0)
{
$HTTP_SESSION_VARS['vip']= $potrebitel;
header("Location: $refe");
exit;
}

else
{
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
exit;

}

?>
 
има два else едно след друго.
Не може да съществува такова нещо.
Трябва да е така:


<?

$potrebitel= $HTTP_POST_VARS['potrebitel'];
$pas= $HTTP_POST_VARS['pas'];

$user="root";
$password="";
$database="phpbb";

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);


$query2="SELECT * from phpbb_user_group,phpbb_users WHERE phpbb_user_group.user_id=phpbb_users.user_id and phpbb_user_group.group_id='5' and phpbb_users.username='$potrebitel' ";
$result2=mysql_query($query2);

mysql_close();
if (mysql_num_rows($result) >0&&mysql_num_rows($result) <2 )
{
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;
$refe=getenv("HTTP_REFERER");

if (mysql_num_rows($result2) > 0)
{
$HTTP_SESSION_VARS['vip']= $potrebitel;
header("Location: $refe");
exit;
}

header("Location: $refe");
exit;
}
else
{
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
exit;

}

?>

Проверката

if (mysql_num_rows($result2) > 0)
{
$HTTP_SESSION_VARS['vip']= $potrebitel;
header("Location: $refe");
exit;
}

се прави само ако потребителя си е написал правилно user и pass.
Няма как да е VIP ако не е потребител.
Става следното:
Проверява първо дали е потребител и ако е проверява дали не е и VIP. :wink:

Ако не е потребител не проверява дали е ВИП а направо изпълнва else.
 
аз мисля че се оправих
ето пробваи
http://212.56.3.67/mycms/index.php

user : no pass: 123456 този потребител не е в групата
когато се логна с потребител NO неми дава да пиша новини

а когато се логна с потребител TEST ми се появява бутон за новините
user : test pass: test

аз го направих така
if (mysql_num_rows($result) >0&&mysql_num_rows($result) <2 )
{
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
}

if (mysql_num_rows($result2) > 0)
{
$HTTP_SESSION_VARS['vip']= $potrebitel;
header("Location: $refe");
exit;
}

else
{
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
exit;

}
незнам дали е правилно
 
какви защити мога да сложа на системата за логване такаче да не бъде хакната
 
admin каза:
Гледай сега нещо по сложно:





mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT phpbb_groups.group_name from phpbb_groups,phpbb_user_group,phpbb_users WHERE phpbb_user_group.user_id=phpbb_users.user_id and phpbb_user_group.group_id=phpbb_groups.group_id and phpbb_users.username='$potrebitel'";
$result=mysql_query($query);
mysql_close();
$num=mysql_num_rows($result);
$i=0;
while ($i<$num)
{
$grupa=mysql_result($result,$i,"phpbb_groups.group_name");
$HTTP_SESSION_VARS['$grupa']= $potrebitel;
echo $grupa."<br/>";
$i++;
}




Този скрипт проверява user-a в колко групи участва и как са имената на
тези групи.
След това регистрира сесиини променливи със име= на името на групата
и стойност $potrebitel .

Ако вземеме на пример моя user (админ) той в момента е в три групи
в този форум (създадени за проба).
Admin
v
WT

скрипта ще разбере, че съм член на тези групи и ще направи следното:
$HTTP_SESSION_VARS['Admin']= $potrebitel;
$HTTP_SESSION_VARS['v']= $potrebitel;
$HTTP_SESSION_VARS['WT']= $potrebitel;

това както е видно става с цикъл.

С две думи ако някой потребител е член на 20 групи скрипта ще ги открие
и ще му регистрира 20 сесиини променливи. :)

Това ти го давам за пример като сложна заявка но имай на ум,
че е написано за 5 мин.
Сам прецени дали е сложно. :)

Пробвай скрипта.
Той ще проработи при теб.
Ето ти демо:
http://admin.web-tourist.net/new/grup.php (това е за $potrebitel='admin';)

Показва в коя група участвам и регистрира сесии за всяка една от тях.

сега ми потрябва това мисля че неми създава сесиите

етого целия код които ползвам

include("conn.php");

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;

$query2="SELECT phpbb_groups.group_name from phpbb_groups,phpbb_user_group,phpbb_users WHERE phpbb_user_group.user_id=phpbb_users.user_id and phpbb_user_group.group_id=phpbb_groups.group_id and phpbb_users.username='$potrebitel'";
$result2=mysql_query($query2);
mysql_close();

$num=mysql_num_rows($result2);
$i=0;
while ($i<$num)
{
$grupa=mysql_result($result2,$i,"phpbb_groups.group_name");
$HTTP_SESSION_VARS['$grupa']=$potrebitel;

$i++;
}

$refe=getenv("HTTP_REFERER");
header("Location: $refe");
}

else
{
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
exit;

}

-----------------
и фаила които проверява
<?
if (isset($HTTP_SESSION_VARS['potrebitel']))
{
$potrebitel=$HTTP_SESSION_VARS['potrebitel'];

if (isset($HTTP_SESSION_VARS['Tehn']))
{
$potrebitel=$HTTP_SESSION_VARS['Tehn'];

echo "<a href='techform.php'>Технически анализ</a><br/>"; }

else { echo ""; }

if (isset($HTTP_SESSION_VARS['Fund']))
{
$potrebitel=$HTTP_SESSION_VARS['Fund'];

echo "<br><a href='fundform.php'>Фундаментален анализ</a>"; }

else { echo ""; }

if (isset($HTTP_SESSION_VARS['novini']))
{
$potrebitel=$HTTP_SESSION_VARS['novini'];

echo ""; }

else { echo ""; }

if (isset($HTTP_SESSION_VARS['reporteri']))
{
$potrebitel=$HTTP_SESSION_VARS['reporteri'];

echo "<a href='intervform.php'>Интервю</a><br/>"; }

else { echo ""; }


echo "<br><br><a href='logout.php'>Изход [ $potrebitel ]</a><br/><br/>";
}
else ...
незнам каде е грешката
 
И в двата файла трябва да стартираш сесията в началото.
Не се вижда от кода нно може и да си го направил.

След това:
Дай едно ехо за да видиш какво става в първия скрипт:


include("conn.php");

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;
echo $potrebitel;
$query2="SELECT phpbb_groups.group_name from phpbb_groups,phpbb_user_group,phpbb_users WHERE phpbb_user_group.user_id=phpbb_users.user_id and phpbb_user_group.group_id=phpbb_groups.group_id and phpbb_users.username='$potrebitel'";
$result2=mysql_query($query2);
mysql_close();

$num=mysql_num_rows($result2);
$i=0;
while ($i<$num)
{
$grupa=mysql_result($result2,$i,"phpbb_groups.group_name");
$HTTP_SESSION_VARS['$grupa']=$potrebitel;

$i++;
}

$refe=getenv("HTTP_REFERER");
header("Location: $refe");
}

else
{
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
exit;

}
 
ето
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/forex-freezone.com/www/root/login.php on line 39

в примера които бепе дал ставаша показваше вички имена на групите
$grupa=mysql_result($result,$i,"phpbb_groups.group_name");
$HTTP_SESSION_VARS['$grupa']= $potrebitel;
echo $grupa."<br/>";
обаче несаздаваше сесиите
 

Back
Горе